MidCOM is the PHP framework used for building sites with Midgard CMS. Over years it has accumulated lots of components and features, and currently weights around half million lines of code. At the same time the design, while being well designed, suffers from having to work around lots of limitations in PHP4 and the old Midgard API.
In preparation for the Midgard Developer Meeting in Linköping, Sweden next week we have been having some discussions on where to go with a new MidCOM generation, and the consensus seems to be a rewrite, refactoring or porting only selected parts of old code.
As a teaser for that, I've attached an initial HTTP request handling flow chart of the planned MidCOM 3 architecture.
Some points of interest:
- Clean PHP5 and Midgard2 OOP architecture
- Exceptions to replace the old generate_error system
- ACL, versioning and watchers implemented with signals instead of DBA
- Good old Midgard Templating Engine instead of MidCOM's own implementation
- Configurable request switches
- YAML instead of PHP array format for configs
- Gettext instead of custom l10n format
- TAL for output templating (though Deliverance sounds interesting too)
- Much (by magnitude of about 100) less code to run per request
Together these should make MidCOM a much simpler framework to build with, and make Midgard again (thanks to its C core) one of the fastest CMSs out there, as opposed to being a rather large thing.
We will start a new fresh Git repository to build a proof-of-concept of the new MidCOM framework. After that developers are more than welcome to port components and play with the new system. Looking forward to discussing this in more detail next week!