Forums / Cotonti / General / Future Genoa

Trustmaster
#32023 2011-12-13 07:42
#32015 urlkiller: 


what i LIKE would be the possibility to customize the siena system as you wish. some kind of "system-modules" that would allow me to add or delete internal parts as i wish in no time. i want forum -> i add forums module in /system/, i dont need that -> i delete the folder in /system/

so for a small site i would just have a system with 100KB and insane speeds because it only loads exactly the stuff i need/want.

Well, this is exactly what Siena's "modules" stands for. You can completely remove "forums" or "polls" for example just like you do with plugins. Or write your own module. This was called "Modularization" and it is a good example of the price that we had to pay for a new major feature, because in order to achieve it we had to do the following:

  • Change directory structure and unify it.
  • Modify the internals of site configuration system and build a configuration API.
  • Modify the internals of site authorization system and build an authorization API.
  • Unify the way plugins and modules are handled by the system and build an extensions API.
  • Develop universal methods for installation/uninstallation and updating of modules and plugins.
  • Move a lot of stuff from the core to modules which actually use it.
  • Introduce such thing as dependencies between modules and plugins.
  • Add cot_incfile() function which simplifies inclusion of one extension within another.

I'm sure I have forgotten some other things we had to do to achieve what we have now: you can assemble your site of modules and plugins like of lego bricks. But as a result it is not backwards compatible, it's a big bang.

There are some unpopular decisions we've made without being enforced to. ez mentioned one of them, CotDB / PDO. A funny thing is that it was actually aimed at developers new to Cotonti, because in the modern world of PHP5 adoption, PDO library is very common and is used by lots of programmers around the world. It is also the basement of such popular libraries as Doctrine and phpActiveRecord. So it is likely to be more familiar for a newcoming PHP programmer rather than sed_sql_* functions.

I think the most unreasonable change technically speaking is the global change of prefixes from sed_ to cot_. We could easily live without that. But it's a kind of marketing thing, it's about project recognition. If you are new to Cotonti and start looking at the code, one of the first questions which appear is "This system is called Cotonti, why does everything start with sed_?".

Now back to Genoa and new features. Cache is another good example. In Siena we are developing a more advanced cache subsystem. It consists of several layers of caching, from caching particular variables to caching entire pages. All sounds very good in theory, why not apply it to Genoa fresh out of the oven? Well, it would break it then. It took a few releases in development branch to get it stable enough. Currently it is still several steps from being complete.

For about 1.5 years we actually used Siena as a laboratory for new features which then were backported to Genoa. It worked until these branches became so different that I got tired of backporting and also that topic of "stop making changes in Genoa" appeared. If there were people dedicated to Genoa branch, the process of getting new features in Genoa would be easier.

May the Source be with you!