Apologies in advance for the long email. Currently, OpenBSD supports four ruby interpreters (ruby 1.8, ruby 1.9, jruby, and rubinius). Most ruby libraries in the ports tree can be built for multiple interpreters (using ruby19, jruby, and rbx FLAVORs). Most ports in the tree are only built for ruby 1.8 by default, though most ports that include C extensions are built for both ruby 1.8 and ruby 1.9. ruby 1.8 is no longer maintained upstream other than for security fixes, and starting in June 2013, it will be completely unmaintained upstream.
By the time 5.3 is relased in May 2013, it is likely that support for ruby 1.8 will start being dropped in the major ruby libraries. Rails 4 is dropping support for ruby 1.8, and I expect many ruby libraries will follow suit. I don't think it makes sense to be shipping mostly ruby 1.8 packages in 5.3, so my major pre-5.3 goal is switching the ports tree so that most ports use ruby 1.9 by default. Any ports that are currently built for both ruby 1.8 and ruby 1.9 will continue to be built for both. There are two main ways I can think to accomplish that. The first is to just change the category Makefiles to add the ruby19 flavor to the ruby ports that are currently unflavored. Another possible way to handle this would be to keep ruby 1.9 ports using the ruby19 FLAVOR, but switch ruby 1.8 ports to use a ruby18 FLAVOR, and have unFLAVORed builds just default to the ruby19 FLAVOR. I'll consider that approach if the @conflict markers can be added to the PLIST automatically by ruby.port.mk for ruby18 ports. Advantages of just adding ruby19 FLAVOR to category Makefiles: * ruby.port.mk already has a lot of magic (maybe too much magic), and this won't add additional magic. * This can be done a port at a time, instead of all at once. * Doesn't require REVISION bumping all ruby ports. Advantages of making ruby19 the default FLAVOR, with a new ruby18 FLAVOR for ruby 1.8 packages: * Running "make package" in a ruby port will built the ruby 1.9 package instead of the ruby 1.8 package. * Should we need to change the default in the future (2.x->3.0), it's as simple as changing the default FLAVOR used. * Doesn't require as many changes to category Makefiles. I'm leaning toward making the ruby19 FLAVOR the default, assuming I can get that to work. I foresee a few issues with this change. First, many ruby ports in the tree are badly out of date, and probably can't just move to 1.9 by default. I'd like to either bring these ports up to date and move them to ruby 1.9 mode, or delete them from the tree. For people that already have ruby 1.8 packages installed, switching the ports system to build ruby 1.9 packages by default should not cause problems. It will just mean that when they run pkg_add -ui, it won't find updates for those ruby 1.8 packages. Personally, I don't see a need for providing ports/packages for most ruby libraries, except in the following cases: 1) The library contains a C extension. I'm in favor of providing ports/packages for ruby libraries with C extensions, since whenever you update your system to a new snapshot/release, you are generally going to need to recompile the C extension, and pkg_add -ui will handle that update for you. Example: www/ruby-unicorn. 2) The library requires patching to work on OpenBSD. There are only a few cases of ruby libraries that actually need to get patched to work on OpenBSD. Most of the in-tree patches in ruby ports are to get the regression tests working, not the library itself. Example: devel/ruby-rake-compiler. 3) The library is a dependency for something else in tree, in which case it has to be packaged. Example: www/ruby-rack (dependency of www/ruby-unicorn). For a pure ruby library that doesn't require patching to work and doesn't have any in-tree dependencies (referred to below as "needless ports"), I don't think it makes sense to maintain a port for it. The results of installing the package are pretty much the same as using "gem install" to install the library. My plan of action: 1) Review the existing ruby ports in the tree, see what builds with ruby 1.9 and what doesn't. 2) If it doesn't build on ruby 1.9 and is a needless port, email the maintainer, seeing if they are still interested in maintaining it, and if they are, to update it so that it works on ruby 1.9 (or give a reason why we should keep it as a 1.8 port). If there is no maintainer or the maintainer is no longer interested, ask on ports@ if anyone wants to maintain the port, and if nobody steps up, remove the port from the tree. 3) Make the switch to build most ruby ports in 1.9 mode by default. I'd appreciate any thoughts/objections/recommendations related to this. Thanks, Jeremy