What is calmPress
calmPress is a web publishing CMS (Content Management System). It is a fork of WordPress that modifies the code and management idioms and adds to them whatever is required to get a more stable and calm experience for all of its users; whether they are authors, admins, designers or developers, by taking into account the lessons learned over time and recognizing the requirements of modern websites.
Is there anything wrong with WordPress?
WordPress is a great CMS which has 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 now faces some challenges which are actually a result of its success:
- Need to keep supporting non technical people, who are using bad hosting and are not even aware of that. The concern about this 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.
- Fashion in software development has 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 the emergence of large niches of WordPress users for which the current WordPress offering is okay, 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 beliefs regarding software development, in order of importance:
- The most important aspect of software is its security. It is very hard to be calm when you are frequently afraid that you are going to be hacked. There 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 cooperations 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 bug free software, we are not going to release software which we know in advance contains bugs.
- Performance is very important. Sometimes it is not worth the development time to optimize every small aspect of the software, and sometimes to get a better UX (User eXperience) you need to sacrifice it, but the goal is to have 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 their 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 CMS.
- Transparent decision making. Decisions and the rationale 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.