Planning Tuskfish 2

Just a short note to say Tuskfish 2 is in the works. It's going to be a partial re-write of the back end, but there will be minimal changes on the front end or from a user experience point of view. The database schema will also remain unchanged to allow seamless upgrade. I spent months migrating my data from a legacy system to Tuskfish, I'm not going through all of that again!

The curse of programming is that, no matter how cool your code seems at the time, six months later you'll be looking back at it and wishing you'd done things a bit differently.

So what will be different this time around? Tuskfish 2 will be designed as a strict MVC architecture (actually, MVVM + controllers) to improve separation of concerns, rather than the loose MVC that it (and nearly every other CMS) has. Why? After some investigation I found that a strict MVC greatly improves both flexibility and component re-use, while minimising the amount of redundant code that is read out on any given page view. That means I can make Tuskfish more efficient.

Secondly, I will be completely abandoning the use of inheritance and designing components by composition, only. This requires a bit of a change in mindset (it's something I picked up from Golang), but done right it allows some intermediate objects to be dispensed with and allows for a simpler structure in the end.

Lastly, I will be building out a formal test suite for the revised components with an aim for 100% test coverage.

I have no idea about the timing at this stage, but I would imagine it will be towards the end of 2019, maybe mid year if things go well.

Update

Things are going well, and it's going to be mid-year for sure. It's been more of a re-organisation of the code than a rewrite, and what rewriting has occurred has mainly been simplifying and reducing the code base. Inheritance has been 100% dispensed with and I haven't missed it at all. Strict return types and namespaces have been implemented.

Another update - it's done

Tuskfish 2 is finished. I've got a bit of polishing and a lot of testing to do, but the code is done and looking good. Will be out by the end of June 2019.