Work continues

The theme of this month is going to be continuing to pay down our technical debt. The current push is to get code out of the database. I am referring to this as "delegation", because the system is asking a perl module to handle htmlcode requests if it has one. This is an interim layer that allows me to make measured progress towards this goal without breaking the site. This presents several distinct advantages:

  • A git pull will atomically update the code, rather than needing to create a very finicky database utility that would push into the codebase.
  • Eventually makes developer contribution easier, as we can work entirely out of pull requests in github.
  • Allows sweeping refactors to happen
  • Performance gains due to fewer eval()s
  • Makes code more debuggable, allowing for the Debian squeeze modernization, an effort that we tried to undertake and failed due to random problems.
  • It forces a full-code audit to see what we are using

As a part of this effort, themes (but not styles) have gone away last month, and I am continuing to unwind their tendrils from the codebase. The eventual goal is to pull out superdocs, htmlpages, and containers into a template-driven system and make actually controllers which don't directly blast things onto the page. To do that we need modern libraries. To do that, we need squeeze. To do that, we need to be able to debug opcode and htmlcode problems. To do that, we need to delayer the eval() nonsense.

Once we're fully delegated, we're going to change the way opcodes and htmlcodes work, so that they never try to call eval(), they simply always go to the perl module.

The transparency of the site isn't going to fundamentally change; we just won't allow code editing through the interface.


Aug 1, 2014

Aug 2

Tonight, I killed the codehome feature, which means that users who are administrators can't execute perl code on their homepages. This was a long time coming; it was a piece of code I put into the database to allow me to run stuff even if something happened to the "gods" group.

Aug 4

Aug 5

Aug 6

    Deletions:
  • formatButton. Also removed the formatButton CSS bits from four stylesheets

Aug 7

Also updated the google analytics code which tracks site traffic

Aug 8

Fixed the chatterbox reply link for eddie messages. Thanks to borgo for the report. This was actually kind of an obscure "bug" caused by the htmlcode dispatcher, and the way it mangles arguments to support templating nonsense. I can't wait until we're not doing anything silly like that anymore. Also a duplicate "my" was throwing a warning

Aug 9

Aug 10

Aug 11

Aug 12

Aug 13

Aug 14

Aug 15

Fixed an odd error found by Clockmaker where publishing as everyone doesn't work for non-gods. Weird, deep bug that got exposed, but is working now.

Aug 16

Also removed the ability for Everything::HTML to evaluate htmlcodes; it will always choose delegation or throw an error

Cleared out extra compiled code invocations in show writeups

Aug 17

On to opcodes, undebuggable piles of junk:

Aug 17

More opcodes:

Fixed a duplicate sub in Everything::Delegation::htmlcode: Subroutine Chatterbox_nodelet_settings redefined at /var/everything/ecore/Everything/Delegation/htmlcode.pm line 14610;

choose theme view page had a problem with a poorly called htmlcode (case-sensitivity). Thanks bingbot for filling my error logs

Aug 18

Aug 19

Removed the Everything::HTML::stripCode stuff from the codebase

Fixed an error in Settings

Fixed a problem with drafts where you could see a private draft if there wasn't another node there. Thanks to alex for the report.

Aug 21

Cut the website over to Debian Wheezy from Debian Squeeze. This is not a small change; if you see any site strangeness, let me know immediately

Aug 22

  • Fixed a typo in the CME message on bookmarks
  • Fixed a password change error
  • Delegated the remove opcode
  • Fixed a symbol problem in unpublishwriteup
  • Old typo in usergroupGods
  • Two additional symbol problems in Delegation::htmlcode;
  • Fixed an old, undetected problem in the usergroup code of BoE

Aug 23

Fixed bad logic in the Debriefing Room code

Dug to the bottom of what was going on in the voting code

Delegated, checked, and blanked every existing opcode.

Did a Javascript audit: (number times in the includedJS attribute, site wide)

E2 Nodelet Collapser (1786409): 37
Deferrer (2024791): 1
jstest (1983490): 7
empty javascript (1916933): 8
chatterbox script (2007114): 1
Nodelet Switcher (1874173): 118
Writeup AJAX (1930065): 64
Zen Nodelet Collapser (1872965): 17
default javascript (1874924): 22
Nodelet Section Collapser (1872990): 26
musical appreciation (2020854): 1
prole's enhancements (1982974): 26
Everything2 Ajax (1878034): 2124

Took a cut at cleaning out some old javascript:

no longer allow for default javascript in includedJS

Aug 25

Fixed a bug where editors couldn't actually view drafts for review.

Repaired my chatterlight

Aug 27

Working on integrating pukesick's pull request for a Message Outbox functionality

Reviewed and pushed it to production. Thanks pukesick