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
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.
- formatButton. Also removed the formatButton CSS bits from four stylesheets
Also updated the google analytics code which tracks site traffic
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
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.
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
On to opcodes, undebuggable piles of junk:
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
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.
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
- 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
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.
E2 Nodelet Collapser (1786409): 37
Deferrer (2024791): 1
jstest (1983490): 7
chatterbox script (2007114): 1
Nodelet Switcher (1874173): 118
Writeup AJAX (1930065): 64
Zen Nodelet Collapser (1872965): 17
Nodelet Section Collapser (1872990): 26
musical appreciation (2020854): 1
prole's enhancements (1982974): 26
Everything2 Ajax (1878034): 2124
Fixed a bug where editors couldn't actually view drafts for review.
Repaired my chatterlight
Working on integrating pukesick's pull request for a Message Outbox functionality
Reviewed and pushed it to production. Thanks pukesick