14

Let's talk about Everything2.

 3 years ago
source link: https://qntm.org/e2code
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Let's talk about Everything2.

2008-01-08 by qntm

Everything2 is a site very dear to my heart. It's a writers' site, originating in 1999. I joined there a little over six years ago. I have been writing for the site for most of that time.

E2 was built in 1999 and almost nothing has changed since then. It's very Web 1.0. For example, the site uses tables in its markup. The FAQ is written like a self-indulgent series of in-jokes; every FAQ entry has been blown up to essay length by its creator. It is clumsy and clunky to navigate around. Amazing new features are constantly promised and rarely show their faces. Sometimes different new features turn up, unannounced; they generally provide attention-diverting toys and never, ever, fix actual site problems. For example, once you reach level 6, you can have an image on your home node. The home node image uploading system, however, has been broken for two years. Meanwhile, the administration promises that "soon, finally, you will be able to add multimedia content to nodes!" It's a joke. Nobody wants multimedia content in their nodes. This is a writers' site. We want text. We want the site fixed. And multimedia content is never going to happen anyway, for reasons I'll elaborate upon shortly.

I love E2, I love it dearly. It predates Wikipedia, was unbelievably popular when it first launched, and I think its model offers a huge amount that Wikipedia does not. We allow fiction, to begin with. Unlike thisisby.us, we let you retain ownership of your work. E2 has been haemmorhaging users and content for years, because of its dated interface, but I believe E2 can be the biggest site ever. I want E2 to be successful. I have faith in the model.

Recently, serious efforts have been made to drag E2, kicking and screaming, into the 21st Century. For example, the new Zen user theme was introduced, which uses CSS to style the user interface instead of deprecated <table> and <font size="-1"> tags. That was a massive step in the right direction. A competition was held, in which we were challenged to create a stylesheet for E2. I came second. Soon, our work will become the default theme for guest users - E2 will no longer appear in black and white Arial with splashes of vomit brown. E2 will look good. That's an amazing step forwards and it took a lot of work. Congratulations.

Then, continuing to focus on the low-hanging fruit, I joined the e2docs team and pitched in rewriting the FAQ so that it all makes sense, appears in a logical order, is as short as humanly possible, doesn't link to irrelevancies, is all under the control of the same team, and so on. Still a work in progress at the moment, but another good step forward. I campaigned for and successfully received a note on the front page which explains what E2 is. Soon, E2 will actually be comprehensible to the newcomer, and to hell with anybody who feels that E2 should be intentionally obfuscated, so that only people prepared to "put in a bit of effort" actually get anywhere. Great!

Next, the levelling system - the system which gives out powers such as voting, based on how much you've contributed. We recognised several factors which provide negative reinforcement - which encourage people to stop writing. We are taking a careful approach to determining what we want from the system before we rebuild the system itself from the ground up. Good.

So after getting my hands dirty in all these various areas for improvement, and having built a content management system for my own website just recently, I felt this might be a good time to actually wade into the code itself. I was invited to edev, the development usergroup, and granted the special "viewcode" button which lets me see how a given page is programmed. E2 is written in Perl, which I know nothing about, but the similarities with PHP and my familiarity with HTML let me submit a few patches, implementing beneficial cosmetic changes. These were accepted by other edevites. I then decided to try to submit something more elaborate, which would actually alter the code on a given page, and asked my fellow edevites how to test a patch before submitting it, and the reply hit me like a bombshell.

Nobody in the administration, and nobody in the developer usergroup, has the power to do anything but alter the live site.

There is no way to preview a change before applying it.

There is no test site.

There is no rollback facility.

There is no way to test changes to E2.

My mind boggled at this. I was shell-shocked. I was dumbfounded. My fingers shook.

Maybe E2 predates such practices? Hell no. I have no formal programming training at all. But when I came to construct qntm.org, the first thing I did was recognise that I would need a way to test changes offline before letting them become visible online. So I installed a server on my home computer to test the site before making it live. I decided that this would be a good idea of my own accord. I have no formal programming training, and no experience with versioning systems (which E2 also lacks), but even I, a mere primitive caveman, recognised the need for a test site. I can only assume, then, that E2 predates human intelligence! Or perhaps it was built by fools.

So, for everybody wondering: This is why.

This is why nothing is ever fixed on Everything2; because everybody is using it live, nothing can be altered unless it can be altered in a few seconds. And because nothing can be tested, every patch submitted must work perfectly, or the site breaks. Can you imagine submitting a change to more than a single line of code in such a situation? E2 is fossilised. It can't be patched up. Not ever. This is why E2 is such a mess of dozens of new features all jostling for position in the system and making the place more complicated - because the original features can never be touched. E2 can never become less complicated, because all the existing features that we might want to strip out or consolidate are in use. This is why there are so many chunks of random code all over the nodegel - because people are testing things out on the live site, and simply making sure that nobody encounters errors by not telling them that the test code exists. Some site problems - like the chatterbox not updating live - have multiple third-party fixes instead of a single officially sanctioned patch.

And we are told to expect multimedia nodes? Don't make me laugh!

One last madness.

Everything on E2 is a node. When I click the "viewcode" button, I see the code for that node, as pulled out by another wodge of code called "listcode". Listcode is, itself, a node whose code I can list, patch and modify.

So the Everything2 patch system is capable of modifying itself. It is capable of making itself unusable. And if that happened, there would be no way to revert the change because the patch system would be broken.

What do I do? I love E2. I believe in E2. But E2 cannot be saved. Nothing can fix this mess. We need Everything3. I'm tempted to build it myself. I have the technology.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK