What is calmPress
calmPress is a web publishing CMS (Content Management System). It is based on WordPress‘s code and management idioms and modifies and adds to them whatever is required to get a more stable and calm experience to all of its users, whether they are authors, admins, designers or developer, by taking into account the lessons learned over time and recognizing are the requirements from modern sites.
Is there anything wrong with WordPress?
WordPress is a great software which had done a lot in democratizing web publishing, getting all of us into an era in which almost no technical knowledge is required to be able have a site containing your own content without the supervising eye of a master lord (yes Facebook, I am looking at you).
But WordPress faces now some challenges which are actually a result of its success
- Need to keep supporting non technical people which are using bad hosting and are not even aware of that. The concern about them makes it very hard to have any significant change.
- People are more technically savvy and expect more as default. Figuring out the middle ground between those people and themselves, and between them and newbies, is a hard task.
- People use it to build high profile sites which need to be able to scale, but WordPress code was never designed to handle the amount of data and traffic required for that.
- Fashions in software development had changed, and being outdated means it is harder for people to contribute code, and it is harder to integrate WordPress into modern development workflow.
Or maybe in other words, it is not that WordPress stopped being great, but more of emergence of big niches of WordPress users for which the current WordPress offering is ok, but “meh”.
calmPress mission statement
Make a CMS which out of the box provides the tools to create and manage web sites for the modern web.
A CMS is about management of content, the fact that usually the content on the web is presented as HTML is just a technicality, not a core feature. In other words, calmPress is not an HTML editor, and will try to avoid having the user exposed to the nitty-gritty aspects of web protocols when composing content.
Core believes regarding software development, in order of importance:
- The most important aspect of a software is its security. It is very hard to be calm when you are frequently afraid that it is going to be hacked. The is absolutely nothing that is more important than security.
- Privacy comes second. Due to the fact that some complex services are both hard to replicate and are available only from big cooperation which are most likely tracking users via those services, it is essentially impossible to provide 100% privacy, but we are going to try to leak as little private information as possible.
- No bug is left behind. While it is virtually impossible to have a bug free software, we are not going to release software which we know in advance that it contains bugs.
- Performance is very important. Some times it is not worth the development time to optimize every small aspect of the software, and some times to get a better UX (User eXperience) you need to sacrifice it, but the goal is to have a software which can handle small and big sites with minimal hardware cost.
- Extendability and flexibility. We are going to be very opinionated about many features, preferring a decision made by the core team over trying to satisfy all the use cases of a feature. Still we are going to try to have an avenue for the implementation of those use cases as a plugin.
- We are going to make decisions, but we are never going to be afraid to admit we made a wrong one and in that case we will work on rectifying it.
- Anyone with minimal software development knowledge should be able to modify the software to match his own needs. Being able to “fork” and modify the code by everyone that wishes it, is a feature, not just a by product of technical reality.
Be predictable in the long term effort required to maintain such a site.
Transparent decision making. Decisions and rational for them should be accessible and searchable on the open web. While it is essentially impossible to have decisions that keep everybody happy all the time, the goal is that the implications of decisions will be made clear, way in advance of their having an impact on the distributed software.