Version 1, last updated by Stian Didriksen at September 19, 2011 07:59 UTC

Attention: This wiki entry is pending a review, as some of the ideas are dated.

1. Description

com_koowa is an install and update component for the framework and any core and/or third party Nooku extensions.

At the moment, Nooku Framework is not installable. A single package needs to be created that contains the plugin, the library, the com_default, mod_default and plg_default packages, etc. Getting Nooku Framework installed in a Joomla site should be a one click process for the end user.

The idea is to create a KControllerInstaller that takes care of all installation tasks for an extension. The goal is that the extension developer doesn't need to write any code (and especially not copy existing code) to make a package. Perhaps we need a new standard for an XML manifest, that contains all packages, that can deal with multiple applications, media files, ...

Idea:

<nookuinstall version="0.7">
    <metadata>
        <title>My Extension</title>
        ....
    </metadata>
    <applications>
        <site>
            <component name="com_foo">
                <files>...</files>
            </component>
            <module name="mod_bar"> ... </module>
        </site>
        <admin>
           ...
        </admin>
        <cli>
            ...
        </cli>
    </applications>
 </nookuinstall>

2. Functionality

  • Install the framework. Include com_terms and com_profiles if present in the package (to allow more freedom with how the packages are built and what's bundled or not). Install com_default and mod_default without adding them to the database.
  • (optinally) Install an bundled extension by a 3rd party by using KControllerInstall to let vendors have easily made, custom install procedures and a custom install view.
  • Update the framework through an simple UI (using curl, instead of fopen to maximum compatibility with most hosts.).
  • Uninstall the fw, including the default extensions (but not Profiles and Terms since they may have data tables) in one go.

2.1 Install

  1. Install the fw libraries folder. Just a JFile::move() operation.
  2. Install the fw components, extensions without an xml manifest basically (since these extensions don't need manifests anyway, as their behavior are abstract, and should thus only be extended).
  3. (optional) Install com_terms and/or com_profiles. Some larger extensions may choose to not have them bundled with the main zip, if they're not used. We could easily make com_koowa able to install them remotely though, or when needed (using an depency layer or similar).
  4. (optional) Initiate KInstaller if a 3PD extension, or multiple, are present in the package. If multiple, iterate over each and possibly print their views in an accordion, or let the 3PD deal with the view entirely.

2.2 Update

2.2.1 Using CURL

  1. Use curl to open a session to the assembla svn trunk (or a pre selected release, branch or tag depending on the channel the user choose. Similar to the Chromium/Google Chrome update channels).
  2. Perform an get request, getting the files and folders in the chosen channel. And then store it in the /tmp folder.
  3. Initiate KInstall, giving it the path to the requested data from #2 in the tmp folder and execute the "update" command (allowing vendors to register when the fw is updated, and act upon it.).
  4. Cleanup the data we dropped in the tmp folder since we no longer need it.
  5. Possibly do a diagnostic check to see if everything went ok.

2.2.2 Using SVN

  1. Create a temporary folder in the tmp folder.
  2. Perform an SVN Export to that newly created folder.
  3. Initiate KInstall and execute the update command.
  4. Cleanup the tmp folder.
  5. Possibly do a diagnostic check to see if everything went ok.

2.3 Uninstall

  1. Uninstall com_default, mod_default and plg_koowa.
  2. Initiate KInstall and execute the uninstall command, allowing vendors to act upon the uninstall event. Can allow you to add your extensions to an array, printing out a list over extensions that depends on the fw, so the user is notified of what wont work until he/she reinstall the fw. The KInstall uninstall command will remove the fw, com_koowa and display the com_koowa uninstall view.

3. User interface

  • Show a version check, installed version to the left, available version (varies, depending on your chosen channel) to the right.
  • Channel picker, either a select list or radio group allowing you to pick stable releases(latest release), betas (branches, tags or the incubator?) or development (trunk).
  • Optionally an simple svn browser, letting you pick the channel more specifically.
  • (Idea) buttons for remotely installing (and maybe updating) nooku components like com_terms, profiles.
  • (Nice-to-have) Show known issues from the wiki, like the php 5.2.6 incompatibility affecting mamp 1.7 and older users, and the suhosin one and such.