Yesterday I tried an experiment. I downloaded and and attempted to install 21 of the the 109 GPL licensed components that are listed as 1.0 only in the JED. It reminded me a lot of the good old days on the Mambo forge when you never quite knew what to expect when you downloaded something. I wanted to know if they would work in legacy mode, and if they don't why not.
I picked the six which had more than 20 reviews plus the 14 non commercial components that had an average rating of 5.0. This group represents a range, because they may just have one rating, but it does mean someone found them useful.
The first thing that I noticed is almost none of the projects seems in active development, which is no surprise. Getting most 1.0 components to work in legacy mode is not that difficult, though a good rule of thumb is the more complex the component the more adjustments are needed. (I decided to focus on components because they are more complex; getting modules to legacy or even native 1.5 mode is usually quite easy.) The projects in active development either already have 1.5 versions or are actively working on them.
So what did I learn? Well, much as I would like to say it was a breeze and all of these components can be tagged as legacy compatible, I found that almost all of them required some minor fixes. A number of these are common across the extensions:
- Unencoded & and > < characters in the description field in the component xml. This will give you an error message saying that there is no admin tag.
- Using a include of pattemplate that goes to the includes folder (where it used to be). In general, you should replace
require_once($mosConfig_absolute_path.'/includes/patTemplate/patTemplate.php');
with
jimport('pattemplate.patTemplate');
But I don't know enough about pattemplate to tell you what to do beyond that. - Some issues with PHP 5 compatibility (such as that you need to put code that uses a class after the code for that class, not before).
- Changing the table name of #_mambots to #_plugins.
Looking at the top six:
- Rss Feed Manager It intsalled in legacy with no problem. To make it work in the administrator I also had to comment out line 145 in rd_rss.php. I could make a menu link in the front end with no problem, I did use it to successfully subscribe to a feed in google. Google made no complaints.
- eWeather Installed fine, worked fine.
- Mehdi's Phpbb TWO--well my listing of extensions was a few weeks old, Mehdi has released Mehdi's Phpbb Three which is 1.5 native. Go Mehdi!
- Deep Pockets II. Uses patTemplate, but once you make the change above, will install. However someone really needs to work on the rest of the patTemplate code, something I don't know much about. Also, it always produced an not authorized warning even though I was logged in as a super admin. Since this is a component that only super admins should have access to, so I suggest changing all of the complex credentials checking to something along the lines of:
$user =& JFactory::getUser();
if ($user->get('gid') != 25) {
JError::raiseWarning( 403, JText::_('ALERTNOTAUTH') );
return;
} - Productbook On their site the developers say they are not going to poduce a 1.5 version, although they are still making some improvements on the 1.0. In fact, it installs in legacy mode with no problem. However, once there you can't do a anything. This is a very old codebase, based on AkoGallery, but someone who loves it should be able to modernize.
- Shared Private Space This is an interesting component that installs with no problem, although with error reporting on maximum it generates a bunch of notices. It works on the frontend for uploading files (again with notices), but the browsing of files does not work. I think this is because of some of the security features added in 1.5 that prevent you from directly pulling in files from unknown sources. So, if you know the name of the file you can insert it, but I might suggest using images/archive/stories/espacePrive (switch to your images root) as the folder rather than espacePrive. However, the real problem is that the credential checking needs to be modernized to get it to work with the media manager, since I could not get it to let me see my own images. Deleting the .htaccess solved that problem, but then access control fails.
Now, about the 14. Four were actually already available in 1.5 versions (ReMOSef for Joomla, Flash Slide Show Image Gallery, NinjaMonials for Joomla!, Joomler! Pinger now known as Pinger). One (Simple Shop) says they are working on a 1.5 version. Two (Zinderudsitemap and BBClone for Joomla) was not available on the lnked download sites. The others all installed, sometimes after minor tweaks to the xml files (as mentioned above). Once installed the degree of functionality varied a lot, but most issues are those described above. These extensions were: kapod, Karma 1.0.1 - Profile rating system, Moslate, GITS - Steckbriefe, Jacot Component, eventManager. Something somewhere along the way caused me to have a background image in my media manager but I'm not sure what since I didn't notice that until later.
So now what?
If you use or want to use a 1.0 only extension or think what it does is cool, then you should become part of the open source development process. That means, open up the files, see why it isn't doing what you want, and find a way to fix it. Then post on the project's forums or mailing list or send what you learn to the person who seems to be running the project. If they really arent' interested, ask if you can be the maintainer of the project and take on creating the 1.5 version. You do not necessarily need to be a high end coder to do this--I have made a number of 1.0 components work in 1.5 using some of the resources below. If I can do it, you can too. This is the beauty of the GPL, you can open the files and make them work for you. The second aspect of that beautiy is that you an share what you learn with others, so that everyone benefits and helps each other.
I'd recommend everyone read Eric Raymond's essays Homesteading the Noosphere especially the Ownership and Open Source section and The Mail Must Get Through which talks about how he became the maintainer of fetchpop. Especially important for the abandoned projects is this:
The third way to acquire ownership of a project is to observe that it needs work and the owner has disappeared or lost interest. If you want to do this, it is your responsibility to make the effort to find the owner. If you don't succeed, then you may announce in a relevant place (such as a Usenet newsgroup dedicated to the application area) that the project appears to be orphaned, and that you are considering taking responsibility for it.
Custom demands that you allow some time to pass before following up with an announcement that you have declared yourself the new owner. In this interval, if someone else announces that they have been actually working on the project, their claim trumps yours. It is considered good form to give public notice of your intentions more than once. You get more points for good form if you announce in many relevant forums (related newsgroups, mailing lists), and still more if you show patience in waiting for replies. In general, the more visible effort you make to allow the previous owner or other claimants to respond, the better your claim if no response is forthcoming.
If you have gone through this process in sight of the project's user community, and there are no objections, then you may claim ownership of the orphaned project and so note in its history file. This, however, is less secure than being passed the baton, and you cannot expect to be considered fully legitimate until you have made substantial improvements in the sight of the user community.
So,again, if you have patches, what you should do is attempt to contact the maintainer of the extension and submit the patches. If the owner says he is not interested in developing it any more, consider starting a getting a repository on joomlacode (or making one on your own site) and invite people to help.
Some Resources on moving to 1.5
Andrew Eddie has a bunch of articles on converting including a handy cheatsheet for translating 1.0 into 1.5.