Ruby Web Application Framework Roundup

I’m trying to decide which Ruby web application framework to use (if
any) for a new project. To that end, I’m looking for all Ruby web
application frameworks that are out there. Following is what I have so far.

Am I missing any major contenders?
Has anyone actually used any of these on a full project? If so, what was
your experience with it? (Flexibility? Ease of learning? Ease of use?)

Name: Arrow
URL: http://www.rubycrafters.com/projects/Arrow
Status: Alpha
Update: 2004-Jan-19
Server: Apache/mod_ruby
Docs: In progress…not bad.

Name: Mortar
URL: http://fallingsnow.net/ruby/
Status: 0.9alpha
Update: 2004-Jan-24
Server: WEBrick, cgi, or mod_ruby
Docs: None

Name: Cerise
URL: http://rubyforge.org/projects/cerise/
Status: 0.5 "Stable"
Update: 2004-Jan-4
Server: Self
Docs: Piecemeal via links at http://cerise.rubyforge.org/

Name: CGIKit
URL: http://www.spice-of-life.net/download/cgikit/index_en.html
Status: 1.0b7
Update: 2003-Apr-17
Server: Self (?)
Docs: Reasonable, but written by non-native-english speakers.

Name: Borges
URL: http://segment7.net/ruby-code/borges/
Status: 1.0a3
Update: 2003-Jan-27
Server: WEBrick (Apache + DRb ‘soon’)
Docs: RDoc reference only…no documentation (that I could find)

Name: radical
URL: http://idanso.dyndns.org:8081/rportal/ (broken)
Status: 0.7 (under “rapid development”…as of september)
Update: 2003-Sep-13
Server: Self
Docs: ? (server broken)

Name: div
URL: http://www2a.biglobe.ne.jp/~seki/ruby/index.en.html
Status: 1.2 "usable"
Update: 2003-Feb-07
Server: dRuby, WEBrick, cgi
Docs: ? (japanese only)

Name: Ruby Publishing Framework
URL: http://software.terralab.com/framework/ (broken)
Status: 0.5.3 (‘very alpha’)
Update: 2002-Jan-31
Server: Apache/mod_ruby
Docs: ? (server gone)

Name: Ruby Web Application Framework
URL: https://sourceforge.net/projects/ruby-waf/
Status: 0.2 alpha
Update: 2001-May-30
Server: ?
Docs: Some (raw text only)

Name: SBSM
URL: http://www.ywesee.com/index.cgi?SbSm
Status: 0.6beta
Update: 2003-Sep-23
Server: ?
Docs: ? (no?)

Name: Wakaba
URL: http://www.blue.sky.or.jp/atelier/ruby/wakaba/
Status: 0.1
Update: 2002-Sep-10
Server: ?
Docs: no

Another one is here:

http://rubyforge.org/projects/labyrinth/

Haven’t used it, just figured you’d want to include it…

Yours,

Tom

···

On Mon, 2004-02-02 at 11:49, Gavin Kistner wrote:

I’m trying to decide which Ruby web application framework to use (if
any) for a new project. To that end, I’m looking for all Ruby web
application frameworks that are out there. Following is what I have so far.

Am I missing any major contenders?

I hope you are planning to post the results of your survey somewhere
(RubyGarden?), as I would be very interested in the results.

Thanks,
Curt

Gavin Kistner wrote:

···

I’m trying to decide which Ruby web application framework to use (if
any) for a new project. To that end, I’m looking for all Ruby web
application frameworks that are out there. Following is what I
have so far.

Am I missing any major contenders?
Has anyone actually used any of these on a full project? If so, what was
your experience with it? (Flexibility? Ease of learning? Ease of use?)

Name: Arrow
URL: http://www.rubycrafters.com/projects/Arrow
Status: Alpha
Update: 2004-Jan-19
Server: Apache/mod_ruby
Docs: In progress…not bad.

Name: Mortar
URL: http://fallingsnow.net/ruby/
Status: 0.9alpha
Update: 2004-Jan-24
Server: WEBrick, cgi, or mod_ruby
Docs: None

Name: Cerise
URL: http://rubyforge.org/projects/cerise/
Status: 0.5 “Stable”
Update: 2004-Jan-4
Server: Self
Docs: Piecemeal via links at http://cerise.rubyforge.org/

