DirtyCMS is a content-management system (CMS) that is aimed toward people who, like me, want the stylistic control of a website that comes with hand-coding while also wanting the conveniences afforded by the use of a CMS. It is especially geared toward designers and programmers who are exclusively responsible for a website's content and design, although a "guest" editing backend is in the works. I aim to make DirtyCMS in accordance to the principles set forth in my Design Philosophy, but a number of particulars apply as well (to be found below).
DirtyCMS is set to debut publicly as this website in late 2017 or early 2018. It is currently in the alpha stages of development, and while most of the crucial functions of a CMS work, it is not yet ready for use by even the most experienced website designers. Once these kinks are worked out, I will be releasing the software as open-source using copyleft licensing, but that is not likely to happen before 2019. Once the blogging function of DirtyCMS meets my own standards, I will be using it to log DirtyCMS's development. In the meantime, here are a few central tenants that are informing its design:
- A CMS should manage, not micromanage. Content is autonomous from management.
- A CMS should be Multilingual. It should be cross-compatible with multiple languages: php, perl, python, etc., while operating in the same way with interchangeable data formats and extensions.
- Direct Access to code should be the standard interface, not hidden nor buried under various 1st-party and 3rd-party frameworks.
- Code is beautiful—even ugly code. We want to hide it from the users, not the creators.
- No code is forbidden. If the designer creates something insecure or ugly, that's the designer's problem. We are not in the business of telling designers or programmers what to do.
- It should be an option that a standard format is followed across pages—not the rule.
- In the same vein, it should be an option for a page to follow the same theme as the rest. Themes should be flexible and compatible with one another.
- Widgets, plugins—no. Only extensions, which operate independently of the main backend, and quick code injections (snippets) available while editing a page.
- The main backend interface should be simple. Any non-critical functions should be left to extensions.
- The CMS should operate with little to know database management. The rule for DirtyCMS is that the frontend must never rely on databases (unless initiated by the designer), and the backend may only rely on its own JSON files.
- Function trumps aesthetic. When the two can meet on equal terms, wonderful—but if not, function takes charge.
- However, the "guest" backend can prioritize aesthetic over function, and hide code as well (can include a WYSIWYG editor that only affects html).
- A CMS should be able to wrap itself around an already-existing set of static html pages as well as start from scratch.
- A CMS should be light on both server and client. This is partially why all databases are local JSON files, but is also why there are minimal bells and whistles in the backend. Dynamic content should remain minimal except when functionally (not aesthetically) desirable.
- The CMS should remain free for others to ruin, for commercial purposes or otherwise, but must be given proper attribution and must visibly acknowledge when changes have been made to the core of the CMS.