One of the great things about the GPL is the freedom that it grants to build upon other people's work, you are free to take any GPL licensed theme, plugin or piece of software and fork it to extend it, customize it to your liking or use it as the base to create a new item entirely. The only rules are that you must credit the original creator and your forked item must also be distributed under the same GPL license. It's a powerful concept and beautiful in its simplicity.
Unfortunately, sometimes there are disagreements and accusations which happen - people spend a lot of time developing a piece of open source software which when released under the GPL anyone is free to take and use so you can get instances where paid software is given away free or changed and sold under a rebranded name etc. The thing to note is that while code under the GPL can be freely used, trademark law still applies to brand names so you couldn't sell someone's plugin using the same name, but you are free to change the name and any references in the source code and release it as something else.
A very good website which started recently called WP & Legal Stuff, explains the concept of the GPL very thoroughly in this post. Also have a read of some other posts on the subject - The GPL and assumptions of automatic inheritance and WordPress themes, the GPL and the conundrum of derivative works.
Forking is just the process of taking someone elses source code and modifying it to start development of your own code. In this post I'm going to look at some WordPress related items which were forked from others and talk about the background of each one.
Fittingly WordPress itself actually started life as a fork of blogging software b2 / Cafelog. b2 was an open source blogging script created by Michel Valdrighi who later stopped releasing updates, mentioned in a blog post by Matt Mullenweg in 2003 he mentions his idea of forking it, the first post comment is by Mike Little who says :
If you’re serious about forking b2 I would be interested in contributing. I’m sure there are one or two others in the community who would be too. Perhaps a post to the B2 forum, suggesting a fork would be a good starting point.
Matt and Mike teamed up and worked together and on the 27th May 2003 released version 0.7 of WordPress to the world.
The history of WordPress is a perfect example of how the GPL was intended to work - a piece of software which was no longer updated was forked to create something new and actively updated and grown to the point today where it now powers around 20% of all websites!
Ghost started off as an idea to fork WordPress to create a new blogging platform, while ultimately they ended up coding the software from scratch using different technology to WordPress, I am including it here as the idea itself and how the Ghost foundation is run is inspired by WordPress, even if the code is not.
The project was funded using crowd-funding on KickStarter where it raised £196k ( it's initial goal was just £25K ). The idea behind it is that WordPress has moved away from being a simple blogging tool to a more advanced CMS and Ghost wanted to go back to it's roots and focus on the blogging aspect.
I looked at Ghost in more detail in my post "WordPress Competitors" so take a look at that also.
WooCommerce is a WordPress plugin for creating eCommerce websites, since it's launch it has proved hugely popular - with a 20% market share amongst other eCommerce platforms it is now challenging the top solution Magento. You can read my detailed comparisons of free eCommerce solutions here.
WooCommerce started life when it was forked from the JigoShop WordPress plugin and at the same time they also hired the two developers who created JigoShop, Mike Jolley and Jay Koster. At the time of launch, there was some controversy about how WooThemes went about the forking, the concerns centered around whether it was right to employ the developers who created the JigoShop plugin after another company had been paying their full-time wages for over a year. It seems that WooThemes offered to acquire the rights to JigoShop initially but they couldn't reach an agreement as the creators of JigoShop felt that Woo "grossly undervalued" the business.
Despite the initial concerns over how the plugin came to be, WooCommerce has gone on to become, in my opinion, the best solution for eCommerce on WordPress. I personally use it to run one of my websites and have found it to work extremely well and the there is a whole ecosystem of plugins and themes based around it which makes it suitable for many different types of eCommerce websites.
CMS Commander is a plugin which I recently reviewed, which allows you to manage multiple WordPress installations from central location. I became aware it had been forked from ManageWP when a member of their staff left a comment on that post:
Awesome to see how Thomas and his team took the ManageWP code (it’s all good – they can use it freely under GPL and we’ve been properly credited for our effort) and evolved it in an entirely different direction from ours, focusing on website content as opposed to our focus on website deployment, management and security.
That’s the beauty of the open source community :)
CMS Commander places more focus on content generation for multiple WordPress sites with tools for autoposting from different API sources, where ManageWP is soley focused on providing Management tools, backups and updates etc. Its a good example of a plugin being forked and then taken in a different direction.
Wp Sync DB
WP Sync DB is "A WordPress plugin that lets you push, pull, and sync database tables between WordPress installations. " it was forked from the popular WP Migrate DB plugin. Unfortunately, the plugin's Github page was subject to a DMCA takedown request, as it has used copyrighted content from the website of WP Migrate Pro which violates the terms of the GPL. This has since been corrected and you are able to download the plugin again.
Tips for Forking and Further Reading
If you would like to fork an open source project, here are some tips to do so correctly.
- If the project seems abandoned, try talking to the original author first and see if you can "adopt the plugin"
- Make sure you don't violate trademarks or copyright
- Give the new project a unique name so it is not confused with the original
- Credit the original author within the source code and documentation
- Make sure your new work is released under the same GPL license.
Some articles about Forking :