I'm a PHP developer for a living but have never worked on or contributed to any open source projects before.

I am developing a CMS for my own use. I have a working prototype and I think that once it's ready (probably a couple of months time) this could be something the PHP community would be interested in.

I'm a fairly confident developer but there are areas where my knowledge is lacking, especially when it comes to open source issues:

  • What's the best way to publicise the project and/or find others who might be interested in collaborating
  • My CMS is powered by CakePHP and basically sits as a layer on top of it. I've forked the CakePHP project on GitHub: I've used version control systems (SVN) before but I'm fairly new to GIT so want to be sure I'm doing things in "the best way"
  • How can I find out about licensing issues? Which open source license would be best for my app? Also, my project borrows from a lot of other open source projects, for example I have sections of code (which I have heavily modified) but which had copyright/licensing notices in place- I've no idea what my obligations are in terms of keeping these in

These are just a couple of examples of the questions I have, but I feel like there must be some resources out there which would be useful to me. Where's the best place to get started, what are the best communities/sites out there which cover these issues? I've had a look around but haven't been able to come up with much...

  • Had a couple of good answers about licensing stuff, any ideas about the other questions? Possibly should have split this into a couple of posts!
    – user916336
    Aug 28, 2011 at 17:12

2 Answers 2


I'm no Lawyer, but I'll give this one a try.

CakePHP is licensed under the MIT license, which basically means it permits reuse within proprietary software on the condition that the license is distributed with that software. It is compatible with GPL licenses, which a lot of open source projects released under.

As for the other projects you "borrow", you'll have to check their license types and check their compatibility with each other and the license type you decide to use. If any of them use a GPL license, you'll also have to release with GPL, as the terms of the license state

The GPL is the first copyleft license for general use, which means that derived works can only be distributed under the same license terms.


The GPL is the first copyleft license for general use, which means that derived works can only be distributed under the same license terms.

My suggestion is to release under the GNU GPL v3 license as it gives you adequate ownership rights over your work while allowing others to potentially use it in both commercial and open projects. Remember, though, the licenses of the "borrowed" projects must be compatible.

As for best practices with Git and Github, use git submodule to include other projects in your own library. This is better than including the files directly as you aren't recommiting the work as your own.

$ git submodule add git://github.com/cakephp/cakephp.git vendor/cake-php
$ git submodule update --init
  • git submodule is also something I'm unclear on. For example, my project uses jQuery and jQuery UI- how can I include it as a submodule as the source on GitHub is split into many files and folders. I've had the same thing with HTMLPurifier which I'm also using. The files I need are in one subfolder, but with git submodule it seems like I have no choice but to either include loads of extra stuff I don't need which will bulk out my project unnecessarily, or as you say commit someone else's work as my own!
    – user916336
    Aug 28, 2011 at 11:52
  • As is the nature of licensing, you can't split up and include only the files you want. You should include the whole project as it is packaged. git submodule add git://github.com/jquery/jquery.git public/vendor/jquery
    – adlawson
    Aug 28, 2011 at 11:56
  • Others don't seem to do this though: take Wordpress, they seem to have just stuck the minified files they need from jQuery into a folder and committed them: github.com/wordpress/wordpress/tree/master/wp-includes/js/…
    – user916336
    Aug 28, 2011 at 12:01
  • 1
    WordPress uses SVN for version control. Their Github repository is simply a mirror. As far as I'm aware, there is no "submodule" capability in SVN, so they didn't have any option but to recommit it. On another note, don't take WordPress as an example of best practice.
    – adlawson
    Aug 28, 2011 at 12:06
  • Unless I'm missing something there doesn't seem to be a way to do this in the case of jQuery. Take a look at their repo github.com/jquery/jquery, it's just hundreds of individual .js files and a build script- so I can't include it in my project without just downloading a copy from jquery.com and committing it myself, or am I wrong?
    – user916336
    Aug 28, 2011 at 12:12

Check out this guide from Eric S. Raymond (the rest of the book is also worth reading).

Personally, I wouldn't worry about it much - you're not going to make money off of this directly, and neither is anyone else, as there is an abundance of excellent free general-purpose CMSs already. I suggest you go with the most liberal license you can (MIT or BSD), unless you borrow code that is under a viral license (typically GPL or a variety thereof), in which case you are forced into that license one way or another.

Be sure to carefully read all the licenses of the libraries and snippets you're using; they should state whether you are allowed to redistribute and modify the code, and whether you need to include them in any derived works (most licenses require it, and even for those that don't, attribution is the least you can do to thank the original authors for their work).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.