Another month reporting from the coding department:

The big stuff

First, during the month of May, I brought revoting live, albeit crippled. I have already noded more details about that. Hopefully the issue can be resolved soon. I wrote the code in such a way that allowing revoting down will be very easy to bring live once the eds and admins decide to let us do it.

Also, OldMiner, call, and prole are now splats (*). I warmly welcome them to the dev admin team.

The other big changes this month is that we now have development server. We've always had one, in one form or another, but the big change is that this time the server is completely sandboxed, scrubbed thoroughly clean, and opened to all of edev. This is a big change. Let me ramble on more. Feel free to skim down to the changelog after the next section if you don't want to read my rambling.

On Cathedrals and Bazaars

You know my background: I'm a free coder who likes to read free code, use free code, and write free code. E2 became a free project in 2001 when the last employees were laid off and has survived ever since only because nate let others have some access to the code. E2 was built by a coder with the assumption that it would be maintained by coders. It was built when the idea of open source was just beginning to take hold in everyone's mind. Here's a dirty little secret: most of the admin functions that those noders with @ or * have are related to code things, to how to directly manipulate the database without going through the node interface, to directly manipulate any node, and so on. Most of the abilities that an @ or a * noder has require some technical skill to use effectively. Of course, many admins just concentrate on a small subset of those abilities: an @ tends to focus on the editorial abilities that admin access grants, while a * focusses on the coding abilities.

The separation of admin and editor positions is a technical curiousity due to the way e2's codebase works. Unlike any other website out there, e2 via ecore has the peculiarity that most of the code is stored in the database itself instead of external files. This means that if you want to access that code, you need to go through the web interface, which is really the ultimate purpose of having admins: unrestricted access to the underlying database, much of which is code. While discussing with raincomplex the structure of the the e3 pipedream, we realised that there was no need to have a separate admin class in that website, because we were enforcing separation of code and content from the start, all we needed were editors.

In this vein, because code is so inextricably tied with the database, edev has historically been severely restricted in how they can interact with the site code, and it's a marvel that despite that, dedicated edevites like call and OldMiner were able to contribute significantly to the site's code anyways. They were unable to know the exact details of the ecore that we are running, unable to write their own code and experiment with it without going through an @ or *. Thus, e2's codebase operated until the past few months under a cathedral model: a core group of people have direct access to the code and let very few other people interact with it.

Needless to say, this model has not worked for e2, because it is a free project. The desire to change how e2 works in various ways has never waned during the project's existence. We've always wanted changes, and the changes we have been seeing recently have been requested for many, many years, almost since the creation of the site. But these changes cannot happen if we entrust them to a few core developers: there is simply too much work for any one person to do all of it, and people working on free projects will eventually lose interest. Every coder has lost interest in the site sooner or later, nate, dbrown, wharfinger, jaybonci, kthejoker, and when they do that, they always leave little bits and pieces of subprojects lying around that don't work as desired, because software development is like that: the product is never complete. One day, I too will lose interest, as will Oolong, in10se, rootbeer277, and everyone else. I think it is important to build a foundation upon which future coders can keep working on the site after the present coders lose interest.

This is my biggest goal as a splat here: to make everyone else do my work for me. ;-) Or letting them code as they please, to give them the freedom that a free project should have. This is why the dev server opened to "everyone" (edev only, but we fully intend to allow anyone in who asks) is so important to the future existence of this site as it currently stands. We scrubbed the dev server of much sensitive data, between me, OldMiner, Oolong, DTal, and alex, so that we could let "anyone" in without reservation. This is vital, moving from the cathedral model to the bazaar model. It's the only way to ensure the site doesn't completely fade into obsolescence under the weight of bit rot.

The new bazaar model is already yielding dividends, and within a few days of opening up the dev server, DonJaime submitted a flurry of tested patches that will help us improve our site design and layout while raincomplex cooked up very quickly a chat improvement that could well replace the chatterbox nodelet with a much more responsive and friendly alternative. Worry not, even though we have granted more people access to the code, the same core members of e2coders are still the ones ultimately responsible for changing the actual code on the database. We gave easy access to creating more code, but not to making it go live.

There's still infrastructure work to be done with how development happens around here. Next month I hope to concentrate on providing automatic synching mechanisms between the dev server and the production server (where you are now), because past dev servers have suffered from the problem of quickly becoming useless because they lose synchronisation with the production server.

On the technical side of things, ecore changes will now go through the dev server, so that hopefully you won't see e2 flip out anymore when we make a mistake as we work on it.

The minutiae

Hope I didn't bore you with my rambling. Here's the breakdown of the rest of the changes around here. Since the last root log, we've had 171 patches submitted to nodes, and 14 patches for our running ecore. In addition, since the dev server was opened up a mere five days ago, 12 more patches were submitted to the development ecore, and 25 more patches to nodes on the dev server, which will soon be merged back to the production server. If you want all the real dirty details, you can follow the links to those locations and see exactly what we've been up to.

All of the node patches on the dev server are from raincomplex and DonJaime, who are furiously working, respectively, on improving our chat system and fixing our HTML and layout. Almost all of DonJaime's patches have been merged back up to the production server, and raincomplex's will soon be merged soon as he declares them ready for production.

On the production ecore, the following changes have taken place:

