Rationale Behind CppCMS
One of the most frequently asked questions about this project is "Why?"
There are many reasons, The first one and the most important is:
If you're building a personal blog, creating small or even a medium sized site, or perhaps a website for a small company --- CppCMS is not for you. Take any of the existing CMS's like Drupal or develop with perhaps the Django framework, and you'll be fine.
However, when the loads become more than average, the process of scale-up using existing web frameworks may be painful:
- Low performance of dynamic or JIT languages enforces you to add more servers even on quite small loads.
- The caching becomes more complicated and less efficient because the system becomes distributed and does not scale-up linearly.
- Creating such systems requires skilled staff and adds to costs.
CppCMS allows you to increase the performance of a typical system by an order of magnitude and thus:
- Remove the requirement of maintaining a big server farm, where a few servers, or even single one, would solve the load problems.
- Reduce maintenance costs and power consumption.
Make the world a greener and better place
By reducing the number of servers running your applications, you actually reduce the emission of CO2 to the atmosphere. Your software consumes less energy and is thus greener.
Don't believe me? Read this article about Facebook's server farm.
What about development costs?
That is the major point of CppCMS. It makes the development fast and easy, and allows programmers to deal with an application's logic rather than all the unrelated things.
Today, the major problem of web application development in C++ is the lack of suitable tools. CppCMS solves this, and gives you the tools that any other web framework gives you.
What about crashes, buffer overflows, memory leaks?
These issues are mostly in the past for modern C++ development. Smart pointers, STL, Boost and other decent programming tools allow you to write safe code easily and fast.
Modern C++ development is as easy and safe as C# and Java development.
Also a developer who uses CppCMS mostly works on an application's business logic and does not deal with the low level issues that CppCMS takes care of.
For example, take a look at the code of this wiki, it is simple, safe and straightforward.