Hello E2 Community!
I wanted to announce a few feature changes that have happened around the site. I've been working on a number of modernization projects around here, but along the way I'm trying to address a few stability issues. One such issue is that I believe (with not a ton of evidence) that one of the instability problems is caused by the HTML parsing code that we have. The parser, up until the time of this writeup, was a hand-spun set of code and custom regexes that wasn't thoroughly tested. I've already squashed a few infinite recursion bugs in it over the years, so instead of continuously trying to improve it, I've decided to replace it entirely with something based on HTML::Defang and HTML::Scrubber.
This replacement has some implications for site HTML that I want to make people aware of. First, the new scrubbing module is configured identically to the previous. There is no change in support for supported HTML tags. It should be better for the site overall because it doesn't loop the same way, and thus I don't think it'll be susceptible to the same issues. Second, the quirks output may be different for broken HTML. If you see writeups rendering weirdly, let me know, and we can try and debug whether this is because the HTML is janky and we're just doing our best with it (unclosed tags, etc), or if it's an issue with the new parser. I've tested the heck out of it and it looks safe for 99% of the use cases we have, but TBD once we see the world of input
Over the next few months, I have three principal focus areas:
- Continue the move to React - This will allow us to have a modern front end and ditch a lot of the jQuery tendrils that are deep within the main features of the site. Currently I'm redoing the nodelets since these are an expensive part of the page and easy enough to inject in the current layout. It should be visually seamless, but you'll notice a split-second difference in how the page renders.
- Done! This turned out to be easier once everything got built properly
Cutover to ARM - Amazon has Amazon silicon which is about 25% cheaper based upon the ARM or aarm64 architecture. I have a working build of E2 on that architecture, but there are some cloud engineering problems I'm working past.
- Refactor of show content - In support of React and just having a better handle on the code tendrils, I'm attacking show content, which is a very compact, but hard to understand piece of code for creating callback based output. To help untangle that, I'm pulling things out to their own functional areas.
- Retire Mason - I did some work to pull code out of the database and was targeting Mason2, but that template system is a bit long in the tooth and the front-end push to ReactJS is considerably smarter, so am working on that.
The goal is still to work towards a CSS refactor and a modern UI. At a certain point, we will have to finally eliminate themes and move towards a fully modern UI integrated with Webpack, but the current generation asset management stuff is powerful and flexible enough to sit tight.
Financial health of the site is good. I've implemented cost controls and we now have a very manageable cost rate in line with our advertising earnings. No plans to change monetization any time in the near future
More as I have it