From Fedora Project Wiki
(→‎Scope: add "write guideline" to scope)
(→‎Release Notes: adjust release notes)
 
(15 intermediate revisions by 3 users not shown)
Line 11: Line 11:
== Owner ==
== Owner ==
<!--This should link to your home wiki page so we know who you are-->
<!--This should link to your home wiki page so we know who you are-->
* Name: [[User:salimma| Michel Alexandre Salim]]
* Name: [[User:salimma | Michel Alexandre Salim]]
* Email: [mailto:salimma.NOSPAM.AT.fedoraproject.org salimma AT fedoraproject.org]


<!-- Include you email address that you can be reached should people want to contact you about helping with your feature, status is requested, or technical issues need to be resolved-->
* Name: [[User:kushal | Kushal Das]]
* Email: salimma@fedoraproject.org
* Email: [mailto:kushal.NOSPAM.AT.fedoraproject.org kushal AT fedoraproject.org]


== Current status ==
== Current status ==
* Targeted release: [[Releases/18 | Fedora 18 ]]  
* Targeted release: [[Releases/18 | Fedora 18 ]]  
* Last updated: 2012-06-07
* Last updated: 2012-10-16
* Percentage of completion: 05%
* Percentage of completion: 100%


<!-- CHANGE THE "FedoraVersion" TEMPLATES ABOVE TO PLAIN NUMBERS WHEN YOU COMPLETE YOUR PAGE. -->
<!-- CHANGE THE "FedoraVersion" TEMPLATES ABOVE TO PLAIN NUMBERS WHEN YOU COMPLETE YOUR PAGE. -->
Line 26: Line 27:
Clojure projects are generally managed and built using a tool called [https://github.com/technomancy/leiningen Leiningen], which uses the same repository layout as Maven (and comes with a build target for converting Leiningen project descriptors to Maven POM files).
Clojure projects are generally managed and built using a tool called [https://github.com/technomancy/leiningen Leiningen], which uses the same repository layout as Maven (and comes with a build target for converting Leiningen project descriptors to Maven POM files).


We would first package Leiningen -- first ensuring its dependencies are packaged, and catch packaging errors in the Clojure package that is exposed by attempting to use it for building Leiningen. Next, we need to make sure that Leiningen is configured out-of-the-box so it can use the system Maven repository. Then it is a matter of packaging as many of the key Clojure libraries and frameworks as we can fit into the schedule, though [http://sqlkorma.com/ Korma] and [http://webnoir.org/ Noir] are key priorities.
For Fedora 18, our goal is to have a functioning Leiningen package that is functionally equivalent to the version downloadable from upstream, but packaged according to Fedora guidelines (in particular, depending on system libraries rather than bundling its own copies). This involves first ensuring its dependencies are packaged, and catch packaging errors in the Clojure package that is exposed by attempting to use it for building Leiningen.
 
Later, we would aim to make our Leinigen installation useful out-of-the-box for building RPM packages (similar to how JPackage provides mvn-rpmpackage), by making sure that Leiningen is configured out-of-the-box so it can use the system Maven repository. We expect to work on this concurrently with the work on packaging key Clojure libraries and frameworks, e.g. [http://sqlkorma.com/ Korma] and [http://webnoir.org/ Noir].


== Benefit to Fedora ==
== Benefit to Fedora ==
Line 36: Line 39:
== Scope ==
== Scope ==
<!-- What work do the 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 the 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?-->
* Fix Clojure packaging to comply with our [[Packaging:Java guidelines]
Changes are isolated and should not affect other parts of the distribution. Here is our current work plan:
 
* Fix Clojure packaging to comply with our [[Packaging:Java | guidelines]]
* Package Leiningen dependencies
* Package Leiningen dependencies
* Package Leiningen
* Package Leiningen
(Nice to have:)
* Ensure Leiningen is configured to use the system Maven repository
* Ensure Leiningen is configured to use the system Maven repository
* Ensure that the default Leiningen project templates refer to the packaged versions of Clojure libraries
* Ensure that the default Leiningen project templates refer to the packaged versions of Clojure libraries
Line 58: Line 65:
3. What are the expected results of those actions?
3. What are the expected results of those actions?
-->
-->
Install Leiningen using yum. Then use it to create a new project, adding dependencies that are already packaged in Fedora at the time, as well as other dependencies. Install the dependencies we already package using yum, and then run ``lein deps``, and check that Leiningen does not re-download the dependencies already installed using RPM.
Install Leiningen using yum. Then use it to create a new project, verifying that dependency resolution, compiling and testing work as expected.


== User Experience ==
== User Experience ==
Line 74: Line 81:
== Documentation ==
== Documentation ==
<!-- Is there upstream documentation on this feature, or notes you have written yourself?  Link to that material here so other interested developers can get involved. -->
<!-- Is there upstream documentation on this feature, or notes you have written yourself?  Link to that material here so other interested developers can get involved. -->
* [[User:salimma/FeatureDocs/Clojure]]
* [[User:salimma/FeatureDocs/Clojure | Documentation for the Clojure feature]]


== Release Notes ==
== Release Notes ==
<!-- The Fedora Release Notes inform end-users about what is new in the release.  Examples of past release notes are here: http://docs.fedoraproject.org/release-notes/ -->
<!-- The Fedora Release Notes inform end-users about what is new in the release.  Examples of past release notes are here: http://docs.fedoraproject.org/release-notes/ -->
<!-- The release notes also help users know how to deal with platform changes such as ABIs/APIs, configuration or data file formats, or upgrade concerns.  If there are any such changes involved in this feature, indicate them here.  You can also link to upstream documentation if it satisfies this need.  This information forms the basis of the release notes edited by the documentation team and shipped with the release. -->
<!-- The release notes also help users know how to deal with platform changes such as ABIs/APIs, configuration or data file formats, or upgrade concerns.  If there are any such changes involved in this feature, indicate them here.  You can also link to upstream documentation if it satisfies this need.  This information forms the basis of the release notes edited by the documentation team and shipped with the release. -->
* Fedora 18 now ships a more complete Clojure programming stack, including the build tool Leiningen and key frameworks necessary for web application development. Developers can now use Clojure out-of-the-box without pulling dependencies from Internet repositories, saving both network bandwith, time and disk space.
* Fedora 18 now ships a more complete Clojure programming stack, including the build tool Leiningen. This will make it easier to package other Clojure libraries in the future.


== Comments and Discussion ==
== Comments and Discussion ==
* See [[Talk:Features/Your_Feature_Name]]  <!-- This adds a link to the "discussion" tab associated with your page.  This provides the ability to have ongoing comments or conversation without bogging down the main feature page -->
* See [[Talk:Features/Clojure]]  <!-- This adds a link to the "discussion" tab associated with your page.  This provides the ability to have ongoing comments or conversation without bogging down the main feature page -->




[[Category:FeaturePageIncomplete]]
[[Category:FeatureAcceptedF18]]
<!-- When your feature page is completed and ready for review -->
<!-- When your feature page is completed and ready for review -->
<!-- remove Category:FeaturePageIncomplete and change it to Category:FeatureReadyForWrangler -->
<!-- remove Category:FeaturePageIncomplete and change it to Category:FeatureReadyForWrangler -->
<!-- After review, the feature wrangler will move your page to Category:FeatureReadyForFesco... if it still needs more work it will move back to Category:FeaturePageIncomplete-->
<!-- After review, the feature wrangler will move your page to Category:FeatureReadyForFesco... if it still needs more work it will move back to Category:FeaturePageIncomplete-->
<!-- A pretty picture of the page category usage is at: https://fedoraproject.org/wiki/Features/Policy/Process -->
<!-- A pretty picture of the page category usage is at: https://fedoraproject.org/wiki/Features/Policy/Process -->

Latest revision as of 15:41, 16 October 2012


Clojure

Summary

Currently Fedora ships a Clojure RPM, but does not ship tooling packages (e.g. the Leiningen build tool) or any of the commonly-used libraries (e.g. the Noir web framework, Korma SQL abstraction layer). We aim to rectify this situation and make Fedora a useful developer platform for Clojure out of the box.

Owner

Current status

  • Targeted release: Fedora 18
  • Last updated: 2012-10-16
  • Percentage of completion: 100%


Detailed Description

Clojure projects are generally managed and built using a tool called Leiningen, which uses the same repository layout as Maven (and comes with a build target for converting Leiningen project descriptors to Maven POM files).

For Fedora 18, our goal is to have a functioning Leiningen package that is functionally equivalent to the version downloadable from upstream, but packaged according to Fedora guidelines (in particular, depending on system libraries rather than bundling its own copies). This involves first ensuring its dependencies are packaged, and catch packaging errors in the Clojure package that is exposed by attempting to use it for building Leiningen.

Later, we would aim to make our Leinigen installation useful out-of-the-box for building RPM packages (similar to how JPackage provides mvn-rpmpackage), by making sure that Leiningen is configured out-of-the-box so it can use the system Maven repository. We expect to work on this concurrently with the work on packaging key Clojure libraries and frameworks, e.g. Korma and Noir.

Benefit to Fedora

Clojure is a Lisp programming language for the Java platform, and is one of the most popular alternative languages on the JVM. Its development process is remarkably Unix-friendly - the editor of choice is Emacs, many of the developers use Macs or Linux distributions, and the packaging quality is remarkably high w.r.t. not bundling libraries and using sane build management tools.

We currently only ship the core Clojure language itself, without the build tool (Leiningen) or any of the libraries; as it is, our distribution is not really suitable for Clojure development, beyond serving as a platform on which to bootstrap everything from Maven/Leiningen repositories. The Clojure package is also suffering from neglect - packaging mistakes do not get caught because no other package uses it as a dependency.

Scope

Changes are isolated and should not affect other parts of the distribution. Here is our current work plan:

  • Fix Clojure packaging to comply with our guidelines
  • Package Leiningen dependencies
  • Package Leiningen

(Nice to have:)

  • Ensure Leiningen is configured to use the system Maven repository
  • Ensure that the default Leiningen project templates refer to the packaged versions of Clojure libraries
  • Package Clojure frameworks
  • Create a packaging guideline for Clojure packages

How To Test

Install Leiningen using yum. Then use it to create a new project, verifying that dependency resolution, compiling and testing work as expected.

User Experience

Using our Leiningen RPM instead of the one from upstream, the only noticeable difference should be that Leiningen would get more of its dependencies from the system Maven repository, resulting in less network access and thus a faster response. If the system is used by multiple developers, there is also a space saving as each developer wouldn't have duplicate copies of the same JAR packages in their personal Maven repositories.

Dependencies

None

Contingency Plan

Clojure is not currently being used in any part of the infrastructure, and thus there is no necessary contingency plan - even an incomplete feature would be an improvement over the baseline we currently have.

Documentation

Release Notes

  • Fedora 18 now ships a more complete Clojure programming stack, including the build tool Leiningen. This will make it easier to package other Clojure libraries in the future.

Comments and Discussion