[Seaside] OmniBase for Squeak

Avi Bryant avi.bryant at gmail.com
Thu Jan 27 13:09:47 CET 2005

On Wed, 26 Jan 2005 16:32:01 -0500, Bob Houston <bobh at agents.com> wrote:
> Hello,
> I understand that OmniBase has been ported to Squeak, but I can seem to
> find it.  Can someone send me a pointer?
> Also, I'd appreciate any comments from people that are using OmniBase
> for a Seaside app.

Hi Bob,

A project at a client site has been using it in production for about a
year now.  The version we use there has been modified (fixed) a fair
bit since the initial port that Cees did; if someone else wants to use
OmniBase, the best thing to do would be to get the code from us,
including, for linux, a necessary VM patch.  Unfortunately I can't
publish it yet because we're using the commercial version, which
includes the GC code, so we'll need to contact David first about what
needs to be stripped out.  I'll try to get that done ASAP.

In general OmniBase has worked pretty well for this project, but it
does have a way of infecting most of your code - it's far from a
transparent solution.  The biggest gotcha is hanging on to references
across transactions: we use one transaction per request/response
cycle, and OmniBase represents the same object by a different instance
in each transaction, which means that if you want to refer to the same
obejct in a callback that you had when generating a response, you need
to introduce an extra level of indirection that resolves to the
version appropriate to the current transaction.  This can be done
somewhat transparently using a proxy and #doesNotUnderstand: (Cees has
mentioned this PersistentReference trick before, I think), but having
so many levels of proxying can lead to problems itself... suffiice to
say, there's a bit of a learning curve involved.  On the plus side,
it's been very fast and very stable (we haven't lost any data yet,
knock wood).

Andrew Catton's been on this project longer than I have; he may have
some additional comments.


More information about the Seaside mailing list