Can we attack the 'not enough libraries' thing straight on?

Hi, Daniel,

From: “Daniel P. Zepeda” daniel@zepeda-zone.net
Sent: Saturday, January 25, 2003 2:47 AM

sablot - an interface to the ginger alliance’s XLST engine.

Do you see
http://www.ruby-lang.org/raa/search.rhtml?search=sablot ?
Isn’t it what you want? Though I once saw its author
blogged that it’s not completed yet…

Regards,
// NaHi

No, I saw that RAA had it just recently, and it’s better than the CPAN
version. No simplification necessary.

Gavin

···

On Saturday, January 25, 2003, 3:34:23 PM, Hiroshi wrote:

  1. Browse by author

Good idea, but annoyingly over-hypertext. I want to browse all
authors on one page, with an index up the top using anchors. This
forces you onto a different page for each author.

I’d like this feature in RAA.

http://www.ruby-lang.org/raa/owners.html
and
http://www.ruby-lang.org/raa/owner.rhtml?id=8
We already have a pae for each owner?
Do you mean that the owner listing page might be simplified?

Scripsit ille aut illa Yukihiro Matsumoto matz@ruby-lang.org:

  • discourage use of symbol variables (e.g. $/, etc.) in manual
  • discourage use of Perlish features by giving warnings.

hm, i wonder what is the list of features that the author (matz?) decide
as perlish and should be discouraged.

  • symbol variables

This probably also includes $1 etc, doesn’t it?

  • regexp in conditional expression

What’s that? Just things like

if str =~ /regexp/
# …
end

or do you just mean REs applied to $_?

  • range (…/…) in conditonal expression

I never really understood these in Perl, anyway - and if there is one
thing I do not like it’s a side effect in an operator to itself. For example,

def foo(bar)
42.times() do |count|
foo(nil) if bar
if (count == 17) … (count == 23)
p count
end
end
end
foo(17)

It does what it looks like and shows that “…” creates two internal
variables here: one for the inner and one for the outer call. One can make
this as confusing as one wants by using more procedures, iterators etc.

I’d like this much better:

rop = RangeOp.new()

if rop[count == 17, count == 23]
  p count
end

or even

rop = RangeOp.new() do
count == 17, count == 23
end

if rop.test()
  p count
end

maybe

rop = RangeOp.new() do |c|
c == 17, c == 23
end

if rop.test(count)
  p count
end

because it’s much clearer and it’s obvious where the temporary is.
Additionally, this “RangeOp” can be implemented completely in Ruby,
so the interpreter doesn’t need to support it.

···

In message “Re: wait for more perl programmers! (Re: Can we attack the ‘not enough libraries’ thing straight on?)” > on 03/01/25, David Garamond davegaramond@icqmail.com writes:


LATIN LESSON:
I hear, Audio,
I see, —> Video,
I learn! Disco! [Robin Koch in de.talk.jokes, translated]

The following is my initial, and not yet complete, proposal on
categories for the libraries section of the RAA. It is based on CPAN,
with some modifications.

Bundles

Business
e-commerce
finance

Compression

Data Structures and Manipulation
Algorithm
Array
Binary
Enumerable
Graph
Hash
Math
Queue
Stack
Time
Tree

Database
MySQL
Postgresql

Development Support
Benchmark
CVS
Debugging
Design Patterns
Integrated Development Environment
Testing

Internationalization
I18N

Mail and Usenet News

Media
Audio
Graphics
Icons
MIDI
Mp3
Speech

Networking
Distributed Computing

Operating System Interfaces
Be
BSD
Dos
Linux
Mac
Solaris
Windows

Science
Biology
Computer Science
AI
Languages
C
Forth
Lisp
Lua
Python
Physics
Chemistry

Security
Cryptography

[String, Language, Text] Processing
PDF
regular expressions
yaml

User Interfaces
Fox
Gtk
Qt
Text (curses, etc.?)
Tk
Wx
X Windows

World Wide Web
CGI
Jabber

As an additional note, some of the items in the current RAA
applications category probably belong in the libraries category (yaml
is one example).

I hope you’re not going to remove

case string
when /re/

end

I love it :slight_smile:

