#1 new
Hector E. Gomez Morales

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:

  • Scielo Code
  • Current Project: Base Template Code

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.

New-ticket Create new ticket

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.

People watching this ticket

Tags

Pages