Web 2.0 has changed Internet. This is true fact. Moreover, Web 2.0 is still changing Internet. Dozens of new CMS appear each year. Some of them are successful (and even commercially successful). Some of them are not. Some of them are technology-aware, others are user-centric. Each CMS does the same job as others: controls web site. But each CMS has its own user community, its own extensions/modules repository etc. because each CMS requires its own programming language (framework, technique? etc.). So what we have thinking about overall CMS world efficiency? Is it good or bad to have many incompatible CMS? The answer is: Good and Bad.
- Good because the programming platform itself is a big treasure of each CMS. It let reusing many of features, samples and documentation. Moreover, platform’s user community is a good place of getting help if CMS itself has no strong user community.
- Bad because we have no common way to develop modules for different CMS.So, it would be great if we have an intermediate layer allowing single standards development for any CMS.
Here I must say that we already have a cross-technology programming platform that can be found on any hardware and in any programming language – XSLT. XSLT is a good starting point for the generalized platform:
- XSLT is extensible pretty much. One can provide custom functions to reach better integration with executing environment.
- XSLT is a rich programming model. It has conditions, loops, subroutines and allows to be split into a series of modules/files.
- XSLT is XML so it can be easily parsed and preprocessed allowing non-macros to be used XSLT is very fast (in many languages it has a “compiled” form)
- XSLT is a good template engine as it generates output as is without any print, write, etc. operators.
So, the idea is to provide a simple module for each CMS that will be capable of the following:
- Executing XSLT
- Editing XSLT in admin mode
- Providing database access as XSLT extensions
- Providing CMS / Web server environment access as XSLT extensions
- Web page submission, AJAX helpers, State management, etc.
And also packaging application that is capable to put ting XSL and SQL scripts together and creating installation/upgrade package.
Of course, this approach is not for creating complex applications with thousands man-days budgets and years of development. But if you need something simple to be built easy and fast – XSLT-based development environment is right tool. I think that the following tasks can be easily implemented using XSLT:
- Integration with external services. With new platform we can easily read data from external source process or save them into database. We can easily create a handler url that can accept parameters and process them or just put to database. For example, you will be able to integrate with payments processors, real estate catalogues, hotels/ticket reservation systems etc.
- Custom views. You can easily create custom views for modules if they can do it exactly as you want. If you have some ordinary module (articles, news, classifieds, etc.) and want to send it to browser in your own special way – just write XSL, query database and generate HTML. Nothing new here but you use the same universal simplified syntax in any CMS!
- AJAX controls data source providers. There are many AJAX frameworks that require data in form of JSON, XML etc. You can easily create a parameterized URL handler or AJAX function that query database and return data in required format.
- Simple modules as feedback forms, chats, polls etc. that do not require deep CMS engine integration.
Great, I like it. What to do now?
Anyone willing to take part in development of cross-CMS programming environment is welcome at AnyCMS project: http://sourceforge.net/projects/anycms/. Just join project or leave a message in forum if you are interested in cross-CMS features.