This document outlines the policy on contributions to Sable-UQAM projects. In the text below, "Sable-UQAM projects" means the whole software project collection, including SableVM, SableCC, and other software projects managed by the project. In order to accept your contributions, the Sable-UQAM Research Group requires that you confirm the following: 1- You have maintained a "clean-room" status with respect to all work you contribute to Sable-UQAM projects. Explanations: You should not have had access to confidential material under terms and conditions that preclude contributing to the development of Sable-UQAM projects. Having agreed to the Sun community source license (SCSL) or any similar non-disclosure agreement, for example, would be such a situation. 2- You ARE the copyright holder of all work you contribute to the project. Explanations: Your university or your employer (if you have one) might be the real copyright holder, if you are paid to do the work or if your university got you to sign a document accepting a school policy that all student programs are the property of the university. In fact, we are a little more permissive, but on a case by case basis. Usually, no code that is not written by the contributor himself should be added to the repository. If you want to assign the copyright to your code to the Free Software Foundation, for example, please take arrangements with us. 3- You confirm that you either: (a) license all work you contribute to the project under the terms of the GNU Lesser General Public License (LGPL) [or under the license terms of the module you are contributing to, if different], or (b) release all work you contribute to the project into the public domain. Explanations: Copyright assignment from a contributor is not asked for. A consequence of this policy is that the contributor remains the copyright holder on the code he himself writes, and can thus license it separately to other parties under any other license. 4- You give the Sable-UQAM Research Group the right to make changes and add clarifications to the license terms on your contributed work, if it becomes critical for its software projects. Any change will be made with the objective of ensuring that: (a) the source code for your work (and our work) is distributed along with derivative works (unless the original license did not enforce this), and (b) it is possible to develop proprietary derivative works, and (c) the work qualifies as free software, as defined by the Free Software Foundation, by providing users the four kinds of freedom outlined at http://www.gnu.org/philosophy/free-sw.html, and (d) the work qualifies as free software according to the Debian Free Software Guidelines (DFSG) at http://www.debian.org/social_contract#guidelines. Explanations: It unlikely that this becomes necessary, as the GNU LGPL achieves these objectives, as far as we can tell. Yet, we ask for your permission to do so to prevent any problems in the future, if it was discovered that the LGPL (or other licenses used in the project) had unforeseen consequences, or required some clarifications. 5- You agree to these terms for ALL works you contribute to the project. Explanations: If we give you an account in our code repository, these terms apply to all code you add into the repository, whether the code is part of the main source tree of Sable-UQAM projects or just a directory in your sandbox. There are exceptions to this, but they are granted on a case by case basis, and only if there is a good motivation for it. If you do not wish to work under these terms, there is no obligation for you to use the repository or to contribute your work. If you have a sandbox in the code repository, you may not add papers, reports, and theses to your sandbox. Mainly, your sandbox is a publicly accessible place, with GNU LGPL (or public domain) stuff in it. You are not allowed to put any irrelevant stuff into it. No binaries! However, documents like this one and "technical notes" that serve as project documentation must be licensed under the terms of the GNU LGPL and put in your sandbox, so that they can be modified to reflect changes as the project matures.