Name: CGIKit
URL: CGIKit
Status: 1.0b7
Update: 2003-Apr-17
Server: Self (?)
Docs: Reasonable, but written by non-native-english speakers.

Name: Borges
URL: http://segment7.net/ruby-code/borges/
Status: 1.0a3
Update: 2003-Jan-27
Server: WEBrick (Apache + DRb ‘soon’)
Docs: RDoc reference only…no documentation (that I could find)

Name: radical
URL: http://idanso.dyndns.org:8081/rportal/ (broken)
Status: 0.7 (under “rapid development”…as of september)
Update: 2003-Sep-13
Server: Self
Docs: ? (server broken)

Name: div
URL: I like Ruby.
Status: 1.2 “usable”
Update: 2003-Feb-07
Server: dRuby, WEBrick, cgi
Docs: ? (japanese only)

Name: Ruby Publishing Framework
URL: http://software.terralab.com/framework/ (broken)
Status: 0.5.3 (‘very alpha’)
Update: 2002-Jan-31
Server: Apache/mod_ruby
Docs: ? (server gone)

Name: Ruby Web Application Framework
URL: Ruby Web Application Framework download | SourceForge.net
Status: 0.2 alpha
Update: 2001-May-30
Server: ?
Docs: Some (raw text only)

Name: SBSM
URL: http://www.ywesee.com/index.cgi?SbSm
Status: 0.6beta
Update: 2003-Sep-23
Server: ?
Docs: ? (no?)

Name: Wakaba
URL: http://www.blue.sky.or.jp/atelier/ruby/wakaba/
Status: 0.1
Update: 2002-Sep-10
Server: ?
Docs: no


Incoming mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.566 / Virus Database: 357 - Release Date: 1/22/2004

define application framework. Maybe amrita could fit in here?

···

il Mon, 02 Feb 2004 16:45:15 GMT, Gavin Kistner gavin@refinery.com ha scritto::

I’m trying to decide which Ruby web application framework to use (if
any) for a new project. To that end, I’m looking for all Ruby web
application frameworks that are out there. Following is what I have so far.

Am I missing any major contenders?
Has anyone actually used any of these on a full project? If so, what was
your experience with it? (Flexibility? Ease of learning? Ease of use?)

Iowa. There is a Sourceforge project for it, but what’s there is old and
not suitable for a production project.

I’ve been working on it privately for almost two years now, though,
expanding it as necessary to meet my production needs. I’ve got some very
large and very complex stuff written in it, being used in production. The
largest is a 220k line application (not counting the HTML content) for
real estate appraisers. The most complex is part of a framework for a
mutual fund site that, inaddition to lots of dynamic content, has a design
where the same URL maps to two different pieces of content depending on
whether one is a regular user of a fund adviser. So, in essence, the
entire site is one big application that looks and operates like a regular
web site. I’ve got somewhere around 20 different production sites and
applications using it in some capacity, with millions of hits a week.

Go to docs.enigo.com/iowa to see some oldish, neglected documentation
based on some of Avi Bryant’s original documentation. That site is
currently being reworked to run under a site management system that I’m
putting together with Iowa, as is my main homepage, but there’s a bit of
stuff there. Documentation is still weak, though.

In the past two weeks I have been working hard to take my current
incarnation of Iowa and prepare it for a release once again. It’s
currently in a pre-release state, as there are some known bugs with some
new features that I have added, and my new documentation is not complete.
However, if anyone is curious, I can put up for download a tarball of the
entirely private (i.e. no documentation other than the internal rdoc
targetted comments, little install help other than a basic installer and
some comment based documents, no frills) version that most of my
production stuff is running on at the moment.

Iowa is the precursor to Seaside (runs under Squeak Smalltalk) and Borges.
Those both contain some ideas that I’m going to borrow back into Iowa, but
I have taken it in a bit different direction, including building in the
capacity to do basic dynamic content pages in it (i.e. mapping components
to specific URLs for things less than full applications) quite easily.

