First and foremost, you must be aware that the Pharo project only accepts code published under the MIT license. By publishing your code in the SqueakSource Pharo or PharoInbox repositories, you are agreeing to this condition. There is a table that explains the difference between licenses and describes the MIT license at http://developer.kde.org/documentation/licensing/licenses_summary.html
We do ask people to sign a form to confirm this acceptance, and it can be downloaded from: http://code.google.com/p/pharo/wiki/LicenseAgreement.
Importantly, we value your fixes and always try to look at them and give feedback. This works best if you create a bug entry in the bug tracker, as without it we may have problem giving you feedback or letting you know that there is another fix.
With this out of the way, here are the steps to submit your contributions:
- Track and tag your change/Fix/Enhancement:
- Add an entry to the Issues tracker describing your change (include the package version name of the package). Set the status to "Fixed".
- If your change comes from Squeak via their bugtracker (mantis: http://bugs.squeak.org), add the label "Type-Mantis" and add the Mantis ticket number in front of the subject. Else choose another appropriate label.
- Announce your contribution by sending a mail to the mailing list and herewith ask to have somebody review your change. This person should change the state of the issue to "Verified".
- Wait until your change was harvested (i.e., pushed into the update stream). The status will then be changed to "Closed".
The most important point is that you check your fix in a fresh (probably latest) image. There are two alternatives to packaging your code: You can send a changeset or a set of packages. For complex changes that involve several packages use a slice as there is a much better merging support. While we prefer packages, if it is easier for you send changesets, we can accept those too.
- Changeset
- Prepare a changeset with your changes. File it out. Important: Put your Full Name instead of your initials, as it will help up to contact you (which is often necessary), and ONLY use alphabetical characters with NO spaces.
- Load your changes into a fresh image:
- Download the latest UNSTABLE Pharo image from https://ci.lille.inria.fr/pharo/job/Pharo%201.4/.
- Launch the fresh image and load the latest updates by using the the System menu.
- Important: Save the image at this point, so that you don't need to reload the updates when you test your changes.
- File in your changeset and test. It is good to have a look at your change with the code browser (by dragging and dropping your changes on the image and selecting code) or opening a changesorter on the code you just loaded.
- Package: If our modification affect only one package you may do the following but we prefer that you create a slice, because it is easier to find for the integrators when multiple persons have contributed fixes to the same package, and (should) always contain the issue number in the tracker.
- Open the Monticello browser. You should see only one package marked as modified (with an asterisk before the package's name).
- Select your package-cache repository on the right hand pane.
- Save the package (click on the "Save" button). An mcz package will be saved in your cache. You will be prompted for a log message, type a useful comment. PLEASE add the bug entry number in the comment.
- Slice: Your modification affect more than one package : you have to create a SLICE package in your package cache
- Open the Monticello browser. You should see one or more packages marked as modified (they have an asterisk before their name).
- Select your package-cache repository on the right hand pane.
- Create the new SLICE (click on the ''+SLICE'' button) and follow the instruction. A SLICE is just a package with dependents ones, so you have to indicate the dependent packages (by doing the next steps).
- Make all the modified packages (the ones with asterisks before their names) required by your SLICE package. To do this, right click on the SLICE package in the left pane and select ''add required package'', then select the package from the next menu. Repeat for all modified packages.
- Save the SLICE package (click on the ''Save'' button). An mcz package will be saved in your cache for the SLICE package and all the modified packages. You will be prompted for a log message for each one of them, type a useful comment for the first package, copy it and paste it on the others. Make sure to give the number of the issue your SLICE addresses in the comment. Publish the package to PharoInbox SqueakSource repository:
- In the Monticello browser add the PharoInbox repository: make sure the package is selected in the left pane, then click on the ''+Repository''. Select ''HTTP'' from the menu, then make sure that the location reads ''http://ss3.gemstone.com/ss/PharoInbox''. Don't worry if you make a mistake just send a message to the mailing-list and we can erase it. No stress.
- Finally, click on ''Save''.
- To prepare for the next step, quit the image without saving.
- Test your package in the clean image:
- Relaunch the clean Pharo image. If you didn't save the image after loading the updates, load the updates (I told you it was important!).
- Open the Monticello browser.
- Open your package-cache repository (select the package-cache in the right pane, click on the ''Open'' button).
- Load your package. If it loads without errors, you are ready for the next step. If there are errors, try again, or ask for help in the mailing list.
Congratulations , the world is one step closer to being a better place!
We greatly appreciate your effort.
In case of problems, you can send a changeset to the mailing list, but please only do this as a last resort.
See How to contribute screencast : http://pharocasts.blogspot.com/2010/03/how-to-contribute-to-pharo.html