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.
  • 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.
  • Done! This turned out to be easier once everything got built properly
  • 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.
  • Modernize perl dependency tracking - The current build process came out of the serverless push that turned out to be too expensive for what it was before we moved to a fully containerized app. To that end, I'm going to try and move dependency tracking to carton so that we can eventually ditch that code, move to a more resilient set of vendor library tracking pieces the same way that ruby or javascript does it.Done

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.

The number one thing impeding the growth of the site is mobile-friendliness. Google continues to penalize us for not having a site that looks good in a mobile browser. In order to get there, I need to finish the Javascript consolidation so that we will have modern support; the current Javascript stuff is all over the place and tightly coupled to specific jQuery behaviors that break in more modern versions of the library.

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

-Jay