How to propose a bug fix or enhancement
First check if your change has already been entered into Manuscript, and consider watching the overview video of the steps documented below. (Manuscript used to be called Fugbugz, you will see this old name used a lot instead)
In order to propose a bug fix or enhancement for Pharo you need:
- An account for the Manuscript Pharo Issue Tracker, so that you can change the status of an issue. This status changes is important because it will launches the monkey (a robot that will load and run the tests automatically).
Pharo 70 and git
Since Pharo 70 alpha, Pharo is managed with git and hosted on github. To submit a fix we suggest
- make sure that you use the latest image
- do a Pull request in the development branch. For a full description, see here.
- Watch the video from the Pharo TechTalk February 2018 for a step by step tutorial.
Old Procedure (for pre git for Pharo versions: 40, 50, 60)
You also need an account on SmalltalkHub with commit rights to the Pharo Inbox. Note, in the recent version of SmalltalkHub this is a public repository. If you encounter problems you can ask for commit rights on the *Pharo Developers mailinglist>http://lists.pharo.org/mailman/listinfo/pharo-dev_lists.pharo.org*.
In summary you will do the following:
- Take the latest stable or latest development system, ideally using the latest virtual machine (check the downloads).
- Do a fix for a given bug, or a new bug you entered on the Manuscript issue tracker.
- Create a code fix (ideally with a unit test exercising the working code)
- Create a slice (group of packages):
- Open the Monticello Browser.
- Open the Slice Maker by clicking the "Slice" button.
- In Slice Maker enter the Fogbugz/Manuscript issue number and "grab" the issue summary.
- Select the dirty packages relevant to your bug fix. Dirty packages are prefixed by a start and are sorted to the top of the list of packages.
- Verify your changes (click on changes button)
- Select the Pharo60 repository
- Select your slice
- Press changes in the Monticello Browser and verify that your changes are the correct one.
- Publish the slice to Pharo60Inbox:
- Select the whole slice (not it's individual packages).
- Select the SmalltalkHub Pharo Inbox repository.
- Press the "Save" button to commit your slice to the inbox repository
- Verify that your fix loads: take a fresh image and load the slice you published.
- Update the bug entry to mention that you submitted a slice in the inbox.
- In Fogzbugz, click on "Resolve" to Change the state of the issue to "Resolved: Fix Review Needed" and ensure that the milestone is set to the next release of Pharo.
- Now you can feel good!
Monkey checking your submission
The fix then will be checked by an automated tool (the monkey). If this test fails, the state of your issue reverts to "Work needed". In success, the state will be "Fix Reviewed by the Monkey". This is where humans come into the picture: your code needs to be reviewed, if possible by 2-3 people. If they accept it, the state moves to "Fix to Include", after which it will be committed to the development branch as soon as possible.
You can also contribute to Pharo by proposing enhancements following the same process. Note that all code submitted to the Pharo repositories is licensed under the MIT license. Do not forget to sign the license agreement.