From: John Carter Date: 2003-01-24T12:18:56+09:00 Subject: Distribution not CPAN Re: Can we attack the 'not enough libraries' thing straight on? On Thu, 23 Jan 2003 dblack@candle.superlink.net wrote: > We've all heard this: "Ruby is great, but it doesn't have the > equivalent of CPAN." Sigh! I was going to keep out of this one, but the responses so far have sucked me into it.... I don't need CPAN and I don't want such a beast. I want a distribution. A bundle. A CPAN is a tangled web of dependencies. A distribution (like Redhat / Debian / Mandrake / ...) is that tangled web snapshotted, bundled, flattened out, smoothed and co-tested. ie. When I install version X.Y of any distribution I get... a) A Large bundle of goodies. b) Where each goodie has been tested to operate at some reasonable level of stability. c) And the elements of the Bundle have been tested to interoperate! Item a) means I can get stuck in and start working straight away. The batteries are included. Item b) means I'm not on the bleeding edge so I have reasonable confidence that I can deploy the latest stable version to a customer and it will just work. Item c) means the risk of mutually incompatible module versions has been removed for me. You may object that distributions remove flexibility, some people wanting slim bundles some wanting fat. Just the same as you can get tiny Linux distributions I envisage there will be tiny Ruby distributions. Want to script something that must be deployed on a thousand Windows clients but @@%$&^%$ windows cmd.exe is too pathetic to contemplate? Install a "tiny ruby" distro and away you go. Want decent script engine for an embedded platform? Install a tiny linux distro with a tiny ruby script distro. Want to write something large and powerful? Install the fat distro and away you go. Where we are now is want module X, you must pull down item Y Version y1.y1 and item Z Version z1.z2. (You better hope the servers for X, Y and Z are up when you want them.) Now you want module W as well, for that you need module S and module Y Version y2.y2 which is incompatible with Y version y1.y1 Oh dear. I see Ruby 1.8.0 promises to have a lot more goodies bundled with it, I am extremely glad. But perhaps the Ruby bundle should be small as possible. Same as the Linux kernel. Just Ruby and no libraries or extensions. This is so that "tiny ruby" distributions can easily be created. And then there should be a Fat Ruby, developed along the lines of the Debian distribution, but with a far faster release cycle. I propose that Matz strip the Ruby 1.8.0 Kernel to the minimum. Make it really the smallest thing that will be useful. (Perhaps a better definition would be the smallest thing that would not have to be patched to make the "Fat Ruby" distribution.) I propose that at least two Sourceforge projects be started up. A "tiny ruby" that can be the engine for a Windows installer / scripter. A "Fat Ruby" that evolves very much like the Debian project, but hopefully faster. The "Fat Ruby" distro V1.0 should aim to have _every_ mature / usable item on RAA in it. John Carter Phone : (64)(3) 358 6639 Tait Electronics Fax : (64)(3) 359 4632 PO Box 1645 Christchurch Email : john.carter@tait.co.nz New Zealand John's law :- All advances in computing have arisen through the creation of an additional level of indirection, the trick is to work out which indirection is actually useful.