EF Computing

Eric's Inventions

Free Software Fix-Up: Oxwall

Cover Image for Free Software Fix-Up: Oxwall

I got hooked on web development and software engineering over fourteen years ago, after clicking the "HTML" button in a drag-and-drop website builder I was using for fun. Over the many years since, as web development and software engineering became my hobby and later my profession, I discovered my passion not only for building new things but also renovating those that already existed, constantly challenging myself to make the projects I've worked on more secure, cost-efficient (especially in the AWS cloud), performant, and modern.

Many years ago, I came across open-source social networking software called Oxwall, whose broad featureset enabled users to create online communities for their interests, provided they had some server space on which to run it. Since I was just exploring Oxwall in my free time and did not want to spend any money on the small, personal project I used it for, I found a generous, free web hosting provider (x10hosting, to be exact) and got an installation up and running there. I did not have to worry about Oxwall's compatibility with this hosting platform, as Oxwall was built on two core backend technologies ubiquitous in the web hosting space: PHP, a programming language whose name is a recursive acronym for "PHP Hypertext Preprocessor", for the server-side functionality, and MySQL, a popular relational database engine, for storing data generated by the site and its users. Go into the dashboard of any web hosting provider you can find, and you'll be nearly certain to find some version of both PHP and MySQL there. In many circles, PHP has a bad reputation for its idiosyncrasies as a language (and rightly so, though the language has come a very long way in just the last few years), but it's undeniable that it has made server-side web development accessible to many people and projects; for example, one of the larger names you may have heard of that got its start with PHP is Facebook.

I was quite intrigued by Oxwall, even creating my own theme atop its user interface, but my interest waned as it became clear that it was being effectively abandoned by its creators - the most recent release came out in July 2016. In the meantime, neither PHP, MySQL, nor the web as a whole stopped evolving, each gaining new, powerful features that made developing with them simpler, safer, and more performant, and expanding the possibilities for what could be created with them. All these years later, revisiting Oxwall after years away from it and seeing its current state (its repository still gets a few commits every now and then, but nothing major), I decided to embark on a new project: renovating Oxwall for 2024 and beyond. More specifically:

  • Backend: ensuring that Oxwall can run on the most modern forms of its core technologies, at a minimum PHP 8.3 and MySQL 8.2. The INSTALL.md file in the repository lists PHP 5.2.6 and MySQL 5.0 as the minimum requirements, so there may exist several incompatibilities with modern PHP throughout the system.

  • Frontend: building a modern theme that lives up to today's (and tomorrow's) standards, and modernizing other core frontend components throughout the system. I still remember the days in which Oxwall came of age when CSS vendor prefixes and jQuery (both of which Oxwall currently contains) were almost required to ensure a consistent experience across a diversity of distinct web browsers, but today's Chrome/WebKit-dominated landscape looks far different, and so too do their native technologies.

  • Bonus: Automated Testing? An essential part of any quality software development process, automated testing appears to be lacking within Oxwall. It may be a lot to handle with the other two goals, but building up the automated test suite (starting with unit tests) might be worthwhile during this process.

Will this project actually work out as I hope it will? There's only one way to find out; my aim is to to chip away at this, a little each day, posting right here on my new blog (in technical detail) about some notable observations and achievements on a semi-regular basis, until I can look back and remark about how far this project has come. For the time being, I'm keeping this project in the scope of a personal hobby, so I have no current plans to, for example, open-source my fork, merge certain enhancements back into the main Oxwall repository, though the future has yet to be written. I hope you'll stay tuned and come away with something interesting.