On 9/21/05, Paul van Tilburg <paul / luon.net> wrote: > On Wed, Sep 21, 2005 at 03:28:01AM +0900, Austin Ziegler wrote: >> On 9/20/05, Mauricio FernáÏdez <mfp / acm.org> wrote: >>> Right now, RubyGems represents a step backwards relative to Minero >>> Aoki's setup.rb in many regards as far as repackagers are concerned. >> To be honest, this is one of my *least* worries. I know, Mauricio, >> that it matters greatly to you, but I find that RubyGems has solved >> things in a manner similar to stow. > But it is our most important worry! As Debian developer this would > increase my amount of work for packaging _and_ maintaining each Ruby > library/app. Although this trend is more related to RubyGems > popularity gain than the actual merge. You know what, though? I don't care. Sorry, but I don't. If you insist upon repackaging -- in a heavyhanded way -- gems, then I don't care what sort of work you have to do. Are there things we can do to help this? Sure, but the reality is that I do not believe that RubyGems should pander to the various repackaging schemes if it harms the RubyGems core functionality. I again repeat the point that I made about the FreeBSD ports tree managing the process much easier than I'm hearing from everyone else. Is ports *that much better*? I'm inclined to believe so, at this point. >>> To state it simply, it is often more difficult to package something >>> released in .gem format than in an equivalent tarball + setup.rb. I >>> know this from my personal experience when repackaging a large >>> number of libraries and applications [2] and most importantly from >>> what several developers working on established repackaging efforts >>> (Debian, FreeBSD, PLD, Suse) have told me. > Indeed. Note that this is partly due to a different point of view. > For Debian we package the libs and apps ourselves. I hate to say it > but there is almost no need for RubyGems in our case, whereas it is > very handy and good for platforms lacking such packaging and Q&A > (win32, OSX, ...). I certainly see the point and usefulness of the > system. I've had more problems because of Debian's repackaging than any other platform, bar none. I've seen *no* benefit to the Debian philosophy. I've had a lot more luck with FreeBSD, Gentoo, and Slackware. Frankly, I don't believe Debian repackagers when they say "we don't need RubyGems." I've still needed CPAN on Debian; I'll still need RubyGems. If I ever have to use Debian again, which ghu willing I won't. > I am still more interested in a system to generalize _all_ Ruby > lib/app sources, like Package[2]. If RubyGems, repackagers, etc. all > could use that, that would be great. And it makes more sense to have > that in the core IMO. Except that Package is entirely vapour at this point. It makes a lot more sense to have something that works and exists in the core than vapour. I respect Chris a lot, but RubyGems is *here*. Without real code, you can't put something in the core. RubyGems is also proven and works across platforms. The integration of RubyGems, I think, is a given. >>> This is due to RubyGems breaking source compatibility with >>> non-RubyGems system in several areas, including, but not limited to >>> the following: >>> * lack of support for DATADIR >> [...] >>> * obviously, require_gem >> Which should be going away, and has always been said that it would be >> going away. The biggest problem will be the association between the >> gem name (what you install) and the libraries (what you require) and >> whether that should be maintained. I do not believe that it should. > With this gone, it would stop creating source incompatibilities. This > would result in far less patches of apps and libs for us. Now, an app > can not work because of the absense of RubyGems in Debian (which will > change soon though, but packages shouldn't depend on it, IMHO). Ideally, the repackagers shouldn't be doing any patching without (1) notifying the upstream developer and (2) not getting a positive response to said patches for incorporation. Why? Because you don't know our applications or libraries. It's that simple. > The mapping between the gem and the libs (and an API to access it) > might still be useful, see also the end of the mail. Yes. This should be ok. >>> * in general, problems due to the new directory layout >> Please expand on this, because I see nothing different between this >> and what stow does, except that RubyGems does it transparently. >> Indeed, with the latest versions of RubyGems, aside from the >> necessary "require 'rubygems'" line, there is no practical difference >> between what RubyGems does and what RPA did (excepting, of course, >> that RPA installed directly into site_ruby). > And exactly that practical difference makes it violate the FHS and > thereby our Debian policy. Say we were planning to make a transition > to seperating arch-independant and arch-dependant libs into /usr/share > and /usr/lib dirs, with this 1-gem-1-dir approach it would be > virtually impossible. Again, I don't care. The 1-gem-1-dir approach offers many more benefits than separating arch-dependent and arch-independent libs, IMO. At a minimum, if you want to offer real code that allows for the installation and removal of arch-dependent and arch-independent code into two different locations, it should still respect the basic RubyGems architecture (say /usr/share/ruby/gems/1.8/gems/foo-gem/lib/foo and /usr/lib/ruby/gems/1.8/gems/foo-gem/lib/foo/i386-crap). To go with this, it might be ideal to have a "gem rebuild" command so that you can rebuild an extension gem easily. >>> Upstream developers aware of this problem have to write their code >>> carefully to make sure it works in both RubyGems and all other >>> systems, or to keep two lines of development and make duplicate >>> releases. To sum up, this is a lot of work that we could live >>> without if the issues affecting RubyGems were fixed before it is in >>> more widespread use. >> I personally have issues with the idea that repackagers will be >> patching my libraries. I appreciate the work you did with RPA and the >> reviews you performed on my code, but the reality is that I'm not >> sure that repackagers *should* patch incoming code unless it is clear >> that the project has been abandoned and it is a security patch. > I have issues with upstream adding code that has to do with packaging. > As Debian/Ruby maintainers, we have agreed that packaging is and > should always be _orthogonal_ to upstream software work. And again, I don't care. Packaging is NOT orthogonal to upstream software work in the real world, despite what you folks might think. I have to worry about it all the time in my real job and in my Ruby development. I've *always* had to worry about it. If everyone switched to the Debian philosophy, I might not have to, but that would mean *everyone*. Since everyone isn't switching, I think that it's time for the Debian repackagers to start recognising that some of us don't really care about Debian and need to solve real cross-platform problems. >>> I believe that "the Ruby standard for publishing and managing third >>> party libraries" should not make things any harder to package, for >>> there are legitimate reasons to prefer existent tools (rpm, dpkg, >>> etc.) to RubyGems, [...] >> I disagree, but I'm obviously going to be in a minority here. I think >> that the situation on Debian demonstrates that, sometimes, the >> repackagers do far more harm than good. > Thanks! That wasn't a compliment. I have little positive to say about Debian repackagers in general, having experienced little good. I'm not suggesting that other repackagers (RedHat, SuSE, etc.) are much better, but I have the most negative experience with Debian. >> I'm glad that it's better, but it never should have been the mess >> that it was. > If this is about the stdlib being split up. That was a choice, and I > can understand the maintainer's choice, it was a more logical thing > for Ruby1.6 than 1.8, stdlib being much smaller. Some people are just > dependency-nit-pickers. It was a bad choice. It *harmed* Ruby, and it didn't handle dependencies properly. What's to say that you won't make similarly bad choices for modules that I create? >>> To make things clear, I'll repeat once more that I'm not opposed to >>> a Ruby standard being adopted for upstream releases, or to RubyGems >>> becoming such a standard after all the above issues have been dealt >>> with. But I believe the current RubyGems implementation shouldn't be >>> considered the sanctioned standard before that happens. >> I think that you need to clarify the issues. Everything you've stated >> here has been, IMO, quite vague. It may be useful to highlight the >> issues with specific cases *and provide suggested solutions*. > The issues may sound vague because they are quite general (source > incompatibility, being able to run stuff without gems, FHS compliance) > and most count for all gems or the entire system. Source incompatibility is not my issue. As I said, I've *got* no source incompatibility in PDF::Writer, and it uses RubyGems. I just did two installs of PDF::Writer and its dependencies last night on a Slackware machine. The first was into site_ruby; the second into RubyGems. Both times, the demos did exactly what they were supposed to do. The only difference in running was the addition of -rubygems to the command-line when running the demos from RubyGems. My source, however, has not changed between versions. (And *that* I can state with absolute authority, because I know what my packaging rake file does.) Running stuff without gems is an irrelevancy; I package things automagically to do this. When RubyGems is part of the Ruby core, then gems will always be present. FHS compliance is also something that I don't care about -- and probably never will. Frankly, I've *never* cared about it when managing Unix boxes, either. >> Those solutions may involve changes that can only happen when >> RubyGems is incorporated in Ruby, but let's be realistic here. If the >> RubyGems developers aren't involved in repackaging efforts, those >> issues are going to end up being low on their priority efforts unless >> someone comes to them with concrete problems *and suggestions for >> solutions*. > Ok. Some concrete stuff then. > * Upstream should only have to create a spec file, not change stuff in > the code, let 'require "foo"' stay 'require "foo"'. That's more or less all that has to happen now. I recommend changing require, however, to accepting a version identifier. > * Create some generizable installer, maybe assist with Package[2] or > come up with something better, definitely useful to have a > distutils[1]-alike system in Ruby Core IMO. I don't see any benefit to this, and as I said, Package is vapour at the moment. > * Create a mapping from gems to libs. This way, we _can_ include > RubyGems into Debian without problems. The user can get libs that > haven't been packaged yet or newer versions but is warned when gems > are installed overriding a lib that already has been installed via > dpkg and vice versa. Um. You can simply parse the gemspecs to do this. > This probably sound much more easy than it is, and it's also > more of a workaround. No, I think it is pretty easy. > Debian is about to unite much of Ruby lib/app packaging under a team. > We are improving our system, now using setup.rb, to be able to package > and maintain a lot very efficiently. The thing we have in common with > gems is the metadata and install part and we would very much like to > have a suiting system for that in core. However, currently, RubyGems > increases our amount of work and we are about to go slower rather than > faster. *shrug* If Debian is the only system that's truly negatively impacted by this, I don't see a problem here. RubyGems is here, it's real, and IMO it's much more useful than distutils. -austin -- Austin Ziegler * halostatue / gmail.com * Alternate: austin / halostatue.ca