Version 8, last updated by Johan Janssens at 23 Mar 22:16 UTC
1. Services
1.1 Can I get training?
Nooku Code Jams
Nooku Code Jam's are unconference style events that focus mostly on developing with the Nooku Framework. Code Jams are born from the desire for people to share and learn in an open environment. It is an intense event with discussions, hacking and interaction from developers who are the main actors of the event.
Code Jams are informal, community-organized events that are put together by Nooku Framework developers like you. Everyone can participate, share ideas, and get to know each other.
You can organise a Code Jam yourself: all you need is location that holds 10-15 people, a projector and wifi.
Private training
We offer private training on your site. These courses are usually taught by two instructors and work best with teams of five or more. Our training is highly interactive and lab-oriented. We have a catalog of current topics to learn you to develop with the Nooku Framework, but we can also develop custom courseware for your team. Please contact us for more information.
1.2 Do you provide consulting services?
Yes, we provide on site or off site consulting services around Joomla and Nooku Framework. Contact us for details.
2. Licenses
2.1 Can I ship Nooku with my extension?
Preferably, your users should install the Nooku Framework extension separately (if they don't already have it installed), and after that install your extension. The benefit is that the installation procedure of your extension can make use of the features in Nooku Framework (for example some of the upcoming package install & upgrade features). The install process of the Nooku Framework extension is very simple and requires little to no configuration, so it shouldn't be hard for any user.
However, should you wish to do so, you can package Nooku Framework along with your extension, although this is not recommended. If you do so, make sure you don't blindly overwrite an existing Nooku Framework installation on the user's server.
Whichever option you choose, make sure your extension is compliant with the license for Nooku Framework.
2.2. What are the license requirements for my extension?
Nooku Framework is licensed under The GNU General Public License Version 2. http://www.gnu.org/licenses/old-licenses/gpl-2.0.html Within the context of this FAQ, "GNU GPL" and "GPL" refer to the GNU General Public License Version 2
Every extension that makes use of Nooku Framework is considered a derivative work of Nooku Framework. Under the GPL, all derivative works MUST be licensed under the GPL or a compatible license. That means, among others, that your extension must be open source, that you must keep copyright notices inside the Nooku Framework code intact, ...
It does however not mean that your extension can not be commercial: under the GPL, you are allowed to charge for distribution and services.
FAQ's
- GPL : http://www.gnu.org/licenses/gpl-faq.html
- Joomla! : http://opensourcematters.org/index.php?option=com_content&view=article&id=55
3. Project
3.1 Can Nooku Framework be used standalone or with other CMS's?
Yes, Nooku Framework is being developed to run standalone. It is not completely there yet at the time of writing, but by the time the 1.0 version is released, you will be able to use Nooku Framework 1.0 standalone, or integrate it in other CMS's.
3.2. How can I contribute
Nooku Framework is released free of charge under the GPL license. Just like any other open source project, we happily accept your contributions. There are many ways in which you can help:
- Report bugs
- Fix bugs and provide patches
- Submit new features or complete new packages
- Write documentation on the wiki, or fix outdated documentation
- Help users on the mailing list or other public resources
- Organize Code Jams (contact Nooku for info)
- Write quality extensions that show the power of Nooku Framework
- Send us a postcard, a nice single malt Scottish whisky, or other cool stuff
- Spread the word: on your blog, in your Twitter, in your company, in your community
"For every hour Nooku saves you, spend 5 minutes improving it"
3.3 Is Nooku Framework compatible with Joomla 1.6
Nooku Framework uses a very thin layer to integrate it into Joomla 1.5. This layer is at the time of writing about 50 lines of code, and works as an adapter between Nooku and Joomla. To make Nooku compatible with Joomla 1.6, all that is needed is rewriting this layer. This should be rather straightforward and we are not expecting any serious issues. Extensions built on Nooku Framework, will need little to no changes to work on Joomla 1.6.
At the time of writing there's is no clarity as to when Joomla 1.6 will be released. The code is still too much in flux. We plan to do the integration of Nooku Framework when a beta or RC version is released.
3.4 Should I build on Nooku Framework or wait for Joomla 1.6 ?
At the time of writing, there are hundreds, if not more, of live websites running on Nooku Framework. Nooku Framework has been in development for over two years and each release is stable and being maintained for a longer period of time. There is growing community of professional developers that are using it and actively contributing to it. Extensions written for Nooku Framework and Joomla 1.5 will be 99% forward compatible with Joomla 1.6, and even with other CMS's later on. Which platform you choose to build your project on is up to you, but we believe you will not regret choosing Nooku Framework!
3.5 Why is Nooku Framework free ?
By releasing Nooku Framework as free of charge open source software, we can get more people to use it and help improve it. This way the framework becomes a lot better a lot faster than if we had to do it all on our own. Find out how you can contribute
There are a couple of indirect ways Nooku earns money with the Nooku Framework:
- By offering commercial products based on the framework, most notably Nooku Content, the multilingual extension for Joomla
- By offering consulting services around Joomla and Nooku Framework
- By offering training
4. Releases
4.1 When will Nooku Framework be stable ?
Even though at the time of writing we haven't reached the 1.0 milestone, Nooku Framework is actually already stable. Each 0.X release is stable and is maintained for a longer period of time. For example:
- Nooku Framework 0.5 is now at 0.5.7.
- Nooku Framework 0.6 is now at 0.6.5. We are preparing the 0.6.6 release with some bug fixes.
- Soon we will release 0.7. If, after the release of 0.7, bugs are discovered in 0.5.7 or 0.6.4, we will release 0.5.8 and 0.6.5. So if you have existing extensions running on the 0.5 or 0.6 version, you can rest assured they will be maintained, even after the release of 0.7, 0.8...
0.X.y releases are always backwards compatible: upgrading from 0.6.3 to 0.6.4 for example will not break any extensions.
However, there is no backwards compatibility between 0.X versions: an extension built on 0.6 will not work on 0.7. This allows us to move fast and perfect the API, without having to bother with compatibility. As soon as we reach 1.0, subsequent 1.x releases will be backwards compatible.
4.3 Which version should I use ?
When you are building a project with a set deadline, always use the latest stable release. You can find stable releases in the SVN repository under /tags. For example, the latest at the time of writing is /tags/0.6.5
If however your project is not meant for immediate release, you might want to consider using the trunk. Be aware though that the code in the trunk is in constant flux and might regularly break your code. The benefit is of course that you always get the latest new features.
5. Code
5.1 How to make patches
We prefer diff files because:
- They are human readable
- Any good editor will color code them
- They can easily be applied to a file, even if the file was changed in the meantime
Before making a patch, make sure you have the latest version of the file.
Command line
$ diff -u original_file.php your_version.php > resulting_file.patch (on any *NIX system, such as Linux or OS X, can someone check this for Windows?)
Command line using SVN
Even better is to use SVN. Check out the SVN repository, and modify the file in place. Then run this command: $ svn diff file.php > resulting_file.patch Your version of the file will be compared to the base version in SVN.
Using an IDE
Any decent IDE has this feature as well.
- Eclipse+Subclipse plugin: right click a file -> Team -> Create Patch
- Cornerstone: File -> Save differences in file as Patch
Patch file
A patch file looks something like this:
Index: code/plugins/system/koowa/view/abstract.php
===================================================================
--- code/plugins/system/koowa/view/abstract.php (revision 1219)
+++ code/plugins/system/koowa/view/abstract.php (working copy)
@@ -89,8 +89,8 @@
$path = $this->_identifier->filepath.DS.'tmpl';
$this->addTemplatePath($path);
- if($options['template_path']) {
- $this->addTemplatePath($options['template_path']);
+ if($options['path_template']) {
+ $this->addTemplatePath($options['path_template']);
}
5.2 How do I report bugs ?
he Nooku Team spends a lot of time to bring you a top quality framework. All we ask is top quality bug reports in return. Tips to get your bugs fixed fast
Prevent duplication
Make sure the issue hasn't already been reported or fixed. Update to the latest version of SVN, search the mailing list and other resources.
The man in the mirror
Maybe the bug is in your code? Make sure you use Nooku correctly; read some docs and look at the API. Check for typos in your code.
Make patches
We love patches! Especially the kind that solves the issue in a nice and clean way, without breaking any other functionality. Learn how to make patches.
Workarounds are an antipattern!
As a developer, you might be tempted to make your own workarounds when you encounter something that doesn't behave as expected. Please keep in mind that workarounds don't help anybody, and will make it more difficult for you to maintain your code as Nooku changes.
Report on the mailing list
Please report bugs on the mailing list. Reporting bugs using other resources such as chat or personal email is not a good idea: the reports can easily get lost that way, and they are not available to the whole community.
Use the template
Always report issues using the following template. The more information you can provide, the faster the issue will be fixed.
Nooku Framework Version & revision:
Joomla Version:
Other relevant extensions:
URLs (if applicable) :
Browsers tested:
What steps will reproduce the problem?
1.
2.
3.
What is the expected result?
What happens instead?
Link to code samples (use pastie.org):
Attached patch (preferably as a diff):
Attached screenshot:
Please provide any additional information below:
5.3 Should I check for _JEXEC in my code ?
No. There are a number of reasons for that:
Joomla's has defined('_JEXEC') in every file. This is security measure to prevent the file from being executed when called directly. However, if you write good code using Nooku Framework, everything will be in classes anyway and can not be executed when the file is called directly.
The only places where it is still good to add a check is in your template files and entry points. You can use defined('KOOWA') for this.
Using _JEXEC couples your code to Joomla. One of our goals is to allow to let Nooku Driven extensions run standalone we cannot do this if we rely on Joomla specific code.
Finally it's advised to add .htaccess files to your extensions to prevent directory listings, instead of stuffing each directory with an empty index.html file.
5.4 What happens with extensions that use MySQL instead of MySQLi ?
Q. I've read in the wiki that we have to make sure that MySQLi is installed before installing nooku http://sites.google.com/site/nookuframework/tutorials/getting-started... What happens to other components that use MySQL instead of MySQLi ? Will they be able to work when the Nooku Framework is active ?
A. The Nooku Framework is capable of transparently switching between MySQL and MySQLi. As from Nooku Framework 0.7 the database connector uses MySQLi. This does not have any impact on exciting extensions. We are re-using the MySQL connection created by Joomla's DB connector and are pushing that into the MySQLi connector (on a MySQLl level both resources are the same). Here is a code snippet that does this :
// Get the Joomla database object
$jdb =& JFactory::getDBO();
//Create the koowa database object
KFactory::get('lib.koowa.database', array('adapter' => 'mysqli'))
->setConnection($jdb->_resource)
->setTablePrefix($jdb->_table_prefix);
Extensions that use KFactory::get('lib.koowa.database') will use KDatabaseAdapterMySqli, while extensions that use KFactory::get ('lib.joomla.database') or JFactory::getDBO(), will usee JDatabaseMysqli.
This way we allow existing Joomla extensions and Nooku driven extensions to run side by side. A perfect example of this is Nooku Content which uses both database adapters to make the translation magic happen.
You don't need to do any extra for this to work. The MySQLi connector comes default with PHP5. For more background information about MySQLi please read the following thread : http://groups.google.com/group/nooku-framework/browse_thread/thread/1...
5.5 Will the Nooku Framework make my site slower ?
No ! Extensions that are build on top of the framework will actually run faster then native Joomla extensions simply because you are writing less code.
In PHP the most expensive operation is loading the PHP files from disk and parsing them to OPcodes. The less code to load and parse the faster your code can start running.