====== Introduction ====== ===== The name: BALI ===== Some weeks ago (Nov 2007), I started a new CMS project. The basics are to use heavily Javascript and PHP to realize a full web 2.0x CMS software. Looking for a name to this project, BALI came to me as this is a wondeful island next to Java. And in 2006, I could spend some incredible week visiting this island and meeting very friendly people. Moreover, the news are now talking about the Bali conference on climate change. So it seems that Bali is THE name of this month. ===== The ideas ===== ==== No MySQL database ==== A first analysis on current CMS shows the standard technologies for CMS are Javascript/AJAX, DxHTML, CSS, PHP5.x and MySQL5.x. Looking more in details to the website build with these tools, we can group them into differents sizes. * XS : 10-100 pages * S : 100-200 pages * M : 200-500 pages * L : 500-1.000 pages * XL : 1.000-10.000 pages * XXL: 10.000-100.000 pages * PORTAL: 100.000-1.000.000 pages * WORLD: 1.000.000+ pages For websites sizing from XS to M, the usage of MySQL is not necessary. And a PHP software can gain lot of efficiency not using it. And I estimate that 80% of current websites are into the XS/S/M groups. For websites from L to XL, the usage of MySQL is useful. But my guess is that we can also do quite well without MySQL. And I estimate that 90% of current websites are into the XS/S/M/L/XL groups. ==== The POOL ==== Why do I want to get rid of MySQL ? It's quite common to have it installed on every platform and very simple to use. That's true. The reason comes from an analysis of DxHTML pages. When you use Javascript/AJAX, you manipulate the Document Object Model (DOM). With PHP5.x, you can build your software with Classes/Objects, so you keep your object-oriented design. But With MySQL5.x, you manipulate... tables! So you have to build a Database Access Layer (DAL) to convert your Object model into tables. At the first glance, we could say: The screen to display websites are 2D. So, it's a table! The most natural way would be to get rid of the DOM and only manipulate tables! Yes, it was true before Web2.x. Now, the display of websites have layers, so it enters the 3D world. Moreover, there are animations, so you have to handle time events: another dimension (4D?). Finally, the DOM is the real target! ;-) Fine, but without MySQL, how do we handle persistence ? Well, with a really old technology: flat files! :-P PHP5.x provides an easy way to save data and also objects: the serialize/unserialize functions. These functions transform complex data structures into a string. To provide persistence, all you have to do is to save this string into a file. Welcome to the concept of Persistent Object-Oriented Layer (POOL)! ====== The Design ====== ===== Features ===== From my experience, I would list some types of websites we need to build with BALI: * Blog * photo album * professional * wiki * contact form * forum * e-commerce * community ===== Usability ===== * International (multi-langue) * Easy * Standard * Expert ===== Scalability ===== Initial objectives are to handle websites from 1 to 1.000 pages. Initial objectives are to single-server websites. Medium-term objectives are to handle websites from 1 to 10.000 pages. Medium-term objectives are to multi-servers websites. ====== Next Steps ====== [[Design Layout]] [[Architecture]] [[Software Design]] [[User Specifications]] [[Software Specifications]] [[Download Releases]] ====== Thanks ====== Many Thanks to * Dokuwiki: http://wiki.splitbrain.org/ * WordPress: http://WordPress.org * Pagii: http://Pagii.com They provide me with dreams and true examples of what can be done, what should be done and what should be left!