Greetings and Salutations! ------------------------------------------------------------------------ Table of Contents ------------------------------------------------------------------------
- Editors Notes - Developer Tools Overview - German Midgard Installation Tutorial (Mandrake Linux) available - New Modules in the Midgard CVS - Bugtracker Summary - Mailinglist Summary ------------------------------------------------------------------------ Editors Notes From: Torben Nehmer <[EMAIL PROTECTED]> ------------------------------------------------------------------------ Another week with a special: Henri Bergius created a introduction in the available tools for developing Midgard Applications. It gives a good overview what you can use if you want to develop more advanced Midgard Applications, including thoughts about Code Version Control. Also I have decided to do another more-or-less regular topic, The CVS Modules Update, which will take you up to speed about new Midgard Add-Ons that made it into CVS. ------------------------------------------------------------------------ Developer Tools Overview From: Henri Bergius <[EMAIL PROTECTED]> ------------------------------------------------------------------------ The Midgard development environment In the last year the development tools for Midgard have matured quite nicely. Although they could be a more integrated package, with easier installation and better documentation, the most important tools exist and are usable. Let us take a look at what we have available. Integrated Development Environment Alan Knowles' PHPmole application provides a nice desktop IDE for Midgard developers. PHPmole has its own HTTP-based connectivity protocol, and can talk with a Midgard server. It also supports Midgard's data models (articles, snippets, etc) natively. The good point in a desktop IDE when compared to web-based interfaces is that it is much easier to provide user-friendly tools for developers. PHPmole uses this to its advantage, supplying users with many nice features: * Syntax highlighting * PHP class browser * Autocompletion and context-sensitive help for PHP functions * WYSIWYG HTML editor * Drag and Drop file uploads * Image modifications (rotates, thumbnail generation) * Interactive debugger (using APD) * DevHelp documentation browser PHPmole has been written in PHP using the PHP-GTK bindings. It requires the PHPmole connector installed on your Midgard server. PHPmole: http://www.akbkhome.com/Projects/Phpmole-IDE/ Connecting PHPmole with Midgard: http://www.akbkhome.com/Projects/Phpmole-IDE/FAQ/midgard%20connection.h tml MidCOM component model Torben Nehmer's MidCOM provides a standardized framework for reusable and configurable Midgard components. Traditionally the problem with Midgard applications has been that they have been mostly written for a single implementation, and have been very difficult to deploy or share between a larger number of installations. MidCOM overcomes this problem by defining a generally binding API for Components as well as providing a framework for accessing and managing them. It represents the first standard for globally reusable and deployable Midgard applications, web site modules and libraries. Every MidCOM application is contained within a Component with an explicitly defined interface to the world. Controlling infrastructure is the topic tree not the page tree giving you a far greater flexibility. The code itself is completely encapsulated in snippets, making packaging very easy. A framework is used to manage the components, both for public and private sites such as a web site and its administrative site. In theory this could even automate the building of administration interfaces by traversing every active component. The MidCOM framework is now in version 0.3, which is already being used on some production sites by the German Midgard solution provider Link-M. Version 1.0 of MidCOM is expected by the end of 2002. The MidCOM download package includes the framework itself and some example components. MidCOM specification: http://users.nehmer.net/~classic/midcom-doc/html/ MidCOM framework 0.3: http://users.nehmer.net/~classic/MidCOM-0.3.0-1.tar.bz2 Repligard and YAMP for packaging Midgard provides a built-in solution for distributing applications and data between Midgard servers, the Repligard system. Repligard can be used to import and export selections of Midgard objects using a XML format. Making applications replication-safe requires some considerations in their design. For example, the Midgard database IDs usually used when referring to objects inside applications are specific to a Midgard installation. GUIDs or object names should be used instead. The Midgard Manual includes quite good guidelines on Repligard usage and making applications replication-safe. To make Midgard application packaging even easier, Link-M has created the YAMP utility. YAMP provides an easy way for definining and exporting Midgard application packages for distribution. The YAMP package also has several tools for cleaning up the Repligard files for easier data handling in version tracking and other systems. Introduction to Repligard: http://www.midgard-project.org/manual/en/x1335.php Notes on writing Repligard-safe applications: http://www.midgard-project.org/manual/en/x1414.php YAMP, Yet Another Midgard Packager: http://users.nehmer.net/~classic/yamp-1.0.1.tar.gz CVS for collaborative development Version control and handling collaborative development have traditionally been big headaches with Midgard applications. The RCS revision control system supported by Nadmin Studio, Aegir CMS and the NemeinRCS library provides a partial solution by bringing object-level version control capabilities to Midgard data. However, this doesn't help managing different development branches or simultaneous development on multiple systems. However, the recent improvements in the Repligard packaging system and the YAMP tool have finally made developing Midgard applications using CVS possible. Using CVS all change information needs to be submitted from the Midgard server into the CVS repository, where it is stored in the RCS revision control format. This is handled by first exporting the Midgard application into Repligard XML files, and then committing those to the repository. Fetching latest versions of applications or libraries from the repository is handled using the CVS update command, and then importing the new files into Midgard using Repligard. This way application can be simultaneously developed on multiple Midgard installations while keeping latest developments synchronized between the systems. CVS can also be configured to send email notifications on all changes in the repository to developers. YAMP can be used to make this process even easier by utilizing its toolset to keep the exported Repligard files in a common format. Future versions of YAMP will include commands for automatically committing and updating modules with CVS. Several Midgard application projects have already migrated to coordinating their development in CVS, including MidCOM, Nemein.Net and the Nemein* libraries. CVS Manual: http://www.cvshome.org/docs/manual/ A good third-party Manual: http://cvsbook.red-bean.com/ http://cvsbook.red-bean.com/cvsbook.html.gz NemeinNavBar library in Midgard CVS: http://cvs.midgard-project.org/cgi-bin/cvsweb.cgi/contrib/NemeinNavBar/ NemeinLocalization for international applications Providing applications in users' native language is important part of usability. The PHP programming language already provides localization support in the form of GNU Gettext bindings. The problem with gettext has been that the localization libraries have to be distributed as files in the filesystem, making it impossinle to deploy the complete application from Repligard packages. To help making Midgard applications internationalized, the Finnish Midgard solution provider Nemein has developed the NemeinLocalization library. NemeinLocalization provides an easy web-based translation interface for language libraries, and stores all libraries as Midgard snippets. With NemeinLocalization, application writers only need to replace all strings outputted from their application with NemeinLocalization calls: Replace: echo "Save"; With: echo localize_string("Save","/my/localization/snippetdir/library"); After adding the localization calls, the library editor can then be added by creating an active page where you call the following: $locLibPath="/my/localization/snippetdir"; mgd_include_snippet("/NemeinLocalization/String editor"); NemeinLocalization ships with some premade language libraries, including Midgard error messages and some generic terms like "Save" and "Edit". The Nemein.Net package provides more examples on how to make the application international. NemeinLocalization is available under the GNU LGPL license, but can't yet be downloaded as its own package. Developers interested in using the library can get it by downloading the Nemein.Net package. Nemein.Net download page: http://www.nemein.com/download/ Nemein.Net Support for issue tracking Issue and bug tracking is important part of any larger development project. While any available issue tracking system including Bugzilla and Mantis can be used for tracking bugs and enhancement requests in Midgard applications, there is also a Midgard-based issue tracker available, Nemein.Net Support. Nemein.Net Support is part of the Nemein.Net suite of professional services automation applications. It provides a configurable trouble ticket format and easy interfaces for adding request submission forms to Midgard-based web sites. The package also includes comprehensive reporting on different types of requests received and handling times. While Nemein.Net Support is a commercial application it can be downloaded for free 30-day evaluation from Nemein's web site. Nemein.Net Support saves all data using standard Midgard interfaces, allowing for easy access for additional reports and views. There is also a public demo server available. Nemein.Net Support screenshots: http://www.nemein.com/Nemein.Net/Applications/Support/ Nemein.Net download page: http://www.nemein.com/download/ Nemein.Net demo server: http://trial.nemein.net/ Missing links Looking at the list of available developer tools, the situation is now quite good for Midgard application developers. However, some links are still missing from the developer toolchain. * Code documentation system (like PHPCodeDoc or JavaDoc) * Easy user documentation authoring and publishing solution (preferably with multichannel capabilities) * WebDAV support for easy importing of design templates from DreamWeaver and other systems * Standardized Web Services interfaces to MidCOM components It will be interesting to see how the Midgard development environment evolves in near future. There is now clear momentum in making the tools better and more generic from several companies deploying or developing larger Midgard applications. ------------------------------------------------------------------------ German Midgard Installation Tutorial (Mandrake Linux) available From: Christopher Kohlert <[EMAIL PROTECTED]> Editor: Torben Nehmer <[EMAIL PROTECTED]> ------------------------------------------------------------------------ Christopher Kohlert wrote up a Midgard installation tutorial for Mandrake Linux systems. Unfortunalety it is in English, as we still seek some volunteer who could translate it into English. Until then you can find the German one here: http://www.3rd-evolution.de/docs/misc/midgard/ ------------------------------------------------------------------------ New Modules in the Midgard CVS From: Torben Nehmer <[EMAIL PROTECTED]> ------------------------------------------------------------------------ Several new modules have made it into CVS in the last couple of weeks, in Alphabetical Order: Midgard SOAP Interface, /contrib/soap A simple interface that lets you access Midgard using SOAP. Mod_Midgard for Apache 2 - Experimental, /dev/mod-apache2 The Midgard Module for Apache 2, not extensivly tested yet Nemein Authentication, /contrib/NemeinAuthentication: An advanced Midgard Authentication System Nemein Backup, /contrib/NemeinBackup A script collection for backing up Midgard Nemein NavBar, /contrib/NemeinNavBar: A library for creating Navigation Bars Nemein RCS, /contrib/NemeinRCS: A Version Management Library for Midgard Yet Another Midgard Packager (YAMP), /contrib/yamp: A simple wrapper for using Repligard in a CVS and Release Management Environment. ------------------------------------------------------------------------ Bugtracker Summary Editor: Torben Nehmer <[EMAIL PROTECTED]> ------------------------------------------------------------------------ Not much to report here, we are in the final preparation for 1.4.4, most of the important Bugs are out, some minor ones are still open. I think that I will make a cut at the end of this week or so. What goes into Midgard till that day, will go into 1.4.4, so far no show stoppers are there. I will skip the RC this time, since there are only bugfixes no new features this time, as we did all development on a separate CVS branch of Midgard. Some new Bugs have been reported these days: Apart from some feature requests there is more trouble around mgd_auth_midgard, which is a old companion in the Bugtracker. This time its around mgd_auth_midgard resetting the active sitegroup if it fails. ------------------------------------------------------------------------ Mailinglist Summary Editor: Torben Nehmer <[EMAIL PROTECTED]> ------------------------------------------------------------------------ Currently -dev is more or less quite, the usual small buzz around new bugs or so. More important is the huge traffic we had on -user, which is mostly around the Aegir system. Aegir is in the last steps before the final release, and the community is big in finding all those nifty little problems. If you have a Aegir related problem, take a minute to browse -user before actually asking there, it might very well be, that your problem is already solved. Apart from Aegir we have the old familiars about installing Midgard on -user. Nothing special. ------------------------------------------------------------------------ Want to continue reading MWS? Please help us create this newsletter. Currently, it's mostly a one-man show, which is anticipated to fail in the long term. We urgently need volunteer writers who prepare items. Please see the contributing page to find out how to help. We're looking forward to receiving your mail at [1]. Midgard is an Open Source Content Management System, visit our Homepage [2] for further Information. [1]: [EMAIL PROTECTED] [2]: http://www.midgard-project.org Live long and prosper! Torben Nehmer -- Torben Nehmer, Munich, Germany http://www.nathan-syntronics.de, mailto:[EMAIL PROTECTED] PGP Public Key: https://www.link-m.de/pgp/t.nehmer.asc --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