Anyway:
will be a way to deactivate these warning ?
or
are these warning actvated from “-w” ?
or
we get them and there is no way to avoid them ?

···

On Sat, 25 Jan 2003 20:52:59 +0900, matz@ruby-lang.org (Yukihiro Matsumoto) wrote:

hm, i wonder what is the list of features that the author (matz?) decide
as perlish and should be discouraged.

  • symbol variables

  • regexp in conditional expression

  • range (…/…) in conditonal expression

    					matz.
    

want to here a crazy idea?

make require internet capable:

require 'http://www.ruby.or/raa/somepackage/code.rb'

oh, it gets crazier. before going out on the internet require will look for it
locally. if it is available locally great, but if the package is not
installed locally then it will use raainstall to install it. then finish the
require. in essence, all code in the RAA gets a namespace according to the
url and that is used for the require.

crazy?

···


tom sawyer, aka transami
transami@transami.net

                               .''.
   .''.      .        *''*    :_\/_:     .
  :_\/_:   _\(/_  .:.*_\/_*   : /\ :  .'.:.'.

.’’.: /\ : ./)\ ‘:’* /\ * : ‘…’. -=:o:=-
:/:’.:::. | ’ ‘’ * ‘.’/.’ (/’.’:’.’
: /\ : ::::: = / -= o =- /)\ ’ *
’…’ ‘:::’ === * /\ * .’/.’. ‘._____
* | : |. |’ .—"|
* | _ .–’| || | _| |
* | .-’| __ | | | || |
.-----. | |’ | || | | | | | || |
__’ ’ /"\ | '-."". ‘-’ ‘-.’ '` |.

What happens when the RAA goes down??

I’ve always wanted to apply the principles of Napster/Kazaa-like
availability to code libraries/depots.

Concept::

  1. Everyone has a ‘server’ that they run on the computer that holds
    the source they want publicised.

The real idea is that RAA or whatever has mirrors.

Were you to go down a p2p path, I’d recommend a Freenet variant. That
way each node holds more than just what it’s owner is actively sharing.

Complete mirrors are nicer though. More concrete and it means I can just
rsync (or equiv) a local mirror =)

cheers,

···


Iain.

dblack@candle.superlink.net wrote:

I don’t know what Simon thinks, but I really do think that exactly. It
took me a while to find NArray. The only reason why I can find it in RAA
now is because I already know it exists.

Right. I believe there are decent Ruby modules for handling MIME mails;
of course, I can’t find them, because they’re not sensibly named.

Any package that doesn’t turn up on an RAA search for “mime” doesn’t
deserve to be found. Even if it’s called “marcel”, it should have
“mime” in its description.

  1. what if i have installed, say, 150 packages from RAA. i forgot which
    modules are the mime modules. of course i can search RAA again, or i can
    do a “grep -r” on my site_ruby/ directory. but with perl modules i can
    do “man -k MIME” or just know that it will be below the MIME/ subdirectory.

  2. what if i have several ruby packages tarballs laying around in my
    download directory…

  3. what if i am looking at someone else’s ruby code and see “require
    ‘marcel’”, “require ‘bobbit’”, “require ‘hamster’”, …

encoding some metada (esp. the categorical one) into the
namespace/filename itself will make things much easier, much more
predictable, much more organized. take a look at RPM packages for
another example (in this case, an RPM filename include the
architecture/type/version/release metadata).

···


dave

Hi, Daniel,

From: “Daniel P. Zepeda” daniel@zepeda-zone.net
Sent: Saturday, January 25, 2003 2:47 AM

sablot - an interface to the ginger alliance’s XLST engine.

Do you see
http://www.ruby-lang.org/raa/search.rhtml?search=sablot ?
Isn’t it what you want? Though I once saw its author
blogged that it’s not completed yet…

No, No, you misunderstood, sablot and the interface to UCD-SNMP were
things I found that I didn’t know about already, and was just pleased
that they were already there! It was bad to include those last two in the
same post, others were confused too.

Using sablotron with XML is a great abstraction tool for doing Web work,
among other things, so I like using it. When I was searching through RAA
and the Pickaxe for all the Perl modules I use, I was so delighted to find
a Ruby interface to sablotron that I added those to say: “Oooh, these are
here, I’m delighted.”

