I've made the switch to CppCMS

Written by SysOp on 2020-08-08 10:20:15 ; Posted in: SysOp, Website; 0 comments

As much as I believe the FreePascal compiler has the best combination of features of the languages I've seen, the libraries available for it are limited and usually of poor quality. I finally decided to take a look around and see if there was another language that had higher quality and larger availability of code. I've spent an awful lot of time fixing every FPC library I get involved with and the bugs seem never ending. On top of that there seems to be a prevailing attitude to add more features long before the current ones are fixed.

Law 2 is a butt kicker in software development and when launching a new software system having good foundational software is a huge contributor to how well things will turn out. So I took a look around, decided to jump back into the C++ pool and take some libraries for a test drive.

WOW! How C++ has grown since my last large-scale endeavors with it, in the early 2000s... and yet there are still some critical things missing. Besides building and occasionally debugging someone else's software my last real experience with it was using Delphi/Kylix and it still seems that Borland's edition of the language had things to offer that aren't native. Probably to make it compatible with the Pascal side of Delphi.

A lot of tech decisions seem to need to be made like political ones: which sucks less? And, in general, in the tech world, it usually seems to be determined by popularity not by technical merit. I won't take the time to really unpack and explain that at this time. I also have to say that my decision has not been based solely on developing software for serving web pages, but on the whole breadth of environments I write code for. And the decision to make this jump was NOT made lightly.

Well... I could write a book about how I got here but other things are needing to be done today. So I'm going to focus on where I'm at.

I settled on CppCMS for a web-app framework. Its Freekin' FAST™, well thought out, well built, fairly well documented and high-ranking on the bug free scale. My only real issue with it was URL handling and I have made one patch and will likely make a couple more before this is over. But all-in-all it provides a lot of good tools out of the box and I have yet to find any other issues with it.

Some might point out, "But you had to fix the URL handling." Hmmm... well, this boils down to a difference of opinion on how URLs should be handled. And since this is my site... I'll handle them my way. And since CppCMS does operate "as designed" (intended) its not technically a bug so it still ranks high on my quality scale.

But learning new language features, dev tools and libraries hasn't been the only thing I've done. I now have new capabilities on the site:

  • Webpages that can be edited from a browser.
  • A fully functional blogging system (not fully available yet)
    • With pages editable from the web.
    • Comment system
    • tagging system
  • The foundation for my user system.
  • Page caching, and I don't even need memcache... although I'm still thinking I might deploy it.
  • Oh! And new banner graphic.

One thing that CppCMS doesn't provide out of the box is a database interface. But the author does have a companion project called CppDB. It has worked well so far. Its pretty easy to use and its operation is very logical. So I'm using it for accessing data.

The CppCMS framework will make a self contained http server and the CppDB software will access SQLite. This makes for a slick development setup. So while developing I run my site with the built in webserver and SQLite for hassle free data. Then on production I upgrade to a full web server (NginX or Apache) and MariaDB for data.

So here goes the launch of the *NEW* CppCMS based site. A few more steps closer to where I want to be...