We’ve just helped launch a new public-facing website, and it’s entirely built with GemStone and Seaside. The site is OurCatholicNeighborhood.com, and it provides content-managed pages for Catholic parishes, hospitals, schools, and charitable organizations. The site is supported by advertising, but not in the traditional sense — it’s more like “back of the parish bulletin” advertising. Behind the scenes, there are numerous management and review tools with hierarchy-based access control. This is all found under the “local” area, which is the dominant area of the site at present.
The site is currently running on Seaside 2.8, but we have plans to upgrade to 3.0-rc1 now that GemStone 188.8.131.52 is out. The web front end is lighttpd (naturally), and it integrates with Authorize.net using a cURL binding built in our own custom FFI (very similar to Alien, but hacked for x86_64). We built it in Pharo and deployed to GemStone; the GLASS environment (coupled with our own unit tests) made this pretty easy.
The entire project took one highly-distracted developer (me) 6 months to complete.
In a way, it’s significant to note what we’re not doing in this app:
- We’re not using any render caching: every page on the site is built on the fly every time it’s requested.
- Search results are not cached; every time a user uses the search bar, we scour the entire object tree looking for matches. Granted, this is a limited search — but for the number of instances we visit (belonging to 9 or 10 different classes), the system is surprisingly snappy. In my experience, SQL queries of this sort are nowhere near this fast.
- We’re not using any GemStone performance enhancements; this is an out-of-the-box configuration.
- We’re not currently using a paid license; everything we need (for now) fits within the scope of the free web edition.
The site is still very much a work in progress, as all sites are, but I thought it worth publicizing since most of our other Seaside apps are private. As is often the case, the people funding the website development didn’t care what technology was used to implement it — so long as it was up to the task. This gave us an opportunity to throw our favorite set of tools at the problem, and (so far) everyone is extremely happy with the results.
Benedictus Iesus in sanctissimo altaris Sacramento.