I love it as it lets me keep my code and my content seperate, and it lets
me easily leverage the power of Ruby for all of the complex bits. I can
also hide all of the state management from the user by letting Iowa keep
it all serverside, or, if necessary, I can utilize cookies and parameter
passing if I really need to, as well as manipulate the HTTP header sent
back tot he browser in other ways (for example, change content type for
downloadable data).

Kirk Haines

···

On Tue, 3 Feb 2004, Gavin Kistner wrote:

I’m trying to decide which Ruby web application framework to use (if
any) for a new project. To that end, I’m looking for all Ruby web
application frameworks that are out there. Following is what I have so far.

Am I missing any major contenders?
Has anyone actually used any of these on a full project? If so, what was
your experience with it? (Flexibility? Ease of learning? Ease of use?)

Gavin Kistner wrote:

Name: Borges
URL: http://segment7.net/ruby-code/borges/
Status: 1.0a3
Update: 2003-Jan-27
Server: WEBrick (Apache + DRb ‘soon’)
Docs: RDoc reference only…no documentation (that I could find)

I’ve not built a production app with this, but I did extend the sushiNet
example app (implemented the checkout cart, for example), to help with
an unrelated web testing demo.

It worked pretty well, but if one was to use it for a prod app, IMO:

  • be prepared to dive some into the Borges code to figure out some
    things and bug fix others
  • it’s very memory intensive (that, or I’m doing something wrong).
···


Chris
http://clabs.org

Am I missing any major contenders?
Has anyone actually used any of these on a full project? If so, what was
your experience with it? (Flexibility? Ease of learning? Ease of use?)

Name: Arrow

Name: Mortar

Name: Cerise

Name: CGIKit

Name: Borges

Name: radical

Name: div

Name: Ruby Publishing Framework

Name: Ruby Web Application Framework

Name: SBSM

Name: Wakaba

Was tdiary ever added to this list?

Is this information on the Rubygarden wiki?
If so, I couldn’t find it.

···

On Tuesday, 3 February 2004 at 1:49:51 +0900, Gavin Kistner wrote:


Jim Freeze
Arbitrary systems, pl.n.:
Systems about which nothing general can be said, save “nothing
general can be said.”

gabriele renzi wrote:

define application framework. Maybe amrita could fit in here?

Damn…I was afraid someone would call my bluff :slight_smile:

OK, in all honesty, I’m not sure precisely what the term means. (Or
perhaps it’s (ab)used to mean multiple things.)

My particular end goals for this upcoming project are:

  • A common set of features in the application core (e.g. calendar,
    message board, media library, various hierarchies of pages).

  • CMS for various pages and pieces. (User accounts, permissions on who
    can edit or create content, etc.)

  • For multiple clients buying into the package (all on the same host),
    the ability to skin the output uniquely per client. (I don’t much care
    how this is accomplished; could be common XML + unique XSLT per client
    (merged on the server, not client), or perhaps some sort of template
    abstraction hierarchy.)

I certainly don’t expect anyone to have developed this dream
applications as a free ‘framework’. What I’m looking for is:

  • Something that may speed development time. (Perhaps handles CMS issues
    well, or makes common things like client+server side form validation
    trivial.)

  • Something that adds strong features. (Perhaps a template/caching
    system which improves performance by not hitting the database multiple
    times every time a page is requested.)

  • Something that is flexible. (I don’t want to be constrained by the
    system as to what I can and cannot do with the end application.)

It’s rather vague, I know. This is partially due to secrecy concerns;
partially because we’re not far enough along in the project to know
precisely what features we will be implementing; and partially because
I’ve never used a web application framework before, and so don’t what
one offers.

Clear? Confusing? Does that provide enough details to at least help you
help me? :slight_smile:

···