···

On Sat, 25 Jan 2003 13:34:25 +0900 “NAKAMURA, Hiroshi” nahi@mwd.biglobe.ne.jp wrote:

Regards,
// NaHi


“Daniel P. Zepeda” <daniel@z,e,p,e,d,a,-,z,o,n,e.net>
(Remove commas for address)

The following is my initial, and not yet complete, proposal on
categories for the libraries section of the RAA. It is based on CPAN,
with some modifications.

Mail and Usenet News

Networking
Distributed Computing

World Wide Web
CGI
Jabber

Um, why is Jabber in WWW?

For reference, where would ssh, telnet, ICQ and IRC libraries end up?

cheers,

···


Iain.

Hi,

  • regexp in conditional expression

I hope you’re not going to remove

case string
when /re/

end

I love it :slight_smile:

I don’t mean this one. I meant “regexp in conditional” as in:

while gets
print if /Ruby/
end

By the way “print” without argument is also a Perlish feature to be
removed in the future.

						matz.
···

In message “Re: wait for more perl programmers! (Re: Can we attack the ‘not enough libraries’ thing straight on?)” on 03/01/26, gabriele renzi surrender_it@rc1.vip.lng.yahoo.com writes:

Tom Sawyer wrote:

want to here a crazy idea?

make require internet capable:

require ‘http://www.ruby.or/raa/somepackage/code.rb

oh, it gets crazier. before going out on the internet require will look for it
locally. if it is available locally great, but if the package is not
installed locally then it will use raainstall to install it. then finish the
require. in essence, all code in the RAA gets a namespace according to the
url and that is used for the require.

crazy?

Any security guy/gal will freak out here!
Can you say “trojan”? Nope I don’t mean contraceptives… :wink:

To do what you describe securely, you’ll need authentication mechanisms
via signatures, hashes, key-servers, etc. It’ll turn pretty complex and
nightmarish in a blink of an eye…

···


Wai-Sun “Squidster” Chia
Techinical Consultant
Consulting & Integration
“Just Another Ruby Miner”

ever use the cpan module?

crazy.

UNLESS certain modules could conform to an ample enough set of standards to
abosolutely guarantee a seamless automated intall - this is, of course, why
the cpan module never seems to work (it does not have this).

-a

···

On Thu, 23 Jan 2003, Tom Sawyer wrote:

want to here a crazy idea?

make require internet capable:

require ‘http://www.ruby.or/raa/somepackage/code.rb

oh, it gets crazier. before going out on the internet require will look for it
locally. if it is available locally great, but if the package is not
installed locally then it will use raainstall to install it. then finish the
require. in essence, all code in the RAA gets a namespace according to the
url and that is used for the require.

crazy?

====================================

Ara Howard
NOAA Forecast Systems Laboratory
Information and Technology Services
Data Systems Group
R/FST 325 Broadway
Boulder, CO 80305-3328
Email: ahoward@fsl.noaa.gov
Phone: 303-497-7238
Fax: 303-497-7259
====================================

Hi, Tom,

From: “Tom Sawyer” transami@transami.net
Sent: Thursday, January 23, 2003 1:01 PM

want to here a crazy idea?

make require internet capable:

require ‘http://www.ruby.or/raa/somepackage/code.rb

I find a joy to hear this kind of “crazy” idea that seems
to be hard or impossible. :slight_smile:

Why don’t you search RAA for example with keywords require
and download? You find
http://www.ruby-lang.org/raa/list.rhtml?name=net-require

It checks local file as a repository, not RAA.

ATTN: from the source;

This library is not production quality but just proof-of-concept.

Regards,
// NaHi

dear devels
it would also be nice to have all the libs assorted like
File/
Filetools…

IO/
Pipe…
IPC/
Msg
SysV…
regards
warren brian noronha
warren@freedomink.org

···

On Thu, 23 Jan 2003 13:01:52 +0900 Tom Sawyer transami@transami.net wrote:

want to here a crazy idea?

make require internet capable:

require ‘http://www.ruby.or/raa/somepackage/code.rb

