Peter Russell interviews me about Anahita (a social engine framework for Joomla). At its core Anahita is powered by Nooku Framework.
My experience with Nooku Framework took Anahita to unexpected levels:
Thank you SO much peter and the Nooku team, you guys are amazing.
I wish my best friend and business partner Ash Sanieyan was there with me in the interview as well. He has been spending countless sleepless nights perfecting the Anahita Social Engine ™ technology and he could have provided many interesting inputs about the project from his perspective. Perhaps next time, he’ll get to play the solo on the stage!
We would like to inform you that we have launched a demo of Anahita Social ™ Engine for those of you who are interested to join our list partners, learn the framework and contribute some financial resources to the project in the same time.
Please feel free to contact us and book a meeting. We would be happy to answer your questions and create an account for you on the demo website before you make your decision to join our partners program.
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.
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.
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, Box.net 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.
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.