Fork me on GitHub

Installer Module and Repository  Bottom

  • Getting a fresh install of Zikula is getting easy with the modules and everything as part of the package. But installing and especially updating is a pain. I have been thinking about a process that would make it easier to implement updates - and even know that there has been a update for a module. I have come up with a concept of an installer module and a repository.

    This would be implemented in several ways.

    Upload modules...
    Joomla has a function where you can upload (or enter a URL) for a module/theme/etc and the core will get that file, decompress it and install the files. I would like a "installed" module that will do just this. Especially now that the Zikula packages are coming in the correct file format.

    An extension to this a s series of command that could be run at the same time. But simply getting the files loaded would be nice.

    Repository....
    A web site where a copy of each module is kept up to date and the files recorded. As a file was edited, added or removed. It would be marked for update. Websites registered to that module would know what files they needed and push or pull those files over. Push is the repository web site would FTP the files over - actioned from the repository. The pull would request the files, actioned from the client.

    This could be automated - so updates where magically installed - or done manually/adhoc.

    Installer..
    Finally, the upload module could have the ability to query a repository and get a list of modules. Similar to the Repository central store, but managed on the client site.


    Phew..... complicated..... comments?
  • geoff

    and even know that there has been a update for a module


    Beginning with 1.2.0 the core has the ability to notificate the administrator about updates of the core or installed extensions. This is being done by using XML data from the extdb.
    Drak can tell more about these features.

    --
    Guite | ModuleStudio
  • That's right, starting with 1.2.0 you will be notified when there are updates to the core. There is a little more work to do for that functionality to be extended to modules. The core installation queries the update server which delivers XML data which can then be processed to determine if there is an update and the level of the update severity.

    As for "auto updates", this is actually more tricky than it sounds. I know WP and J are both attempting to do it, but it also runs the chance of (and is) ruining people's sites or failing to complete entirely. It is possible of course, but it would need to be done with extreme use of try/catch and the ability to roll back on failure. If you imagine the steps you normally take to manually update including running backups... and all the problems we encounter as well as things not working as expected . Auto updates can potentially ruin site modifications and so on - I know many people aren't using the config directory to customise their sites instead they are modifying core files or module files.

    I'm not saying this to put a dampener on the idea, because it's something that has always been close to my heart (and I want to see it implemented in some way), but we do strive for a certain level of reliability within the framework: automatic updating is almost a project of it's own and will require precision and stability before it would be accepted by the development team.

    I have also begun to question the whole logic of the installation method used by Zikula but things aren't clear for the time being until a little more work is done on Zikula 2.0. Again, changing the installer would not be a priority. Too many cool things to do and too few people to do them :s

    Anyway, I can certainly promise auto notification for core and modules with the 1.2 series but auto updates are something for later.

    Drak

    --
    Zikula Lead Developer
    Board Member of the Zikula Foundation
    Follow me on twitter.com/zikuladrak

This list is based on users active over the last 60 minutes.