AOLserver is America Online's Open-Source web server (2010)
aolserver.github.io
aolserver.github.io
In 1999, I was hired by ArsDigita, a web startup that used AOLserver, mainly to provide internal development and support for AOLserver. ArsDigita used big multi-CPU Sun servers (this was long before Oracle bought Sun) and I ended up diagnosing several race conditions in AOLserver that the AOL developers had trouble reproducing because they did their dev work on single-CPU boxes.
Fun fact, ArsDigita founder Philip Greenspun (of Greenspun’s Tenth Rule) knew Robert Thau from their shared alma mater MIT. Robert Thau (rst) designed and implemented Apache’s original module API. So ArsDigita hired rst to write mod_aolserver, an Apache module that provided enough of AOLserver’s API to allow running ArsDigita’s codebase (ACS) under Apache.
It did less than AOLserver, but was also very lightweight and easy to integrate with Apache.
For a long time, https://flightaware.com/ used Rivet under the hood.
Tcl was... is a fantastic language for doing web development. Its flexible nature made it really good for doing template/PHP type stuff, and being pretty string friendly, you had a lot of what you needed out of the box.
> Tcl was... is a fantastic language for doing web development.
Except for JSON. You can't round-trip JSON through Tcl because dicts are lists are strings. There are solutions out there (https://wiki.tcl-lang.org/page/JSON), I even wrote a few of them, but in the end there is a fundamental impedance mismatch. It gets in the way of emitting JSON from quick hacks or the REPL because you essentially need an explicit schema.
For text-based templates, Tcl is good. I have written code to generate CSS in Tcl and loved how well the language fit the task.
(I found this out for CSS when I contributed a responsive stylesheet for https://www.tcl-lang.org/. I wanted a CSS preprocessor to avoid repetition, and one that would never break, at least not before Tcl did. I think it worked well. The template uses subst and some variables. It is Tcl 9-ready. :-) I recommend trying it if you do web development in Tcl.)
Also lots of stuff at Mozilla, because of Netscape. Usually signifies an older part of the Firefox codebase.
Back in 1999 I joined a startup (Intervento) that had a product based on the same ideas, we created our own Tcl module that could be plugged into either Apache or IIS, had a DB abstraction layer that would generate all CRUD stuff for each table for Informix, MSSQL, Sybase SQL, DB2, Access, Oracle, targeting Aix, HP-UX, Solaris, Windows NT/2000, (we also had Linux but it wasn't considered production ready), extensions could be furter coded in either Tcl or C, and we had an IDE written in VB 6.
We got acquired and became part of Altitude Software, eventually as MSFT partners we got early access to .NET and decided to port the same ideas into .NET, this gave us the performance that Tcl/C didn't deliver under very heavy loads, and Visual Studio.NET was better that what we managed to have with our in-house IDE.
Eventually some of Intervento founders left, and created what is nowadays known as OutSytems, one of the few successful low code companies.
It was a great experience, however as one the persons responsible to optimize Tcl code into C modules, and part of the .NET migration team, I learned to never consider languages without a JIT/AOT compiler for nothing serious beyond OS scripting tasks.
As a slight aside, I once worked on a molecular dynamics simulation program which used Tcl for the basic setup, and then performance critical parts were done in C. A fine enough approach, except that the original authors had decided that the one hammer to get good performance out of C was inlining. And they used this everywhere. Literally everywhere. Everything except for main() and some I/O functions was defined in "static inline" functions in header files.
I've always hated when APIs and types are prefixed like this. It doesn't play very well with autocompete.
Are the names some sort of cyberpunk in-joke?
Phil Greenspun wrote a book about architecting web applications ("web scale" two decades before that became a meme) that was, and still is, available for free online (https://philip.greenspun.com/panda/ ).
Greenspun had a company, ArsDigita, that created a big framework for building web applications, ACS (ArsDigita Community System), and there was an open source version of it called OpenACS that AFAIU was basically a port from Oracle to PostgreSQL (the recently released PostgreSQL 7.0 had just acquired sufficient capabilities to be usable as an Oracle substitute for ACS) but otherwise pretty much the same. Back then when a "web framework" basically meant a hodgepodge of spaghetti PHP, this was beyond awesome.
I used OpenACS to create some intranet reporting systems as a summer intern back in the day, and it was pretty good, the code was decently well structured and understandable. Though in retrospect I pity whoever had to maintain that tech stack after I left; my best guess is the system ran for a few years until they killed it off as nobody understood it since OpenACS was very much off the beaten track.
AOLserver and OpenACS both being stranded on their own little tech island, it's not surprising the rest of the world eventually caught up and surpassed them.
My own career took a different path, so I haven't kept up with the fortunes of OpenACS. Impressive it's still being developed.
I learned that there's a whole corner of the web where Japan never left web 1.0 design. The thinking being, if it ain't broke don't fix it.
God bless Japan.
Examples?
It is amazing that almost 10 years have passed since this article, but the example web sites are still more or less the same.
I guess I’m not disagreeing - I also miss Web 1.0 - but combining the two seems like throwing the baby with the bath water. Can we have self hosted AND modern?
(but I do appreciate some effort to constrain the page margins. :) )
Andrew Odlyzko's website is much in this style: <https://www-users.cse.umn.edu/~odlyzko/>
Hal Varian's UC Berkeley pages as well: <https://people.ischool.berkeley.edu/~hal/people/hal/papers.h...>
Both of those are highly info-dense to boot, and load near-instantly.
Early gateway drug for me too.
I feel like this is the absolute distilled essence of this site and its visitors.
Here's an old thread some of you guys might have missed: https://news.ycombinator.com/item?id=31001916
It's been steadily downhill ever since, and worth noting that it's now so awful even the late 90s/early 2000s look like utopia in hindsight.
Web design in general was garbage. Not just the good kind of garbage, with funky animations and weird colors, but horrible typography, unreadable fonts, zero accessibility, horizontal scrollbars everywhere, images used as text, misaligned tables, no math typesetting, no videos, and no interactive content without installing more garbage like Flash, ActiveX, or Java.
When writing server-side stuff, your options were basically Perl/CGI, and later PHP, both of which are insecure trash that makes today's JavaScript look sane by comparison.
The average modern blog is a masterpiece of readability, usability, and frontend/backend engineering, compared to almost anything seen on the web during its "golden age".
Ruby also had tainted values and dropped them recently https://bugs.ruby-lang.org/issues/16131
Eh, maybe. There's a lot more scrolling, sure. And whizzy CSS tricks to make things rotate and gradients and whatever. And you can download a coolio new font so the site looks like it was typed on a 1932 Royal typewriter with a crooked arm on the "G" key.
But then I go to something like the OpenBSD site, and I remember how much I liked the simplicity of Ye Olden Tymes.
Back in the bad old times, there was no problem getting something centered when using tables. CSS only got that working reliably 17 minutes ago. And while making your page look like a brochure with invisible GIFs and table layouts was kinda heavy, we've replaced it with 100MB of Javascript and an embedded WASM running Emacs.
If we had to run the modern Web on dial-up, we'd all be dead before Reddit loaded.
Well, we don't. That's a big reason why it exists today and didn't back then.
What are you talking about? That description doesn't match 99% of blogs. In fact, rotating things and gradients were a staple of the old web, not the current one.
> Back in the bad old times, there was no problem getting something centered when using tables.
Cool. Except it only works on a standard sized desktop screen. And good luck using such a site if you are vision impaired and need assistive technologies. "Bad old times" indeed.
edit it seems that Angelfire is still live, so you can view sites made on that
If AOL had open sourced it sooner it might have occupied the “A” in the LAMP stack.
AOLserver is still used in .LRN (https://dotlrn.org) which is why the GitHub repo is still alive.
AOLServer was so, so, so far ahead of it's time. It had a WYSIWYG HTML editor years before Dreamweaver that could post content to the server. The integrated (Illustra!) Database and TCL interpreter meant you could build basically anything with it. Props to Jimbo and Doug...
We built what I think might have been the worlds first massively multi-homed, self-provisioning hosting service (called, creatively, "Navi-Service") with it. Think Linode but in 1997.
“AOLserver is the backbone of the largest and busiest production environments in the world.”
: )
That title must go to Nginx or Envoy these days.
* It had a decent HTML editor that our marketing people could easily use to update news items on the website. The editor talked directly to NaviServer in a WebDAV-ish way to browse and edit the files.
* It was packaged with Illustra RDBMS for full-text search of the hosted website. Never heard of Illustra? Neither had I back then, but when I fired up the Illustra CLI, it looked awfully familiar! I quickly learned that Illustra was a commercialized version of Postgres.
* I emailed the vendor at the time for a Linux port. The response was that Linux didn't have proper threading libraries. This is back when Linux had sub-par support for threads in the libraries. I replied with a pointer to a thread on LKML about Linux kernel-level threading (IIRC, clone()) and the response was that the functionality looked similar to Irix, and they would try a port. They released a Linux port not long after.
* NaviServer didn't just serve HTML pages. It was also a basic application server due to integrated tcl. I never really mastered tcl, but I was able to build a basic repair center lookup page on the site.
All this back in the mid-90's!
In many ways, NaviServer was way, way, way ahead of its time.
Self plug: Its missing SSL. I know, but for now collects no information from the user.
This is my WIP coded in PureTCL utilising NaviServer with no JavaScript or DB; everything is a button. The clock updates on the minute and you can display and soon to set the timezones. (Africa is the only region that has timezones regions configured). Getting my head around designing a timezone UI is tricky however all are powered by socket servers too. Menus, time, content et cetera.
NaviServer really is a charm and while the "cloud" has its advantages you loose out on so much experience not self-hosting, coding in the language not as an app.
Nice. The codebase remembers RCS! (Of course it's not about missing times of RCS, I'm just pointing out the codebase is old)
https://www.cio.com/article/244398/qanda-zipcar-founder-robi...
Zipcar was a Boston company that was founded around the same time in the same milieu as Arsidigita and adopted AOLserver since it provided such incredible performance.
I'm a bit surprised they ran it for so long but it makes sense. Many of the concepts that made it so compelling at the time remain quite relevant today though the advances in all areas of HW and SW make things like ORM less of a bear than they were those days.
I hope for zipcar’s sake that Oracle was reasonable about the licensing fees…