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.
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.