You take it back to the dealer and tell them your problem and sit in the waiting room and wait. And wait. A week goes by and the receptionist tells you the mechanics want to know what roads you've been driving on and in what gear. So you make a list of all the roads you've driven and try to guess what gear you were in and give the list to the receptionist. Another couple days go by and then the receptionist tells you the mechanics say that the floor vents work fine for them and maybe you should drive it on a different set of roads.
You've been living off of chips and soda from the vending machine down the hall and when they tell you this you think, "This is nuts. I haven't showered in a week and a half and all these knuckleheads do is give me a non-solution?"
You storm out of the dealership and drive the car to your local mechanic. You explain the situation and the mechanic says he'll take a look and tries to pop the hood but it's locked. "Sorry," he tells you, "Only the dealer can work on this vehicle. Its engine compartment is locked with a dealer key."
You take the car back to the dealership and beg and threaten and plead for them to fix the car and they promise you that they'll take a look sometime in the near future.
This is the story of closed source, but with software instead of cars.
What is Closed and Open Source?
Source refers to source code, the human readable version of what makes a program run. Closed source is where the source code can't be read and open source is where it can be read. The importance of being able to read it is that code that can be read can be fixed or improved by anyone with access to it.
Joomla! is written in PHP, which is largely an open source language. If you can access a file in PHP, most of the time you can read it. The only time you cannot is when someone has taken steps to obfuscate it using an encryption tool.
Why do developers encrypt PHP and close the source?
They do this to prevent the sharing of their program, primarily to increase their profit by forcing everyone to purchase through them. If a program is open source it can be easily shared, and a shared program isn't purchased and comes at a loss to the creator.
As a developer, I know it's critical to be compensated for my skill and effort. Developers who are not paid become busy workers in another industry who write code only when they have the time and interest. It's in everyone's best interest that the people who contribute solutions are rewarded.
However, as my car example illustrates, closing the source on a project is not a good solution. Where the developer hurts when everyone pirates his work, the users hurt when a developer encrypts it.
A Real Example
I'm currently working on a project in which we made the mistake of employing a closed source extension from a popular extension provider. The reason we did it was that this provider also created the open source extension that the site was based on and we thought the integration with that extension would be superior.
Even though there are pages upon pages of documentation and a support forum, we've run into around 10-15 serious issues that impacted our implementation and have no apparent solution. In almost all our problems with this extension, I've had to code around it to provide fixes and there are several issues that are simply unresolved because there is no way to implement a work around. This makes us entirely dependent upon the provider to implement these fixes. We have some of which date back almost two months, since when the provider has released several feature updates to other extensions.
In addition to these obstacles, we need some tiny but important changes to the extension which I could easily accomplish. However, because the source is encrypted, I cannot make these changes.
The Drawbacks for Using an Encrypted Extension
- You're absolutely dependent upon the extension provider.
- Support requests become a bottleneck for the provider, ensuring that you have to wait for your problems to be addressed. With open source anyone aware of your situation might post a solution (like on the Joomla! forums).
- The provider can only troubleshoot problems they experience. With open source anyone can replicate and troubleshoot a problem.
- Any improvements needed must be done through the provider. If they're busy or not interested in working with you, you cannot do anything about it.
- No other extensions can reasonably augment a closed source extension, because no one can tell for sure how it works.
Avoid these problems by using the JED
As you can see, using an extension that isn't open source can create some serious trouble for your or your client's website.
However, it's relatively easy to avoid the problems of dealing with encrypted programs: just use the Joomla! Extension Directory. Any extension, free or commercial, that is available on the JED is required to be open source. If the extension you're looking for isn't listed on the JED, then it's possible that it has been encrypted and is not open source.
Remember: purchasing software is an investment and it's not worth investing in something that you don't have control over, the same as buying a car that only your dealer can fix. Don't put yourself or your clients into that corner by using encrypted software. Instead, support open source and the developers that release it. It's critical for your site, and for the Joomla! community that it is part of, that we share our problems and develop solutions together.