oh, it gets crazier. before going out on the internet require will look for it
locally. if it is available locally great, but if the package is not
installed locally then it will use raainstall to install it. then finish the
require. in essence, all code in the RAA gets a namespace according to the
url and that is used for the require.

crazy?


tom sawyer, aka transami
transami@transami.net

                               .''.
   .''.      .        *''*    :_\/_:     .
  :_\/_:   _\(/_  .:.*_\/_*   : /\ :  .'.:.'.

.‘’.: /\ : ./)\ ‘:’* /\ * : ‘…’. -=:o:=-
:/:‘.:::. | ’ ‘’ * ‘.'/.’ (/’.‘:’.’
: /\ : ::::: = / -= o =- /)\ ’ *
‘…’ ‘:::’ === * /\ * .‘/.'. ‘._____
* | : |. |’ .—"|
* | _ .–’| || | _| |
* | .-‘| __ | | | || |
.-----. | |’ | || | | | | | || |
__’ ’ /“\ | '-.”". ‘-’ ‘-.’ '` |.

Hi, Daniel,

From: “Daniel P. Zepeda” daniel@zepeda-zone.net
Sent: Saturday, January 25, 2003 1:48 PM

sablot - an interface to the ginger alliance’s XLST engine.

Do you see
http://www.ruby-lang.org/raa/search.rhtml?search=sablot ?
Isn’t it what you want? Though I once saw its author
blogged that it’s not completed yet…

No, No, you misunderstood, sablot and the interface to UCD-SNMP were
things I found that I didn’t know about already, and was just pleased
that they were already there! It was bad to include those last two in the
same post, others were confused too.

Oops. I’m very sorry for bothering you with the post.
I should be careful when hacking/reading a language…

Regards,
// NaHi

Hi –

I don’t know what Simon thinks, but I really do think that exactly. It
took me a while to find NArray. The only reason why I can find it in RAA
now is because I already know it exists.

Right. I believe there are decent Ruby modules for handling MIME mails;
of course, I can’t find them, because they’re not sensibly named.

Any package that doesn’t turn up on an RAA search for “mime” doesn’t
deserve to be found. Even if it’s called “marcel”, it should have
“mime” in its description.

  1. what if i have installed, say, 150 packages from RAA. i forgot which
    modules are the mime modules. of course i can search RAA again, or i can
    do a “grep -r” on my site_ruby/ directory. but with perl modules i can
    do “man -k MIME” or just know that it will be below the MIME/ subdirectory.

I was talking specifically about searching on RAA, which I thought was
what Simon meant.

I think that somehow my advocacy of the idea of getting “missing”
modules written sooner rather than later (even if naming/hierarchy
issues haven’t been worked out yet) has been taken to mean that I
advocate some kind of chaos and non-searchability among Ruby modules.
I don’t; I just advocate finding a way that will work, and that can
happen soon, to put an end to the “not enough libraries” rap on Ruby.

Judging from what people have been saying, it’s sounding to me like
that process will be a mixture of writing modules and continuing to
make it easier to search RAA on different views.

As for searching on one’s system: I think it’s a given that it’s good
to be able to do very high-level things to get information about
modules, and to retrieve modules. Whether it’s man -k or something
else (rpkg -something, or whatever), there’s no question that easy
indexing and searching are key.

  1. what if i have several ruby packages tarballs laying around in my
    download directory…

I guess you’d use a package analyzing utility (of which there are
several in the works, I believe :slight_smile: to analyze the contents.

  1. what if i am looking at someone else’s ruby code and see “require
    ‘marcel’”, “require ‘bobbit’”, “require ‘hamster’”, …

encoding some metada (esp. the categorical one) into the
namespace/filename itself will make things much easier, much more
predictable, much more organized. take a look at RPM packages for
another example (in this case, an RPM filename include the
architecture/type/version/release metadata).

My main qualm about this has always been at the last link in each
chain – that is, the “c.rb” in “a/b/c.rb”. One problem is that if
there’s one franchise holder for each potential module space, then if
that person’s module isn’t very good, there are all sorts of problems.
(I’m undiplomatic enough to suggest that this might happen, but would
probably be too diplomatic and/or cowardly to flag it publicly if it
did :slight_smile:

Another problem is that more than one person might well write
perfectly useable modules in the same domain, which might differ from
each other in matters of API but each be to some people’s taste.
There has to be room for these.

That’s why, at the very least, I would advocate naming along the lines
of text/soundex/dbsndx.rb and text/soundex/marcel.rb, rather than
text/soundex.rb.

(I have no problem with the latter style for things in the standard
distribution.)

I admit too that I have a distaste for this kind of categorization,
because it freezes a particular, sometimes unconvincing snapshot of
how the pie is sliced. But I haven’t come up with any way to do away
with it entirely.

David

···

On Sat, 25 Jan 2003, David Garamond wrote:

dblack@candle.superlink.net wrote:


David Alan Black
home: dblack@candle.superlink.net
work: blackdav@shu.edu
Web: http://pirate.shu.edu/~blackdav

CPAN puts Jabber stuff under WWW. But if that’s silly, it shouldn’t be
copied. ssh, telnet, icq and irc libraries should probably go under
‘networking and www’ – especially if that’s where you would expect to
find them.

···

On Sunday, January 26, 2003, at 12:52 AM, Iain ‘Spoon’ Truskett wrote:

[snip] Um, why is Jabber in WWW?

For reference, where would ssh, telnet, ICQ and IRC libraries end up?
[snip]

This would be nice. In the volunteer, every man do his bit, world of
Ruby library development, it’s not possible to centrally manage this,
though.

However, Ruby has a nice ability to create aliases to classes/modules,
so someone could manage a file that looks like this (I’ll demonstrate
with IPC, since File and IO are built-in classes):

module IPC
module Msg
require ‘ipcmsglib’ # Fictitious library installed on system
include IpcMsgLib
# IpcMsgLib::foo now available as IPC::Msg::foo
end

module SysV
  require 'sysvipc' # Fictitious library installed on system
  include SysVIPC
  # SysVIPC::quux now available as IPC::SysV::quux
end

end

This could be broken up substantially to save startup time, so the
IPC::SysV module is defined in ‘ipc/sysv’, so only when you require
that library does it fetch and include the real SystemV IPC library.

To avoid treading on other namespaces, you’d probably put all of this
in its own module Std, and directory ‘std’. So code looks like this:

require ‘std/ipc/msg’

Std::IPC::Msg::foo …

Or this:

require ‘std/ipc’ # we get everything available in IPC

include Std # include this for convenience if safe

IPC::Msg::foo …
IPC::SysV::quux …

I think this is a good idea, but unlikely to happen anytime soon.
It’s nice that Ruby can do it, though. There may be quicker ways to
implement it, too, like “IPC::SysV = ::SysVIPC” or something, but I
wanted to highlight conditional library mapping.

Gavin

···

On Saturday, January 25, 2003, 1:10:00 AM, Warren wrote:

it would also be nice to have all the libs assorted like
File/
Filetools…

IO/
Pipe…
IPC/
Msg
SysV…

In the Smalltalk community, there are a variety of open license libraries which could be ported quite rapidly. (Smalltalk is Homomorphic to a subset of Ruby, so porting is mostly mindless.)

In particular, you Ruby-istas might be interested in many of the things on this page:

<http://www.cincomsmalltalk.com:8080/CincomSmalltalkWiki/VW+GoodiesParc>

You’ll have to check on licenses by individual package.

–Peter Kwangjun Suk

(P.S. Someone mentioned cryptographic algorithms. At one time the VisualWorks 5i implementations of some block ciphers (like DES) were running 3% faster than RSA Data securities’ DLLs in C. Yes, that’s right, 3% faster than the same algorithm in C. And these were pure Smalltalk implementions. Just shows what you can do with great generational GC, good design, and a great JIT VM. I happen to be working on running Ruby on Smalltalk VMs.)

···

On Fri, 24 Jan 2003 23:10:00 +0900 Warren Brian Noronha warren@freedomink.org wrote:

dear devels
it would also be nice to have all the libs assorted like
File/
Filetools…

IO/
Pipe…
IPC/
Msg
SysV…