[Bese-devel] UCW vs Seaside (and Scheme)

Marco Baringer mb at bese.it
Tue Sep 6 09:22:35 UTC 2005


Waldo Rubinstein <waldo at trianet.net> writes:

> I understand that continuations and tail-call optimization are native
> to Scheme. However, I like the UCW-way rather than what I have read
> on Scheme for web development. Granted, UCW is still in its
> childhood, as some refer, but that doesn't scare me much. When I
> started with rails, you could say it might have been at the same
> stage as UCW, but with alot of suggestions from a very active
> community and a dedicated team of developers, rails evolved very
> rapidly.

just for the record: tco and continuations are two completely
orthogonal techniques. tco is basically an optimization technique (if
you had an infinite stack you'd never _need_ tco) while continuations
actually allow you exrpess things which previously were unexrpessable
(or very very difficult to express).

ucw is a niche library running in a niche language, i strongly doubt
we'll ever have a community as big as rails'. so it goes.

> Since my original posting, I have been studying more Lisp and reading
> more white papers and case studies. The more I read, the more I feel
> Lisp offers a better environment for effective and scaleable
> development. Even reading some articles from way back when, where
> Lispers described more or less the development life-cycle in Lisp, it
> roughly detailed what Xtreme Programming is now, but more than a
> decade before the term was coined.
>
> Like you, I don't necessarily get pulled into something because of a
> nice GUI IDE. To some degree, I prefer console and Vi/Emacs as well
> as being in control of the system processes that run my applications.
> Everything I develop is web based and it runs on remote servers, and
> there is nothing better than console for remote management. I agree
> that Seaside's exception handling mechanism via the web browser is
> magnificent in that it almost brings the Smalltalk environment to the
> browser for debugging purposes, but, after reading Paul Grahams
> article about Viaweb, you can do basically the same thing via the
> console connecting to the Lisp environment remotely.

i would absolutely love to be able to pop up a page with the backtrace
and the restarts, though it ain't gonna happen. smalltalk has native
continuations, common lisp doesn't and restarts are the first
casualty.

> At the same time, I don't develop applications that are accessed by
> millions of users. My business is more oriented towards business
> applications that are used within an enterprise of under 500 users. I
> go out of my way to make sure that I use open-source technologies. I
> don't believe much in paying license fees. I prefer to spend my
> moneys or any other resource I have available at supporting open- 
> source efforts. The moment they go fee-based, I simply loose respect
> because of previous history I've had with license based applications/
> tools.

well said.

> So, my typical applications run on Linux with Apache, either MySQL or
> Postgres, and some "application framework", such as rails, or Squeak/
> Seaside. Like I said before, because of the nature of my
> applications, I have to be able to easily export to CSV and be able
> to generate PDF documents on the fly, easily.
>
> During my testing of Squeak/Seaside, I tested several OODBs and
> quickly learned about its benefits, particularly for some of the
> applications I develop. I only came across a couple of efforts in
> Lisp for OODBs. One was Elephant and the other was PLOB. I haven't
> had a chance to use either one, but while reading about PLOB, I
> discovered that it requires a server application managed by U. of St.
> Andrews, but no one seems to be able to get that going (at least from
> what I read), and that piece may require license fees. Elephant seems
> promising, but then again, I haven't stressed tested it (I haven't
> stress tested anything in Lisp yet for that matter).

i'm successfully using elephant on a production server. i contacted
sleepycat (they're pretty nice people and it doesn't hurt to ask): if
you run your app on a server then you don't pay license fees, only if
you start distributing berkeley db embedded inside a desktop app do
you need to pay the fees (and that becomes prohibitly expensive for
me).

> As for PLT Scheme (the link you referred me to), it feels alot like
> Struts or something like that but in Scheme rather than Java. I don't
> know.

well, plt does have the send/suspend, which means it certainly isn't
just struts. (send/suspend is basically a lower level version of ucw's
call macro).

personally i like plt, it's just that the scheme community is too
fragmented and too pure for my tastes.

> Well, I can't relate well to the mysteries you seem to have with UCW.
> I do agree about the "mentality" you need to have and I think that's
> one of the things that encourage me more. I am productive most when I
> constantly feel challenged.

ucw has a couple of things working against it:

1) i don't have the time to write the documentation required to make
   it easy to get started with ucw.

2) continuation based apps are young, so we don't yet know what the
   best way to structure them is.

3) component based web apps are young, so we don't yet know what the
   best way to create the ui is.

> Overall, as far as UCW is concerned, I don't really know how involved
> the community is. Also, I don't know how committed the developers are
> to continually advance UCW. 

ucw is one of the main tools my company uses to develop web based
apps, as long as we can keep finding clients ucw will continue to be
developed and maintained.

>                             However, if only a fraction of what I saw
> in the rails community was active in this one, UCW could be at a
> completely different level within a month. Note to UCW team: I don't
> mean any disrespect nor do I intend on saying UCW is too infantile at
> this moment. I honestly haven't played enough with it and I'm only
> paraphrasing what others have mentioned. As a matter of fact, if
> there is anything I can contribute, I would gladly do so. It's just
> that at this moment, my Lisp skills are not at the level I would
> expect in order to contribute to such a project. However, I can
> provide plenty of ideas to contribute, as long as there is someone
> out there willing to listen and formally work on a development
> roadmap.

the best way to help ucw is to use it and see what works and what
doesn't. if you feel something could be done better than just do it
that way and see what happens. the entire ucw code base (including the
examples, yaclml, arnesi and iterate) is just over 21,000 lines
(including comments and whitespace). that's really not a lot of code,
if you feel that something should be rewritten than just rewrite it,
odds are it'll take you, at most, a few days.

if you then find that what you've written works better than what we
previously had then send it here and we'll look at it (and more likely
than not merge it in).

-- 
-Marco
Ring the bells that still can ring.
Forget the perfect offering.
There is a crack in everything.
That's how the light gets in.
	-Leonard Cohen



More information about the bese-devel mailing list