From Fedora Project Wiki
(Move to Fedora 22, see tracking bug for more details)
 
(29 intermediate revisions by 3 users not shown)
Line 23: Line 23:


== Summary ==
== Summary ==
SCL - Software Collections - are popular packaging format above rpm. Let's enable them for Fedora.  
SCL - Software Collections - are popular packaging format above rpm. Let's enable them for Fedora. More details on [https://www.softwarecollections.org/en/ upstream page]. Workstation Working Group prepared similar change to this one [https://fedoraproject.org/wiki/Changes/Workstation_Enable_Software_Collections Worsktation Enable Software Collections], it's merged now with SCL change on [https://fedorahosted.org/fesco/ticket/1297#comment:7 FESCo request].
 
== Owner ==
== Owner ==
<!--  
<!--  
Line 42: Line 43:


== Current status ==
== Current status ==
* Targeted release: [[F/21 | Fedora 21 ]]  
* Targeted release: [[F/22 | Fedora 22 ]]  
* Last updated: 26. 3. 2014
* Last updated: 26. 3. 2014
<!-- After the change proposal is accepted by FESCo, tracking bug is created in Bugzilla and linked to this page  
<!-- After the change proposal is accepted by FESCo, tracking bug is created in Bugzilla and linked to this page  
Line 52: Line 53:
CLOSED as NEXTRELEASE -> change is completed and verified and will be delivered in next release under development
CLOSED as NEXTRELEASE -> change is completed and verified and will be delivered in next release under development
-->
-->
* Tracker bug: <will be assigned by the Wrangler>
* Tracker bug: [https://bugzilla.redhat.com/show_bug.cgi?id=1091305 #1091305]


== Detailed Description ==
== Detailed Description ==
My first draft [https://fedoraproject.org/wiki/User:Mmaslano/SCLinFedora ] is obsoleted by current state of SCL, Copr... I would keep the SCL workflow simple as possible.
My first draft [https://fedoraproject.org/wiki/User:Mmaslano/SCLinFedora ] is obsoleted by current state of SCL, Copr... I would keep the SCL workflow simple as possible, which means add one SCL into repository. At start I'd like to add it into Playground repo. If everything goes well, I'd like to add it into main Fedora repository.


'''Playground repo'''
'''Playground repo'''
Line 72: Line 73:


3. Build SCL in koji or magically add SCL builds from Copr (depends on preference of releng)
3. Build SCL in koji or magically add SCL builds from Copr (depends on preference of releng)
SCL living on Copr can be good candidates for inclusion in Fedora. Maintainer of such SCL must be able create Change proposal for his collection. Review of packages in the collection should
depend on repository (Playground - almost no rules, Fedora - standard guidelines).


== Benefit to Fedora ==
== Benefit to Fedora ==
Line 77: Line 81:


New versions of software can be also packaged as collection and tested it before inclusion into main Fedora repository in case the new version would seem to be to disruptive for rest of the system.
New versions of software can be also packaged as collection and tested it before inclusion into main Fedora repository in case the new version would seem to be to disruptive for rest of the system.
The Fedora Cloud Working Group would like to see this; it represents one of that product's key external needs. (See the [https://fedoraproject.org/wiki/Cloud_Changelist#External_Need:_Software_Collections_for_Cloud_Users Cloud Changelist].)


== Scope ==
== Scope ==
* Proposal owners:
<!-- What work do the feature owners have to accomplish to complete the feature in time for release?  Is it a large change affecting many parts of the distribution or is it a very isolated change? What are those changes?-->
0. Approve SCL [https://fedorahosted.org/fpc/ticket/339 guidelines by FPC]
0. Approve SCL [https://fedorahosted.org/fpc/ticket/339 guidelines by FPC]


1. Include at least one collection into Fedora Playground repository or into main Fedora repository (probably the one wanted by Cloud WG). It might be this one rebuild for Fedora http://copr.fedoraproject.org/coprs/rhscl/ruby193/. Updates of some gems or addition of other gems might be needed. Review by Cloud projects is needed.
1. Include one collection into Fedora Playground repository or into main Fedora repository (probably the one wanted by Cloud WG). It might be this one rebuild for Fedora http://copr.fedoraproject.org/coprs/rhscl/ruby193/. Updates of some gems or addition of other gems might be needed. Review by Cloud projects is needed.


* Proposal owners: Marcela, ...
* Other developers: If SCL is in Fedora, maybe some other project can use it for their work.
<!-- What work do the feature owners have to accomplish to complete the feature in time for release?  Is it a large change affecting many parts of the distribution or is it a very isolated change? What are those changes?-->
 
* Other developers: N/A (not a System Wide Change) <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
<!-- What work do other developers have to accomplish to complete the feature in time for release?  Is it a large change affecting many parts of the distribution or is it a very isolated change? What are those changes?-->
<!-- What work do other developers have to accomplish to complete the feature in time for release?  Is it a large change affecting many parts of the distribution or is it a very isolated change? What are those changes?-->


Line 96: Line 101:


== Upgrade/compatibility impact ==
== Upgrade/compatibility impact ==
<!-- What happens to systems that have had a previous versions of Fedora installed and are updated to the version containing this change? Will anything require manual configuration or data migration? Will any existing functionality be no longer supported? -->
SCL will be safely installed outside of the main system. No conflicts, no updates.


<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
== How To Test ==
N/A (not a System Wide Change)
For users:


== How To Test ==
0. Install SCL
<!-- This does not need to be a full-fledged document. Describe the dimensions of tests that this change implementation is expected to pass when it is done.  If it needs to be tested with different hardware or software configurations, indicate them.  The more specific you can be, the better the community testing can be.  
 
1. Run your favourite application on the collection
 
eg. scl enable ruby193 'foreman'


Remember that you are writing this how to for interested testers to use to check out your change implementation - documenting what you do for testing is OK, but it's much better to document what *I* can do to test your change.
For developers:


A good "how to test" should answer these four questions:
0. Install SCL


0. What special hardware / data / etc. is needed (if any)?
1. Create your own application for older version of language (change shebang in your script to /opt/fedora/language/...)
1. How do I prepare my system to test this change? What packages
need to be installed, config files edited, etc.?
2. What specific actions do I perform to check that the change is
working like it's supposed to?
3. What are the expected results of those actions?
-->


<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
2. run your application eg. scl enable ruby193 'yourapp'
N/A (not a System Wide Change)


== User Experience ==
== User Experience ==
<!-- If this change proposal is noticeable by its target audience, how will their experiences change as a result?  Describe what they will see or notice. -->
Two major use-cases:
<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
* developers will develop their apps - they will need to change shebang of application for example from /usr/bin/perl to something like /opt/fedora/perl516/usr/bin/perl
N/A (not a System Wide Change)
* users of apps, which already depend on SCL, can happily use their app, which is finally working


== Dependencies ==
== Dependencies ==
<!-- What other packages (RPMs) depend on this package?  Are there changes outside the developers' control on which completion of this change depends?  In other words, completion of another change owned by someone else and might cause you to not be able to finish on time or that you would need to coordinate?  Other upstream projects like the kernel (if this is not a kernel change)? -->
* create one SCL
 
* co-operate with relengs
<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
** branches in dist-git
N/A (not a System Wide Change)
** modify buildroot
* [https://fedorahosted.org/fpc/ticket/339 FPC ticket]


== Contingency Plan ==
== Contingency Plan ==
<!-- If you cannot complete your feature by the final development freeze, what is the backup plan?  This might be as simple as "Revert the shipped configuration".  Or it might not (e.g. rebuilding a number of dependent packages).  If you feature is not completed in time we want to assure others that other parts of Fedora will not be in jeopardy.  -->
* Contingency mechanism: If something went bad, we could still use Copr repository for providing SCL.  
* Contingency mechanism: (What to do?  Who will do it?) N/A (not a System Wide Change)  <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
* Contingency deadline: Beta Freeze
<!-- When is the last time the contingency mechanism can be put in place?  This will typically be the beta freeze. -->
* Blocks release? No.
* Contingency deadline: N/A (not a System Wide Change)  <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
* Blocks product? Yes, it might block Cloud WG if they depend on SCL for their installation.
<!-- Does finishing this feature block the release, or can we ship with the feature in incomplete state? -->
* Blocks release? N/A (not a System Wide Change), Yes/No <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
* Blocks product? product <-- Applicable for Changes that blocks specific product release/Fedora.next -->


== Documentation ==
== Documentation ==
<!-- Is there upstream documentation on this change, or notes you have written yourself?  Link to that material here so other interested developers can get involved. -->
There will be a process documentation in form of wiki pages. [http://docs.fedoraproject.org/en-US/Fedora_Contributor_Documentation/1/html/Software_Collections_Guide/index.html User documentation] already exists.
 
<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
N/A (not a System Wide Change)


== Release Notes ==
== Release Notes ==
Line 159: Line 155:


<!-- Select proper category, default is Self Contained Change -->
<!-- Select proper category, default is Self Contained Change -->
[[Category:SelfContainedChange]]
[[Category:SystemWideChange]]
<!-- [[Category:SystemWideChange]] -->
<!-- [[Category:SystemWideChange]] -->

Latest revision as of 14:56, 7 October 2014


SCL

Summary

SCL - Software Collections - are popular packaging format above rpm. Let's enable them for Fedora. More details on upstream page. Workstation Working Group prepared similar change to this one Worsktation Enable Software Collections, it's merged now with SCL change on FESCo request.

Owner

Current status

Detailed Description

My first draft [1] is obsoleted by current state of SCL, Copr... I would keep the SCL workflow simple as possible, which means add one SCL into repository. At start I'd like to add it into Playground repo. If everything goes well, I'd like to add it into main Fedora repository.

Playground repo

1. Build SCL in Copr

2. Add SCL into Playground repo

Fedora main repo

0. Build SCL in Copr (or use existing SCL)

1. Do standard package review

2. Upload packages into git - specific branch based on Fedora version and name of collection. For stable repo we must be able to replicate builds from git repo, which Fedora own.

3. Build SCL in koji or magically add SCL builds from Copr (depends on preference of releng)

SCL living on Copr can be good candidates for inclusion in Fedora. Maintainer of such SCL must be able create Change proposal for his collection. Review of packages in the collection should depend on repository (Playground - almost no rules, Fedora - standard guidelines).

Benefit to Fedora

Cool programs depending on specific version of software can still run on Fedora. We see it often with Ruby (on Rails) projects like Puppet, Cloud projects (Katello, Foreman, OpenShift, OpenStack). All those cool apps can run on any Fedora, which will provide collection for them.

New versions of software can be also packaged as collection and tested it before inclusion into main Fedora repository in case the new version would seem to be to disruptive for rest of the system.

The Fedora Cloud Working Group would like to see this; it represents one of that product's key external needs. (See the Cloud Changelist.)

Scope

  • Proposal owners:

0. Approve SCL guidelines by FPC

1. Include one collection into Fedora Playground repository or into main Fedora repository (probably the one wanted by Cloud WG). It might be this one rebuild for Fedora http://copr.fedoraproject.org/coprs/rhscl/ruby193/. Updates of some gems or addition of other gems might be needed. Review by Cloud projects is needed.

  • Other developers: If SCL is in Fedora, maybe some other project can use it for their work.
  • Release engineering: Magically add SCLs builds into compose or set up koji for SCLs.

Upgrade/compatibility impact

SCL will be safely installed outside of the main system. No conflicts, no updates.

How To Test

For users:

0. Install SCL

1. Run your favourite application on the collection

eg. scl enable ruby193 'foreman'

For developers:

0. Install SCL

1. Create your own application for older version of language (change shebang in your script to /opt/fedora/language/...)

2. run your application eg. scl enable ruby193 'yourapp'

User Experience

Two major use-cases:

  • developers will develop their apps - they will need to change shebang of application for example from /usr/bin/perl to something like /opt/fedora/perl516/usr/bin/perl
  • users of apps, which already depend on SCL, can happily use their app, which is finally working

Dependencies

  • create one SCL
  • co-operate with relengs
    • branches in dist-git
    • modify buildroot
  • FPC ticket

Contingency Plan

  • Contingency mechanism: If something went bad, we could still use Copr repository for providing SCL.
  • Contingency deadline: Beta Freeze
  • Blocks release? No.
  • Blocks product? Yes, it might block Cloud WG if they depend on SCL for their installation.

Documentation

There will be a process documentation in form of wiki pages. User documentation already exists.

Release Notes