First off, I wanted to give an update to the previously discussed plan. We've made some demonstrable backend progress, and I wanted to outline what the near term goals are, and how we're going to get there. I'm going to keep this at a technical high level, but I'm happy to dig into the details over at Github or on msg here.
There are a few parallel efforts that I am chipping away at that are happening all at once as I keep on digging. We can put these into several big buckets:
- Get code out of the database - There's a bunch of reasons why we want to get code of the database. Security, performance, source control, and site stability are all good ones. Another more subtle one is that it allows me to make big changes all at once. I tend to push out huge swaths of code from my development environment and often it is invisible to the userbase. In fact, I've made hundreds of changes around here to stabilize and prepare us for the future with no real visible changes around these parts. This is in large part to relatively atomic deployments and is a fairly important feat. We are down to three remaining categories: htmlpages, superdocs (and the superfamily that contains them), and other. Other includes things like tickers and rooms which require some specialized but not horribly complex handling.
- Feature pare-down - We're going to eliminate features that do not comprise much of the actual real featureset here. Some of these are really old betas that some of the old coding staff left around in superdoc form. Some of these are features that only exist because we don't have real object model encapsulation, like messages cc'ing yourself when they get sent. That will get cleaned up as we go feature by feature.
- Encapsulate functions in objects - This has the largest rewrite version underway, but we're eliminating the flat namespace that exists due to the Everything::HTML globals. This is going to unduplicate a ton of code that has been sprinkled and lightly modified across the database. The new API functions all work correctly and we're following that model there. Everything::Request represents all a controller needs to make an display. Everything::Node is a true object that holds some functionality, even though it emulates the old backend until the ORM gets implemented.
It's going to be a long way around to get there, eventually touching every single piece of code on the site a few times until we get it right, but once we do, it's going to make this place a lot more nimble.
We do have a near term goal however, and that is a real, responsive mobile interface. This means doing a lot of CSS heavy lifting, and I'm going to be incorporating Bootstrap. This is going to be a total UI revamp that's going to start to do the right things for user interface. It will likely come in phases, but your old stylesheets will continue to degrade in effectiveness. We are likely to only support two color schemes, a normal and a dark version. About 55% of our traffic is mobile, and we are penalized in search engines for not having a good mobile UI. We'd like to correct that and put us on a really stable footing towards growth.
I have some rough initial wireframes done, but I am going to do a rough pass to see how that looks in alpha-quality UI work soon so I can get public commentary on it. Hopefully we'll have something more major to show for it in a few weeks.