Features/Ruby 1.9.1

= Ruby 1.9.1 =

Summary
Ruby 1.9.1 is a long awaited, much anticipated version of Ruby, with major increases in speed and reliability. With Ruby 1.9.1 alongside Ruby 1.8.6 in Fedora 13, possibly including Ruby 1.8.5 as well, Fedora becomes the superior Ruby development platform.

Owner

 * Name: Jeroen van Meeuwen

Interested People

 * Name: John Blitch
 * Name: Michal Fojtik

Current status

 * Targeted release: -
 * Last updated: Sat Jan 9 2009
 * Percentage of completion: 60%

Latest Status Updates

 * 2009-12-22: Packages are available on http://mirror.nl.ergo-project.org/repositories/ (the feature-ruby repositories)
 * 2009-12-27: Some of the packaging problems resolved
 * 2010-01-09: Package review submitted: https://bugzilla.redhat.com/show_bug.cgi?id=553917

Detailed Description
Ruby-1.9.1 is upstream's new major release of Ruby. The MRI reference interpreter is replaced by the YARV bytecode interpreter, designed to greatly improve the execution time of ruby programs. 

In doing so, upstream has set the anticipations for downstream consumers with faster and more reliable Ruby. Bringing Ruby 1.9.1 to Fedora is essential for Fedora to be at the top of it's game as a Ruby development platform.

While ruby-1.9.1 is great (and all that), some programs have problems with the changes and are unable to keep up in a decent fashion. Admittedly, Ruby does not know a stable ABI nor a stable API, and major-minor-teeny versions can have subtle but significant changes in either the ABI or the API.

In order for Fedora to be the most excellent development platform for Ruby applications (including Ruby on Rails applications), we should make sure that we run at least the following Ruby stacks, noted that the stacks marked with a "(?)" are not in the scope of the current plan;


 * ruby-trunk (?)
 * ruby-1.9.1
 * ruby-1.8.6
 * ruby-1.8.5 (?)

In order to do so, and comply with progressive Packaging Standards (which have been pretty immature for Ruby packages), huge changes to Ruby are necessary and desirable.

Benefit to Fedora
Supporting the growth of a young language with a performance-enhancing milestone release. Add to that the multiplatform targetted development we enable downstream parties to do using our distribution.

Scope
The following includes a summary of changes included in this feature:


 * New Packaging Guidelines for Ruby packages (gems and extension libraries)
 * Rebuilding of all Ruby packages, and all packages depending on Ruby
 * Changes to the search path to comply with the multi-versioning
 * Changes to the location of files to comply with FHS, multilib and packaging standards

New Packaging Guidelines
Drafts of new packaging guidelines will have to be proposed to FPSCo. No such drafts currently exist.

Ruby Search path
The ruby search path is going to change. Not set in stone yet, but this is what it is right now (on my workstation):

[jmeeuwen@ghandalf ruby.git]$ ruby-1.9.1 -e 'puts $:' /usr/local/lib64/ruby/1.9.1 /usr/local/lib64/ruby/1.9 /usr/local/lib64/ruby/ /usr/local/share/ruby/1.9.1 /usr/local/share/ruby/1.9 /usr/local/share/ruby/ /usr/lib64/ruby/1.9.1 /usr/lib64/ruby/1.9 /usr/lib64/ruby/ /usr/share/ruby/1.9.1 /usr/share/ruby/1.9 /usr/share/ruby/ . [jmeeuwen@ghandalf ruby.git]$ ruby-1.8.6 -e 'puts $:' /usr/local/lib64/ruby/1.8.6 /usr/local/lib64/ruby/1.8 /usr/local/lib64/ruby/ /usr/local/share/ruby/1.8.6 /usr/local/share/ruby/1.8 /usr/local/share/ruby/ /usr/lib64/ruby/1.8.6 /usr/lib64/ruby/1.8 /usr/lib64/ruby/ /usr/share/ruby/1.8.6 /usr/share/ruby/1.8 /usr/share/ruby/ .

Changes like these mean that the Packaging Guidelines for Ruby will also need to be updated.

Packages that require "ruby(abi) = 1.8"
Requires rebuilding numerous packages that depend on ruby(abi) = 1.8, or have Requires or BuildRequires for package dependent on ruby(abi) = 1.8


 * 80 in total

repoquery -c rawhide-i386.conf --qf="%{SOURCERPM}" --whatrequires "ruby(abi) = 1.8" | sort | uniq

Packages that require "*ruby*"

 * 119 in total (80 matches from previous query, of course)

repoquery -c rawhide-i386.conf --qf="%{SOURCERPM}" --whatrequires "*ruby*" | sort | uniq

Test Plan

 * 1) Make a compatibility package available: compat-ruby1.8-1.8.6.287
 * 2) Rebuild packages requiring ruby(abi) = 1.8 against the compat- package
 * 3) Release ruby-1.9.1
 * 4) Start moving packages to requiring ruby(abi) = 1.9 and test functionality
 * 5) Fix upstream whereever possible

User Experience

 * Puppet had better work, no matter what -- Yaakov M. Nemoy 16:49, 6 December 2009 (UTC)
 * Ruby 1.9.1 fixes this bug, so yes please! -- Nathan Thomas 21:27, 15 January 2009 (UTC)

Dependencies

 * Maintainers of packages dependent on ruby need to be in the loop
 * provenpackager membership for /me (done)
 * Package Guidelines change

Contingency Plan

 * Revert compat-ruby1.8-1.8.6.287 to just ruby-1.8.6.287

Documentation

 * http://svn.ruby-lang.org/repos/ruby/tags/v1_8_7_357/NEWS
 * http://svn.ruby-lang.org/repos/ruby/tags/v1_9_1_431/NEWS
 * http://svn.ruby-lang.org/repos/ruby/tags/v1_9_2_290/NEWS
 * http://svn.ruby-lang.org/repos/ruby/tags/v1_9_3_0/NEWS

Upstream EOL

 * 1.8.6 : Engine Yard’s Plans for Ruby 1.8.6


 * 1.8.7 : About 1.8.7 EOL and Plans for 1.8.7

Release Notes
...