Proposal for Gemtoo
Reported by Hector E. Gomez Morales | April 1st, 2009 @ 08:16 AM
Abstract
This proposal is for the implementation of a gem installer tailored for the installation phases used by portage defined by EAPI2.
A little about myself
I am a last year CS student from Mexico City (UNAM). I am a long time Gentoo user (since 2003). I am a Ruby and Ruby on Rails developer when hacking projects outside school.
Ruby on Rails projects:
I will like to have more projects to show but a bit of my work have been for private uses for companies.
I am former GSOC student for 2007, my weekly reports are in:
- Mono 2007 GSOC The project was the implementation of WYSIWYG editor for the documentation in Mono.
Problem
Ruby has a full range of libraries, programs, etc and the primary way of distribution in the Ruby community is with the use of gems. Many programs are only distributed and supported in the gem format (like Rails). So right now in Gentoo we have an eclass that delegates the installation of a package like rails to the RubyGems installer. The problems with this approach are:
- RubyGems install command has no steps or stages between invocation and the actual installation of the package. All is done in one step.
- Patching of gems are cumbersome with no step available in RubyGems to make changes in the package before it is installation.
- Many gems have C extensions that have to be built, any modification to this code is again cumbersome because there is no step available to permit the modification of the package.
- Testing is a very in-grained methodology in the Ruby community, so a great percentage of gems include test that could be run as part of the installation of the package.
Objective
Given the problem that RubyGems has no concept of steps during an installation, this proposal is about the implementation of a gem installer that is tailored for portage installation phases: unpack, prepare, configure, compile, test, install, etc.
Why it Matters
This component will enable a good integration of Ruby to Gentoo. Right now there is a transition between good old Ruby 1.8 to to the new Ruby 1.9 series. Many gems. specially the one that have C extensions, are not compatible with Ruby 1.9. With gemtoo we could patch this incompatible gems with patches from upstream or user provided, this way Gentoo could be one of the first distributions with Ruby 1.9 support.
Ruby is gaining momentum adding more users and developers each year, I think Gentoo is in a great position to be a great Ruby development platform. Deliverables
With main features will be:
* Supports the installation of gems with valid gemspec.
* Implements a sequence of phases for the installation of a gem.
* Implementation of an executable with codename Gemtoo.
o Implementation will be in Ruby.
o Heavy reuse of RubyGems code when applicable.
o Implementation of installation phases tailored for Gentoo defined by EAPI2: unpack, prepare, configure, compile, test, install, postinstall.
o Full test suite covering the main features. (Using Rspec and Cucumber)
* Implementation of eclass that uses gemtoo features
o Implementation of ebuild functions using gemtoo commands.
Collaboration with RubyGems maintainers
The features that will be implemented by gemtoo could be of value or interest to the wider Ruby community so I will make contact with current RubyGems maintainers to get their feedback and even possible integration of this features to the main tree.
Timeline
Community Bonding: April 20th - May 23th
- Getting familiar with RubyGems code and identify the parts that will be reused.
Iteration 1: May 23 - May 29
- Setup project layout, build tools, etc.
- Begin extraction of the reusable code from RubyGems.
Iteration 2: May 30 - June 5
- Continue extraction of reusable code from RubyGems.
- Begin implementation of the unpack phase.
Iteration 3: June 6 - June 12
- Finish extraction and refactoring of RubyGems code
- Finish implementation of the unpack phase
- Begin implementation of the prepare phase
Iteration 4: June 13 - June 19
- Finish implementation of the prepare phase
- Begin implementation of the configure phase
Iteration 5: June 20 - June 26
- Finish implementation of configure phase.
Iteration 6: June 27 - July 3
- Begin implementation of the compile phase
Iteration 7 (Mid Milestone) July 4 - July 10
- First release of gemtoo with unpack, configure and compile phases
Iteration 8: July 11 - July 17
- Begin implementation of the test phase
Iteration 9: July 18 - July 24
- Finish implementation of the test phase
Iteration 10: July 25 - July 31
- Begin implementation of the preinstall, install and postinstall phases
Iteration 11 (Final Milestone): August 1 - August 10
- Finish implementation of the preinstall, install and postinstall phases
- Implementation of eclass based in gemtoo installer
Iteration 12: August 11 - August 17
- Final Touches - Documentation, Tests, etc.
No comments found
Please Sign in or create a free account to add a new ticket.
With your very own profile, you can contribute to projects, track your activity, watch tickets, receive and update tickets through your email and much more.
Create your profile
Help contribute to this project by taking a few moments to create your personal profile. Create your profile ยป
Proposal for the implementation of a gem installer tailored for portage.