(-, /\ / / //

Hi Kirk,

···

On mar, fév 03, 2004, Kirk Haines wrote:

In the past two weeks I have been working hard to take my current
incarnation of Iowa and prepare it for a release once again. It’s
currently in a pre-release state, as there are some known bugs with some
new features that I have added, and my new documentation is not complete.
However, if anyone is curious, I can put up for download a tarball of the
entirely private (i.e. no documentation other than the internal rdoc
targetted comments, little install help other than a basic installer and
some comment based documents, no frills) version that most of my
production stuff is running on at the moment.

If this is a “quick” task for you, I’d love to have a look at your
pre-alpha-undocumented release.

Or else i’ll wait for your release… just like a kid waits for
christmas :slight_smile:

Good Luck,
Pierre.

Pierre Baillet
It is a good viewpoint to see the world as a dream. When you have something
like a nightmare, you will wake up and tell yourself that it was only a dream.
It is said that the world we live in is not a bit different from this.
Ghost Dog - The Way of the Samouraï

Kirk Haines wrote:

Iowa is the precursor to Seaside (runs under Squeak Smalltalk) and Borges.
Those both contain some ideas that I’m going to borrow back into Iowa, but
I have taken it in a bit different direction, including building in the
capacity to do basic dynamic content pages in it (i.e. mapping components
to specific URLs for things less than full applications) quite easily.

Does Iowa use continuations like Seaside\Borges, then?

···


Chris
http://clabs.org

Chris Morris wrote:

Gavin Kistner wrote:

Name: Borges
URL: http://segment7.net/ruby-code/borges/
Status: 1.0a3
Update: 2003-Jan-27
Server: WEBrick (Apache + DRb ‘soon’)
Docs: RDoc reference only…no documentation (that I could find)

I’ve not built a production app with this, but I did extend the
sushiNet example app (implemented the checkout cart, for example), to
help with an unrelated web testing demo.

It worked pretty well, but if one was to use it for a prod app, IMO:

  • be prepared to dive some into the Borges code to figure out some
    things and bug fix others
  • it’s very memory intensive (that, or I’m doing something wrong).

I meant to add, on the upside it was easy to work with (when I wasn’t
spelunking into Borges) – it’s a cool concept and I’d be interested in
working with it again, but the memory use issue would need to be
addressed (or I just need some further education on it).

···


Chris
http://clabs.org

Good question. If someone can point out where this list is at, I’d like to
see Iowa added to it, as well.

Kirk Haines

···

On Sun, 23 May 2004 23:26:19 +0900, Jim Freeze wrote

On Tuesday, 3 February 2004 at 1:49:51 +0900, Gavin Kistner wrote:

Was tdiary ever added to this list?

Is this information on the Rubygarden wiki?
If so, I couldn’t find it.

No, the list only existed in its original post, as a snapshot look as I
was trying to evaluate and choose one. It was never meant to be
all-encompassing, definitive, or maintained. (Though if someone else
wants to steal my original post for such a maintained listing, they
have my blessing.)

···

On May 23, 2004, at 8:26 AM, Jim Freeze wrote:

On Tuesday, 3 February 2004 at 1:49:51 +0900, Gavin Kistner wrote:

[a long list of HTML Frameworks with a bit of status and overview]

Was tdiary ever added to this list?

Is this information on the Rubygarden wiki?
If so, I couldn’t find it.


(-, /\ / / //

After I sent that message, I went ahead and bundled it up, and did a quick
hack on some of the really out of date stuff on my unfinished docs site.

It’s litterally just a tarball of an old working directory.

It’ll work on 1.8.1 though there are a few warnings still to be excised
(actually, all are gone in the real pre-release). Go here:

http://docs.enigo.com/iowa/tutorial/index.html

ANd go to the installation chapter. I quickly hacked it to have a good
link and point you in the right direction. Feel free to email me if you
have any questions. I’ve got some client-facing stuff I have to get out
this afternoon, but I’ll get back to you when I can if you need anything.

Kirk Haines

···

On Tue, 3 Feb 2004, Pierre Baillet wrote:

Hi Kirk,

On mar, fév 03, 2004, Kirk Haines wrote:

In the past two weeks I have been working hard to take my current
incarnation of Iowa and prepare it for a release once again. It’s
currently in a pre-release state, as there are some known bugs with some
new features that I have added, and my new documentation is not complete.
However, if anyone is curious, I can put up for download a tarball of the
entirely private (i.e. no documentation other than the internal rdoc
targetted comments, little install help other than a basic installer and
some comment based documents, no frills) version that most of my
production stuff is running on at the moment.

If this is a “quick” task for you, I’d love to have a look at your
pre-alpha-undocumented release.

Or else i’ll wait for your release… just like a kid waits for
christmas :slight_smile:

Yes, it does. I have not used Borges. Just read Seaside docs in order to
prepare to borrow back some of what Avi has done with it into Iowa.
However, I just read your email about Borges and memory usage. With Iowa,
on a Linux (RedHat) box, my resident set size for the app that is handling
the large dual mapped content mutual fund website is about 13.5 meg.

This is the largest resident set size except for one application that
generates some very, very long HTML reports. The huge size of the
generated pages consumes more RAM. I thin kthe RSS on this one is about
50 meg.

Kirk Haines

···

On Tue, 3 Feb 2004, Chris Morris wrote:

Does Iowa use continuations like Seaside\Borges, then?

Gavin Kistner wrote:

gabriele renzi wrote:

define application framework. Maybe amrita could fit in here?

Damn…I was afraid someone would call my bluff :slight_smile:

OK, in all honesty, I’m not sure precisely what the term means. (Or
perhaps it’s (ab)used to mean multiple things.)

My particular end goals for this upcoming project are:

  • A common set of features in the application core (e.g. calendar,
    message board, media library, various hierarchies of pages).

  • CMS for various pages and pieces. (User accounts, permissions on who
    can edit or create content, etc.)

  • For multiple clients buying into the package (all on the same host),
    the ability to skin the output uniquely per client. (I don’t much care
    how this is accomplished; could be common XML + unique XSLT per client
    (merged on the server, not client), or perhaps some sort of template
    abstraction hierarchy.)

I certainly don’t expect anyone to have developed this dream
applications as a free ‘framework’. What I’m looking for is:

  • Something that may speed development time. (Perhaps handles CMS
    issues well, or makes common things like client+server side form
    validation trivial.)

  • Something that adds strong features. (Perhaps a template/caching
    system which improves performance by not hitting the database multiple
    times every time a page is requested.)

  • Something that is flexible. (I don’t want to be constrained by the
    system as to what I can and cannot do with the end application.)

It’s rather vague, I know. This is partially due to secrecy concerns;
partially because we’re not far enough along in the project to know
precisely what features we will be implementing; and partially because
I’ve never used a web application framework before, and so don’t what
one offers.

Clear? Confusing? Does that provide enough details to at least help
you help me? :slight_smile:


(-, /\ / / //

You’ve pretty well described Zope.org. When you’re done porting that to
ruby, please send me a link to the code :wink:

Hello Gavin,

* Something that adds strong features. (Perhaps a template/caching
system which improves performance by not hitting the database multiple
times every time a page is requested.)

Thats a common technical misunderstanding.
Only very very few database queries can be hold in caches when this is
done on a general level. This is why you still write applications !

And from my experience i would skip all mod_ruby solutions and go with
fast CGI and session affinity or a simple fast CGI external server if
performance requirements are not so high.

···

--
Best regards,
Lothar mailto:mailinglists@scriptolutions.com

Do you mean this?

Kirk Haines wrote:

···

On Sun, 23 May 2004 23:26:19 +0900, Jim Freeze wrote

On Tuesday, 3 February 2004 at 1:49:51 +0900, Gavin Kistner wrote:

Was tdiary ever added to this list?

Is this information on the Rubygarden wiki?
If so, I couldn’t find it.

Good question. If someone can point out where this list is at, I’d like to
see Iowa added to it, as well.

Kirk Haines

Kirk Haines wrote:

With Iowa,
on a Linux (RedHat) box, my resident set size for the app that is handling
the large dual mapped content mutual fund website is about 13.5 meg.

How does Iowa store each continuation stack (which is my own, uneducated
term – same thing as the resident set size?) ? From my unscientific
checking of Borges, it seemed each continuation got its own place in
memory, so virtually every page visit triggered another usage chunk, and
it seemed to grow very quickly with just one user. If Eric’s reading
this (Borges author), maybe he can chime in with some more specifics.

···


Chris
http://clabs.org

paul vudmaska wrote:

You’ve pretty well described Zope.org. When you’re done porting that to
ruby, please send me a link to the code :wink:

Ditto. Ditto. Ditto. Zope is pretty much the only reason I ever use any
Python. There are a lot of things I don’t try to do with Zope because
I’ve never invested the learning effort into python like I have with ruby.