I just tagged anyMeta 3.2.3. It is a small version number change that incorporates big changes under the hood.
Most important changes are a complete new caching system and new Authentication module. We also started to modularize some functionality like the Contacts, Ajax etc.
Because of these changes we will go live with this version on only a small number of sites, making it possible to test the new system in real life situations and measure its performance.
The most important changes are:
We fixed the following bugs/ problems and change requests:
And previously, in the 3.2.2, we fixed:
After a complete rewrite of the thing read routines I could add support for extensive use of the memcache caching system.
Previously the read routines were optimized for the kind and number of SQL queries that were done. The number of queries was greatly reduced by using batched reads for things and edges.
With this release we turned this behaviour upside down. A thing, complete with descriptions of its objects, will always be cached in the memcache system. On a cache miss we will emit more, but simpler, database queries to (re-)fill the cache with missing things. In the caching system I extensively use the hierarchy and dependency keys in our modified version of memcache - called mmcache.
Inside the anyMeta core (written in PHP) we almost always use the cached version of the thing records. Even when we only need a title. As any access of any thing in the database also needs its content class, trust permissions, publication state and owner id, all for the access control. This code organisation greatly simplified most read routines, and as a consequence I could remove a couple of thousand lines of code!
Besides the thing caching, I added caching of all modules, the administration of the sources, the checks on system updates, symbolic name lookups, access control checks and more. Every cache reduced the number of SQL queries and speeded up the overal page requests.
Already existing internal caching systems were also moved over to the mmcache system.
All in all is anyMeta more scaleable than ever before.
A nice benefit of the new caching system and internal organisation is that it is now possible to have types, predicates and keywords that are only visible for certain users. For example keywords and types used for the organisation of content can now be invisible for normal users and visitors of the site.
The authentication system was modularized. With the Authentication system being a module, we can now add modules to extend the authentication. Examples are additional checks against external authentication sources like LDAP. For this kind of purposes there is now the iAuthExtender interface, which enables to hook in and extend the complete authentication system in numerous new ways. I am sure that we will see the benefits of this new authentication system soon.
One of the first modules to make use of the iAuthExtender is the Presence module. The Presence module makes it possible to show if a person is online on a system somewhere on the internet or on a group of related websites. This module is still in pre-alpha stages and will be functional with the next release of anyMeta.
The storage of user preferences was also completely revised. We removed old PEAR code and replaced it with much more compact code of ourselves, which also added good usage of foreign constraints and cascading deletes in the database. The new preferences storage is much more flexible and extensible. This will make it possible to add new personalised functionalities.
Katharina Birkenbach and Bas van Rijen have been hard at work to make new common templates. The common templates are the templates that are used when anyMeta is freshly installed or when there is no website specific template made to overrule it.
With the following release we will have a very good and functional default website coming with every anyMeta installation.
Katharina also created new style sheets for the admintools, making them look much better than before!
Bas has been upgrading the installer. Installing many more standard and handy things in the database, and extending the support for having different default installations.
He also has been hard at work to make a new Contacts module where all the friend-of-a-friend like functionality will be concentrated.
The RSS feeds have now some additional information, making it easier to use them in our content sharing system. By the way, we refreshed quite a bit in the sharing system, making it easier to add specific import modules (eg. for Flickr, delicious etc.).
The Gallery import can now be found under /module/Gallery/ instead of the /services directory. I use this module to import photos directly from my iPhoto application to the photo gallery.
Some time ago we released version 3.3.0, shortly followed by 3.3.1 and in two weeks we will add 3...
We just wrapped up the 3.1.2 release of anyMeta. We made q...
We just released anyMeta 3.1.3 and updated our servers to work with this new version. The sites...
We are finalising the anyMeta 3.2.1 release. Yes, there was an intermediate 3.2.0 release. The 3...
After seeing the BiD Network competition come to a succes...
I just published a new version of our OAuth server and consumer code. The major addition to thi...
When using memcache we bumped into some problems. The major one was that we needed to invalidate...
We just wrapped up the 3.1.2 release of anyMeta. We made q...
We just released anyMeta 3.1.3 and updated our servers to work with this new version. The sites...
After seeing the BiD Network competition come to a succes...
I just published a new version of our OAuth server and consumer code. The major addition to thi...
There is a new and better version of this memcached clone. Please check ou...
When using memcache we bumped into some problems. The major one was that we needed to invalidate...
I just published a new version of our OAuth server and consumer code. The major addition to thi...
Here is the full implementation of OAuth for anyMeta. For now we...
There is a new and better version of this memcached clone. Please check ou...
When using memcache we bumped into some problems. The major one was that we needed to invalidate...
Here is the full implementation of OAuth for anyMeta. For now we...