As you may know, all of the extensions listed in the Joomla Extensions Directory (JED) are released under the GPL (Gnu Public License).
In simple terms, this means that anyone may use the code freely. They may also modify it and republish it. However, they have to attribute the original coder for their work. So, you could not take an extension from the JED and republish it without including the original copyright information. This goes for templates and translation files as well.
From time to time, there has been developers who didn't respect this. But, as with most things like this, its eventually discovered. Last year, a developer ripped off a weather plug-in from Rockettheme. There was a lot of commotion in the Joomla community about it, and the culprit had to apologize publicly. The damage was still done. And it takes a lot of time to recover from it.
There are numerous examples of Joomla templates being republished without the proper attribution.
This week - an example of a ripped-off plug-in surfaced in the Joomla community. Or wait... Did it really??
The Crazyegg plug-in - ripped off or not?
Yesterday, I published a post about the Joomla Crazyegg plug-in. As I use the Crazyegg service, I was thrilled to see that there was a Joomla plug-in available. I downloaded the plug-in, I installed it and I tested it. It worked perfectly, so I decided to tell you about it. All was well, I thought.
When I arrived at work today, however, I had a lot of PMs on Skype and Twitter. As it seems, there had been a hard discussion around this plug-in. Nicholas K. Dionysopoulos, a Greek developer, thought his Crazyegg extension had been ripped off by the developer of the plug-in I mentioned. After all, he had developed and released the plug-in before the one mentioned (I have now included both in my article).
Apparently, there was as lot of discussion in a amongst Joomla people in a private discussion group I belong to yesterday. Thus, I removed the blog post until I knew more about what had happened.
In the meantime, the two developers had contacted each other. As it seems, they both did the same work at the same time. They both used the same code base, and they both used the same descriptive text from Crazyegg. What are the chances??
Nicolas actually developed his version after getting a request from Crazyegg about creating a Joomla plug-in.
GPL is a mixed blessing for your software. While it allows you to share your code and effectively act as a failsafe in case someone tries to further develop your code without your consent – you can copy back the changes – it doesn't do anything to protect you from plagiarism. Even though plagiarism is unethical, it's legal per the letter, but not the spirit, of the GPL. We've seen numerous such examples over the years, that it makes us feel suspicious. Sometimes, too suspicious. Or, even, stupidly suspicious.
I plea guilty of being stupidly suspicious. When I saw that a plugin with identical function, similar – yet, not identical – code and similar introduction text was published just a week after I had published my own (pretty much made on demand of the CrazyEgg owners), suspicion kicked in. Mix in a bad day and trying to compare code samples at 1 a.m. and you have the recipe for a perfect blunder. I overreacted, and did so publicly. That was wrong and unfair on my part, so I should really take all the heat for not practising what I preach: Never be quick-tempered.
Pete, as I said on my email, I'm sorry for all of this and if you ever drop by Athens, call me and I'll buy you a beer.
My CrazyEgg plugin was the second plugin that was created by me and only created when no other Crazy Egg Integrated was found on the Joomla Extensions Directory. We went away and coded a few lines of code that would integrate it into any Joomla site. The pseudo code for the plug-in is very basic and any second year programmer in university should be able to create this plug-in. We submitted it to the JED and got listed within a day. Very happy.
After a few weeks of promoting the plugin, Nicholas contacted me stating that we had copied the code from his version of the CrazyEgg plugin.
I inspected Nicholas' code and although it was similar it was still very different. If anything Nicholas' code is better and more efficient as I has used a while loop function to split the account number required for the crazyegg insertion and he had optimised his code better to make the plugin smaller.
So what came first, the chicken or the crazyegg?
I think in the end I had submitted the plugin after Nicholas but got approved before him. We had also chosen very similar names for the plugins, CrazyEgg Integrator vs CrazyEgg Integration which is the only thing that is really similar but there was no way that we could have known that.
So in reality, we both coded similar plugins in parallel on opposite sides of the planet and now have drinking buddies in each other's country.
Also, use crazy egg, its a great product.
From this, I can take a way a couple of reminders:
Don't shoot until you have a clear target
It's very easy to go after someone on the internet. Accusations are easy to post on Twitter or elsewhere. If the claim later lacks credibility and / or is a false one, it can be hard to repair the damage. So, be careful about what you say online - check your sources first and know that your claims are valid. Common sense, I would say, but oh so easy to forget online ;)
Attribution is crucial
Most of the time, the GPL is a blessing. It let's developers build upon other people's work and improve it. That's great as long as the work is attributed correctly. If you borrow code, give credit where credit is due.
This said, I believe this to be an unfortunate coincidence and an honest mistake by all involved parties. I'm happy it resolved quickly and without serious damage to anyone. All is well in the world of GPL and Joomla, it seems :)