This is how we Roll

Discussion in 'Ruby' started by transfire@gmail.com, Nov 4, 2007.

  1. Guest

    Hi--

    I've decide to go ahead and announce Roll(s) today. Even though the
    code still needs fine-tuning and the docs aren't completely up to
    date, I've been using it productively for the last few weeks. So I
    figure it's probably a good time being the end of RubyConf --it will
    give the lucky attendees something interesting to come home to.

    Note, the project is called "Roll", but that doesn't always sound
    right in a sentence, so I call it 'Rolls' too, whenever that fits
    better.

    Okay. So what is it? Roll is a library manager. What it does is
    provide an OOP interface to Ruby libs/apps. So you can do things like
    this:

    facets = library('facets')
    facets.version #=> "2.0.4"
    facets.require 'functor'

    You can also specify versions:

    facets = library('facets', "= 2.0.3")
    facets.version #=> "2.0.3"
    facets.require 'functor'

    Of course, in common use, you probably would just do:

    require 'facets:functor'

    And for backward/non-roll compatibility (though lookup is less
    efficient):

    require 'facets/functor'

    That's really the main of the code side of Roll. Pretty simple. It's
    really just the loading of libs you're used to with some enhancements,
    like versioning and prevention of file name clashing (with Rolls there
    is always a way to get to a file).

    The big advantage of Rolls plays out on the file system. Rolls can use
    your development repositories as-is. There is no need to go through an
    installation phase every time you make a change to you lib/app. This
    can save a developer a lot of time. It also means that Ruby software
    can be "installed" just by dropping a copy of a repository into a
    location Rolls knows about --no need to create a specialized package.
    For instance just doing an 'svn co', will effectively "install" a
    project that's "ready-to-roll".

    An important thing to understand is that Roll is not a package
    manager. It does not download packages, resolved dependencies and
    install them. Rolls is _library manager_ which is _package format
    neutral_. It can work with any of them. However, it also largely
    mitigates the need for specialized package formats --at least as far
    as Ruby libs go, b/c a snapshot of a developers repo (minus anything
    you don't want to distribute of course) would do just as well. As
    such, it represents the first important piece in my overall strategy
    for creating a near "zero-install" system for Ruby.

    Alright, that's the super brief explanation. Like I said, there's
    still work to do -- such as Windows bin/ support, and how best to
    handle libs with c extensions. But it's coming along nicely. Anyone
    who is interested in helping, just drop me a line.

    http://roll.rubyforge.org

    T.
     
    , Nov 4, 2007
    #1
    1. Advertising

  2. Guest

    > Note, the project is called "Roll", but that doesn't always sound
    > right in a sentence, so I call it 'Rolls' too, whenever that fits
    > better.


    Just a note - the Rails team was kind of surprised to discover that
    "rails" was drug slang for lines of cocaine. Rolls is also drug slang,
    at least on the East Coast, for Ecstasy.

    Obviously this whole R, L, S combination is cursed in terms of open
    source project names that turn out to be accidental drug references.
    That's why I'm doing away with that entire set of phonemes for my
    naming scheme, and releasing a project called Acid instead. No R, no
    L, no S. I'm good.

    --
    Giles Bowkett

    Blog: http://gilesbowkett.blogspot.com
    Portfolio: http://www.gilesgoatboy.org
    Tumblelog: http://giles.tumblr.com/
     
    , Nov 4, 2007
    #2
    1. Advertising

  3. Guest

    Giles Bowkett wrote:
    >> Note, the project is called "Roll", but that doesn't always sound
    >> right in a sentence, so I call it 'Rolls' too, whenever that fits
    >> better.
    >>

    >
    > Just a note - the Rails team was kind of surprised to discover that
    > "rails" was drug slang for lines of cocaine. Rolls is also drug slang,
    > at least on the East Coast, for Ecstasy.
    >
    > Obviously this whole R, L, S combination is cursed in terms of open
    > source project names that turn out to be accidental drug references.
    > That's why I'm doing away with that entire set of phonemes for my
    > naming scheme, and releasing a project called Acid instead. No R, no
    > L, no S. I'm good.
    >
    >

    Sometimes I just want to smack people ... how do we weed out that sort
    of thing? Maybe I'm just a crank.

    <ducking>
     
    , Nov 4, 2007
    #3
  4. Guest

    > >> Note, the project is called "Roll", but that doesn't always sound
    > >> right in a sentence, so I call it 'Rolls' too, whenever that fits
    > >> better.

    > >
    > > Just a note - the Rails team was kind of surprised to discover that
    > > "rails" was drug slang for lines of cocaine. Rolls is also drug slang,
    > > at least on the East Coast, for Ecstasy.
    > >
    > > Obviously this whole R, L, S combination is cursed in terms of open
    > > source project names that turn out to be accidental drug references.
    > > That's why I'm doing away with that entire set of phonemes for my
    > > naming scheme, and releasing a project called Acid instead. No R, no
    > > L, no S. I'm good.

    >
    > Sometimes I just want to smack people ... how do we weed out that sort
    > of thing? Maybe I'm just a crank.


    Yeah, it makes me kind of critical too, but an acid tongue never did
    anyone any good. We just need to tweak people's thinking a bit, so
    nobody looks like a dope.

    --
    Giles Bowkett

    Blog: http://gilesbowkett.blogspot.com
    Portfolio: http://www.gilesgoatboy.org
    Tumblelog: http://giles.tumblr.com/
     
    , Nov 4, 2007
    #4
  5. Guest

    On Nov 4, 2007 8:14 PM, M. Edward (Ed) Borasky <> wrote:
    > Giles Bowkett wrote:
    > >> Note, the project is called "Roll", but that doesn't always sound
    > >> right in a sentence, so I call it 'Rolls' too, whenever that fits
    > >> better.
    > >>

    > >
    > > Just a note - the Rails team was kind of surprised to discover that
    > > "rails" was drug slang for lines of cocaine. Rolls is also drug slang,
    > > at least on the East Coast, for Ecstasy.
    > >
    > > Obviously this whole R, L, S combination is cursed in terms of open
    > > source project names that turn out to be accidental drug references.
    > > That's why I'm doing away with that entire set of phonemes for my
    > > naming scheme, and releasing a project called Acid instead. No R, no
    > > L, no S. I'm good.
    > >
    > >

    > Sometimes I just want to smack people ... how do we weed out that sort
    > of thing? Maybe I'm just a crank.
    >
    > <ducking>
    >
    >

    I believe "Roll" is a goof name for a project that "Rocks", well I
    have not checked it out yet ;)

    R.


    --
    what do I think about Ruby?
    http://ruby-smalltalk.blogspot.com/
     
    , Nov 4, 2007
    #5
  6. Guest

    > I believe "Roll" is a goof name for a project that "Rocks", well I
    > have not checked it out yet ;)

    WHY did they put the "f" right next to the "d" ????


    G O O D name that was of course
    Sorry Tom.
    R.


    --
    what do I think about Ruby?
    http://ruby-smalltalk.blogspot.com/
     
    , Nov 4, 2007
    #6
  7. Guest

    Note: parts of this message were removed by the gateway to make it a legal Usenet post.

    unsubscribe

    On 04/11/2007, Trans <> wrote:
    >
    > Hi--
    >
    > I've decide to go ahead and announce Roll(s) today. Even though the
    > code still needs fine-tuning and the docs aren't completely up to
    > date, I've been using it productively for the last few weeks. So I
    > figure it's probably a good time being the end of RubyConf --it will
    > give the lucky attendees something interesting to come home to.
    >
    > Note, the project is called "Roll", but that doesn't always sound
    > right in a sentence, so I call it 'Rolls' too, whenever that fits
    > better.
    >
    > Okay. So what is it? Roll is a library manager. What it does is
    > provide an OOP interface to Ruby libs/apps. So you can do things like
    > this:
    >
    > facets = library('facets')
    > facets.version #=> "2.0.4"
    > facets.require 'functor'
    >
    > You can also specify versions:
    >
    > facets = library('facets', "= 2.0.3")
    > facets.version #=> "2.0.3"
    > facets.require 'functor'
    >
    > Of course, in common use, you probably would just do:
    >
    > require 'facets:functor'
    >
    > And for backward/non-roll compatibility (though lookup is less
    > efficient):
    >
    > require 'facets/functor'
    >
    > That's really the main of the code side of Roll. Pretty simple. It's
    > really just the loading of libs you're used to with some enhancements,
    > like versioning and prevention of file name clashing (with Rolls there
    > is always a way to get to a file).
    >
    > The big advantage of Rolls plays out on the file system. Rolls can use
    > your development repositories as-is. There is no need to go through an
    > installation phase every time you make a change to you lib/app. This
    > can save a developer a lot of time. It also means that Ruby software
    > can be "installed" just by dropping a copy of a repository into a
    > location Rolls knows about --no need to create a specialized package.
    > For instance just doing an 'svn co', will effectively "install" a
    > project that's "ready-to-roll".
    >
    > An important thing to understand is that Roll is not a package
    > manager. It does not download packages, resolved dependencies and
    > install them. Rolls is _library manager_ which is _package format
    > neutral_. It can work with any of them. However, it also largely
    > mitigates the need for specialized package formats --at least as far
    > as Ruby libs go, b/c a snapshot of a developers repo (minus anything
    > you don't want to distribute of course) would do just as well. As
    > such, it represents the first important piece in my overall strategy
    > for creating a near "zero-install" system for Ruby.
    >
    > Alright, that's the super brief explanation. Like I said, there's
    > still work to do -- such as Windows bin/ support, and how best to
    > handle libs with c extensions. But it's coming along nicely. Anyone
    > who is interested in helping, just drop me a line.
    >
    > http://roll.rubyforge.org
    >
    > T.
    >
    >
    >
     
    , Nov 4, 2007
    #7
  8. Guest

    , Nov 4, 2007
    #8
  9. Guest

    On Nov 4, 1:49 pm, "Giles Bowkett" <> wrote:
    > > Note, the project is called "Roll", but that doesn't always sound
    > > right in a sentence, so I call it 'Rolls' too, whenever that fits
    > > better.

    >
    > Just a note - the Rails team was kind of surprised to discover that
    > "rails" was drug slang for lines of cocaine. Rolls is also drug slang,
    > at least on the East Coast, for Ecstasy.
    >
    > Obviously this whole R, L, S combination is cursed in terms of open
    > source project names that turn out to be accidental drug references.
    > That's why I'm doing away with that entire set of phonemes for my
    > naming scheme, and releasing a project called Acid instead. No R, no
    > L, no S. I'm good.


    Hmm... maybe I have a subconscious tendency I was unaware of...

    http://blow.rubyforge.org

    ;)

    Anyhow. I realize it's Sunday, and a lot of you are candy flipping
    tonight, but I'd prefer to get the conversation back. Hey, no worries,
    but if you don't mind...

    Something I wanted to demonstrate that I forgot to put in my original
    post:

    irb(main):001:0> Library.list
    => ["box", "nitro", "roll", "icli", "mint", "og", "glue",
    "tmail", "english", "webrite", "blow", "xact", "raw",
    "ruby", "ratch", "facets"]

    T.
     
    , Nov 4, 2007
    #9
  10. Guest

    Trans wrote:

    > irb(main):001:0> Library.list
    > => ["box", "nitro", "roll", "icli", "mint", "og", "glue",
    > "tmail", "english", "webrite", "blow", "xact", "raw",
    > "ruby", "ratch", "facets"]


    Any reason this returns a list of strings, and not of library objects?

    --
    vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407
     
    , Nov 4, 2007
    #10
  11. Guest

    On Nov 4, 5:46 pm, Joel VanderWerf <> wrote:
    > Trans wrote:
    > > irb(main):001:0> Library.list
    > > => ["box", "nitro", "roll", "icli", "mint", "og", "glue",
    > > "tmail", "english", "webrite", "blow", "xact", "raw",
    > > "ruby", "ratch", "facets"]

    >
    > Any reason this returns a list of strings, and not of library objects?


    Very much so. Rolls doesn't bother to objectify a library until you
    request it as such. This helps reduce the memory footprint, and boost
    performance.

    T.
     
    , Nov 4, 2007
    #11
  12. Guest

    Trans wrote:
    > As
    > such, it represents the first important piece in my overall strategy
    > for creating a near "zero-install" system for Ruby.


    The whole thing sounds great! Are the further planned steps secret?

    mortee
     
    , Nov 5, 2007
    #12
  13. Guest

    On Nov 4, 6:33 pm, Konrad Meyer <> wrote:
    > Quoth Joel VanderWerf:
    >
    > > Trans wrote:

    >
    > > > irb(main):001:0> Library.list
    > > > => ["box", "nitro", "roll", "icli", "mint", "og", "glue",
    > > > "tmail", "english", "webrite", "blow", "xact", "raw",
    > > > "ruby", "ratch", "facets"]

    >
    > > Any reason this returns a list of strings, and not of library objects?

    >
    > > --
    > > vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407

    >
    > Maybe Library#inspect just returns a string of the name? :D


    Nah. list is a class method. inspect is an instance method.

    irb(main):002:0> library('facets').inspect
    => "#<Library facets/2.0.4>"

    T.
     
    , Nov 5, 2007
    #13
  14. Guest

    On Nov 4, 9:19 pm, Konrad Meyer <> wrote:
    > Quoth Trans:
    >
    >
    >
    >
    >
    > > On Nov 4, 6:33 pm, Konrad Meyer <> wrote:
    > > > Quoth Joel VanderWerf:

    >
    > > > > Trans wrote:

    >
    > > > > > irb(main):001:0> Library.list
    > > > > > => ["box", "nitro", "roll", "icli", "mint", "og", "glue",
    > > > > > "tmail", "english", "webrite", "blow", "xact", "raw",
    > > > > > "ruby", "ratch", "facets"]

    >
    > > > > Any reason this returns a list of strings, and not of library objects?

    >
    > > > > --
    > > > > vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407

    >
    > > > Maybe Library#inspect just returns a string of the name? :D

    >
    > > Nah. list is a class method. inspect is an instance method.

    >
    > > irb(main):002:0> library('facets').inspect
    > > => "#<Library facets/2.0.4>"

    >
    > > T.

    >
    > Yes, I'm aware of that. I was saying maybe Library.list (class method) which
    > seems to return an array of strings in irb is actually returning an array of
    > Library instances, which each get rendered to a string by their respective
    > #inspect instance methods.


    Oh, right. I see what you were saying. Not the case though.

    It's late. I need to sleep.

    T.
     
    , Nov 5, 2007
    #14
  15. Guest

    On Nov 4, 7:17 pm, mortee <> wrote:
    > Trans wrote:
    > > As
    > > such, it represents the first important piece in my overall strategy
    > > for creating a near "zero-install" system for Ruby.

    >
    > The whole thing sounds great! Are the further planned steps secret?


    No secrets. But the time line is completely open at this point.

    The main thing is remote requiring. I've already implemented some
    working prototypes of this. I just need to give some consideration to
    how it would work best in Rolls, tie it into the system, and add
    signature support. The basic idea here is that you can require a file
    which maps to a remote location, if it's not available locally it will
    automatically go out and get it and cache/install it for subsequent
    use. Hence zero-install.

    Also, there is the potential for a traditional, but feather weight,
    package manager to better compliment Rolls that can utilize
    repositories directly rather than prepared packages. Though, this
    isn't really urgent since Rolls can actually piggy back on RubyGems in
    the mean time.

    T.
     
    , Nov 5, 2007
    #15
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. darrel
    Replies:
    5
    Views:
    462
  2. TK
    Replies:
    1
    Views:
    523
    Steve C. Orr [MVP, MCSD]
    Apr 19, 2004
  3. JenHu
    Replies:
    2
    Views:
    397
    William F. Robertson, Jr.
    Jan 28, 2005
  4. James Hunter Ross

    Roll-out with .NET 1.1 or 2.0...

    James Hunter Ross, Oct 18, 2005, in forum: ASP .Net
    Replies:
    8
    Views:
    562
    Alan Silver
    Nov 2, 2005
  5. Gianni
    Replies:
    6
    Views:
    809
    Dag Sunde
    Nov 5, 2004
Loading...

Share This Page