On Sun, 7 Mar 2004 03:00:57 +0900, Michael Nestler wrote:
>>I am proud to announce new release of SWS web development library.
>>
>>What is SWS?
>>
>>SWS is a web development library.  Its major design goal is to follow
>>the Model-View-Controller pattern, to take the burden of parsing HTTP
>>parameters and keeping the session information out of developer
>>shoulders and to make web applications easier to write by using reusable
>>components. It enables rapid development and easy maintaining of even
>>complex web applications, such as database ones (together with database
>>access library - SDS.

> How does SWS compare to CGIKit or other WebObjects-like frameworks? I 
> only know Tapestry (Java) and I love it, but I would also like to start 
> learning such a framework for the Ruby language. It would be great if 
> you could compare your framework if possible.

The most usual question - I think I'll add the answer to the
announcement and documentation on next release :)

Disclaimer: the comparison below can be unfair, incomplete, biased or
totally wrong - but I am writing it using my best knowledge (which may
be a bit out of date). Please correct me if I am wrong at any point.

SWS vs CGIKit: 

The biggest difference is that CGIKit (as the name suggests) supposed to
be used to create CGI and mod_ruby (= non-persistent) applications. In
contrast, SWS is designed to create persitent, FastCGI or standalone
applications. So if you want to write some short script, CGIKit may suit
you better. But if you need to implement a full-blown application, SWS
should be better.

Another differences - Session objects and binding/slot handling are a
bit simplified in CGIKit, while in SWS they are very similar to what
WebObjects offers. But in fact it is rather a small difference for the
user.

I also think SWS has better documentation now, however CGIKit docs are
good too. I just realized Suzuki has an example of addressbook and I use
such an example for a tutorial :) But this is just a conincidence, I
didn't meant to pick his brain :)

I was about to write SWS has a database library coupled with it and
CGIKit doesn't, but I entered CGIKit homepage and saw something called
TapKit, so SWS has no longer clear advantage at this point :) Yet TapKit
only supports MySQL now and SDS supports also PostgreSQL (and it is very
easy to add support for new databases).

I also want to make SWS as fast as possible without loosing the
functionality - I would like to rewrite the core in C, if it would
improve the speed. I think Ruby is really missing a library to write
serious, complex WWW applications and would like to fill this gap. I
know there is still a lot of work before me, but I would gladly see Ruby
in the areas where now Java (for example) is used. That's why I want to
create real development tools for SWS (using KDevelop and Quanta as a
base probably) - I know it is possible to write everything using Vim (I
use it myself a lot), but - using WebObjects daily at work I realize how
often simple tools like WebObjects Builder and EOModeler can save your
butt :)

After all, SWS and CGIKit are quite similar - if the biggest difference
I mentioned above wasn't there, I would be probably involved in CGIKit
development now :) There is a possibility SWS and CGIKit could merge at
some point, but right now there are too many differences in design, not
the functionality...


SWS vs Java libraries (WebObjects and Tapestry):

SWS is modelled after WebObjects, so in the areas where Tapestry is
similar to WO, it is similar to SWS too :)

SWS is intended to be as similar to WebObjects as possible, but there
are a lot of differences caused by the differences in underlying
programming languages. There are also some WebObjects concepts missing
in SWS, like D2W and external adaptors. I'd like to add some new ideas
to SWS, like internal testing capabilities, which are absent in WO.

-- 
Marek Janukowicz