Nooku Framework is out

After months of development the folks at JoomlaTools have finally  announced the Nooku Framework project publicly. Nooku Framework is an Object-Oriented, full-stack but very lightweight web development framework for Joomla 1.5. Anahita Social Engine is built using Nooku Framework.

Nooku Framework is installed as system plugin on Joomla. On the system initialization it replaces the core Joomla elements such as database, application, document with its own enhanced version.

It also offers it’s own Factory Class called KFactory that would let the developers to virtually extend or modify any part of Joomla without editing the core files.

For application development, Nooku Framework offers a far better implementation of MVC (Model-View-Controller) design pattern that what currently Joomla has. RESTful controllers, enhanced view classes with ability to inject custom template rules and models that recognize  their own tables are the few to name.

Being a Ruby on Rails developer, what most attracted me the most to  Nooku Framework is its own implementation of Table Gateway and Row Gateway Pattern. This implementation sort of works the same as the Active Record. It uses naming convention to map your table objects to the actual tables and it encapsulates the database access, and adds domain logic on that data.

Here’s an example of how it works

Even though Nooku is quite young and still taking its shape, it has enabled development of many high profile open source projects. Bundled with Joomla platform, Nooku Framework undoubtedly provides all the tools a developer needs to start the next generation web applications.

To learn more about Nooku Framework please visit their website at

Scalability in Social Networks

Building a software that one, two or even 100 people use at one time concurrently requires different set of skills than building a software that thousands or even millions of people use at one time. No disrespect to the Desktop software developers :), but building web applications especially in the nature of social network, requires focusing on scaling the applications to handle thousands concurrent requests at once. This is one the biggest challenges we are trying to deal with. Build a software that’s robust, well-designed but at the same time is scalable to handle large number of requests.

If you check out the Facebook engineering blog, you can find great tips regarding how to build software than can handle millions of concurrent requests.

Also facebook has open sourced a lot of tools they use that are great for scalability – check their open source home page at

Anahita Virtual Storage – How does it work ?

By nature social networks grows in storage size exponentially. For a community of just 250,000 people the total size of only the avatars are about 20 Gigabyte. That’s a lot of space but thanks to the services like Amazon S3, and other cloud storage, it’s a lot cheaper and safer to store users assets (images, videos, documents and etc) somewhere on the cloud rather than storing locally where your server is being hosted.

This approach however imposes a challenge for the third party extension developers. They have to hard-code the storage API they want to target and build their application in a way that works flawlessly only with that storage. On the other hand, this forces the users of the extensions (the people who download the extension to use it on their Joomla installation) to use only the intended storage service by the developer.

We’ve solved this problem in Anahita by introducing the Virtual Storage concept. Developers can use Anahita Virtual Storage library to read/write data without a need to know about the final storage destination.  cloud

The storage destination is configured by the admin through the Anahita System Plugin in the Joomla administrative back-end.


There are two ways of writing data using Anahita storage library, publicly or privately. If it’s public then everyone has read access to the data. This is good for static data like avatar and albums images. If it’s private only the application has access to read the data. In both cases the data is only writable by the application.

Soon we are adding the ability for the other developers to implement their own storage system. This is specially useful for the corporate intranets who have in-house distributed storage that’s not accessible from the outside of the network.

Information on becoming an Anahita Social ™ Partner is now available

We have just published some information on the type of benefits that our partners will receive upon joining our program for a period of one year.

Development of a finished Social Web project still costs quite a bit. Becoming a partner provides an opportunity for companies to obtain a copy of the source code and start learning about the framework, API, and its design philosophy before the public release of the GPL code.

Even after the public release, our partners will continue to receive additional training and marketing benefits. So please do read the information here or if you are already determined please contact us so we can get you started.

Update on the Anahita Social ™ Partners program

Yaletown, 2-May-09

Cherry Blossoms outside our Studio in Yaletown, Vancouver, BC.

Since our initial launch during the last week we have received numerous encouraging and inspiring emails from people and companies who have shown interest in joining the Anahita Social ™ Partners program and get involved with the project. We are so thrilled to know that our project has been receiving attention and not to mention. Actually Anahitapolis has received over 1850 page views within the first few days of launch which is not bad at all.

We are currently working to put together a practical program which could bring value to the both sites: those who wish to micro-fund this project as partners and of course the Anahita Social Engine ™ core development team who need to continue developing this technology.

We are aiming to post the information this week and those of you who have contacted us already will be the first to be notified.