Direct link cleanup
A few nagging problems of how direct links were working.
CONTAINED_STUFF bug fixed
*sniff*, call's favourite bug is no more.
Revoting
Brought halfway live, hopefully the other half can happen soon.
First work towards fixing the P_I infinite ching bug
call has provided a few ideas for fixing the infamous bug, but the work isn't complete yet.
Publish our mod_rewrite rules
The rules that our Apache webserver uses to generate semantic URLs are now public, so that they can be patched via Mercurial

In addition, the development ecore has these changes which are not quite ready for prime-time, but soon will be:

mod_rewrite patch
Concerning in10se's bug report about how our URLs are generated, in10se himself has submitted a patch to our mod_rewrite rules. This patch is a good first step towards consolidating our semantic URLs.
Direct linking syntax change
Hopefully this will be the last time we change the syntax. The only change from the the last root log is that we're going to use square brackets [ ] instead of angle brackets < > because
HTML balancing code
call has provided code from his own ecore that automatically balances HTML tags, and the former direct linking syntax was interfering with his code. This code should now make it absolutely impossible for a bad writeup to damage the layout in Cream of the Cool to match these two changes, we have
Angle-bracket direct linking syntax hunter
in10se has crafted code for the purpose of hunting down what will soon be old-style direct linking syntax and automatically converting it to the new style. Once we run this code, we'll pull in the changes from the dev ecore into production.

On the production nodes, the following changes have been taking place, excluding the most boring changes:

HTML cleanup
rootbeer277 worked closely with DonJaime to clean up our underlying HTML so that it would be easier to style and modify with CSS. Both of them have submitted patches all over the place towards this goal.
More maintenance writeup tweaks
OldMiner and I submitted a few patches so that the writeups since last year statistic (which you can enable in user settings) doesn't count maintenance writeups. Additionally, maintenance writeups are no longer shown in your homenode as "latest writeup", nor will they push you to the top of Other Users. Once the e2 ticketing system is ready, hopefully maintenance writeups can be completely phased out.
Othe Users resorting
The boss asked me to change the sorting in Other Users again: it is now ordered by the time of last noding, except for users which have been here less than 30 days.
Findings: tweaks
prole finalised the layout in Findings: in order to make it easier and more consistent. The options to search again, create a scratch pad, or create a new node should now be clear, concise, and accessible.
Bookmark sorting
I yoinked some free code from the internet to sort lists, and I used that code to sort our bookmarks by title and date. Later OldMiner cleaned up the layout a little, and it could still use some improvements.
Chatterbox tweaks
BlackPawn implemented the corresponding /unignore functionality for the catbox. OldMiner provided some code so that the dice /roll command can keep the top dice.
More Scratch Pads cleanup
A few issues with direct linking in scratch pads were fixed. Furthermore, you can now set an entire usergroup as a collaborator of any scratch pad. We've also removed the Print View link from scratch pads and other places, which will soon be replaced by a CSS print layout.
albinowaxing
I've made a verb out of the albinowax's practice to search for cross-site scripting security vulnerabilities in our code and patching those holes, which happened several times this month. albinowax has also started patching his own holes instead of merely telling me to do it. ;-)
Coding infrastructure improvements
Pretty much all of the active coders have been submitting small patches here and there to improve our patch system infrastructure: improving the way that patches are displayed, applied, sorted, styled, and so on. There's still work to be done here, and although boring, our infrastructure still needs to improve so that we can keep on concentrating on producing good code.
Fix link to Everything Development Company
The bottom of all pages in e2 had a broken link to the Everything Development Company that although still had a website last year, was in fact defunct since 2001. It now points to edev, the smouldering remains of the Everything Development Company.
Bringing revoting live
Several nodes had to be patched in order to bring the crippled version of revoting live.
Automation of Everything's Most Wanted
mauler had a coding comeback and automated how Everything's Most Wanted works. Go check out his improvements!
Separation of powers in the catbox
No longer does every admin have powers in the catbox. Instead, the new chanops and e2contact usergroups, identifiable by a + sigil, are in charge of the catbox. I assigned them their powers and gave them a new badge.
Temporary new rep display
The boss asked me to change the way node reps are displayed, a temporary experiment that was undone within a few days because everyone but me hates arithmetic.
Quickvoting enabled by default
ascorbic's quickvoting code is now enabled by default. If you really miss the radio buttons, you can go enable them in user settings.
Star power
mauler now has stars for sale in e2 gift shop.
Extend search size
The search box now is not limited in size, so you can now find the silly invisible husband node by typing its name in the box.

Finally, the devel server has also seen the aforementioned patches on layout and HTML cleanup from DonJaime and raincomplex has worked on our patch system.

Current roadmap

That concludes what has happened. Our immediate goal right now is to improve the synchronisation between the dev server and the production server so that we never fall too far behind the latest cutting edge changes in the production server. Furthermore, suggestions for e2 and e2 bugs has been a little neglected this month. Once I'm content with the level of synchronisation of the two servers and confident that everyone in edev can achieve a comfortable workflow, I intend to work harder on serving noder requests (keep 'em coming!). I also expect that given the overwhelmingly negative response that current revoting has seen, we'll soon be able to enable the code for revoting downwards.

I also want to keep on working on my coding tasks, but it's been very pleasant to see that several of them are being handled by other coders! Go team!

That's all for this month. Thank you for reading. Swap → out.

Log in or register to write something here or to contact authors.