Squeak
  links to this page:    
View this PageEdit this PageUploads to this PageHistory of this PageTop of the SwikiRecent ChangesSearch the SwikiHelp Guide

How to contribute to Squeak (Difference)

How to contribute to Squeak

Squeak is maintained by volunteers around the world using a simple community driven process known as the *Development Process>https://squeak.org/development_process/*
Contributions may take different forms.
- One may fix a defect in code or help text,
- create new graphical elements like icons or fonts,
- extend the base system with new frameworks
- or even build a whole application package.
See section below for detailed steps.
Squeak has a built-in package management tool called *Monticello* that makes it very easy to gather and upload *ChangeSet* to repositories.
Many packages also use *Monticello* for version control. It started with *http://www.squeaksource.com/* as the repository which is still in use. Newer projects are hosted at *SmalltalkHub>http://www.smalltalkhub.com* and *SqueakSource3>http://ss3.gemtalksystems.com/*.
!!!Contributing to the Base system
If you want to contribute an improvement you can submit it to the *Inbox* repository. Developers on the squeak-dev mailing list will be notified and the change might be discussed there. Accepted changesets are merged into the main trunk by Core Developers and the rest are moved to Treated repository.
!!!Contributing Bug Fixes
-*Commenting Bugs and Fixes* is where you can help even if you're completely new to Squeak. For example, if you had a problem, asked on the mailing list, and someone more experienced fixed it, you could help out by commenting bugs and fixes.
-*Reporting Bugs and Fixes* explains what to do if you find or fix a problem, or want to improve functionality in the image.
!!!Contributing a package
*SqueakMap* If you write a cool package, this is where you should place it. This catalog allows anyone to install your code easily from Squeak.
_
!!Detailed steps for submitting a changeset
<i>... adapted from *Dave Lewis post in squeak-dev mailing list>http://lists.squeakfoundation.org/pipermail/squeak-dev/2017-October/195561.html*</i>
#Create an account on source.squeak.org
#-Using a web browser, go to http://source.squeak.org.
#-On the left side of the web page, click on "Register Member".
#-Fill in the information on the form. In the "Initials:" field, use your regular author initials, same as for method stamps.
#-Click "Save".
#-Remember the password that you just defined, because you will use it in the next step below.
#Open the inbox repository
#-In your Squeak 5+ image, open a Monticello Browser.
#-If you <b>don't</b> see http://source.squeak.org/inbox as a repository in the right hand pane of your Monticello browser, add it:
#--Click on <b>+Repository</b>
#--In the dialog, change "http://source.squeak.org/inbox" in the location, put your author initials in the "user" field, and put your new password in the "password" field.
#--Click "Accept"
#--Verify that http://source.squeak.org/inbox now appears as a repository.
#Verify the differences between your image and the latest version in the trunk repository:
#-Update to latest version (world -> help... -> update code from server)
#-In the Monticello browser, highlight your package on the left, and repository "http://source.squeak.org/trunk" on the right.
#-Click the "Changes" button on the top.
#-Verify that these are the changes that you want to submit, no more and no less.
#-If you see extra changes, open trunk repository and look for new changesets (underlined) for this package. Merge them before proceeding further.
#-Use *Change Sorters>FAQ: Change Sorters* to split or merge changes into different sets. If something looks wrong, stop and ask for tips on the squeak-dev list.
#Submit your changes to the inbox
#-Now highlight the "http://source.squeak.org/inbox" repository on the right pane of the Monticello browser, and your package on the left.
#-Click the "Save" button on the top of the Monticello browser.
#-In the save dialog window that opens now, verify that the changes listed on the left panel are what you would like to submit.
#-Edit and replace "empty log message" text on the right panel with your patch description. The patch gets sent to the mailing list, so put enough information for core-developers to pick this commit for review. If the patch emerged from a discussion in mailing list, add a link to the thread.
#-Click "Accept"
#-Wait for the changes to be sent to the inbox repository.
#Follow ups
#-Your new update should now appear in the inbox. In the Monticello browser, highlight the inbox repository and click the "Open" button at the top. A Repository Browser will open. Click the "Refresh" button, and you should see your new entry listed. You can also find in through the web interface for http://source.squeak.org.
#-On the squeak-dev list, a mail notification should appear within a few minutes to notify the list about your new submission.
#-You can reply to that notification on the list, or to your earlier mail thread to offer any other explanations or to ask someone to look at your inbox submission and move it to trunk (or to "treated inbox" if it is not suitable for trunk for some reason).
_
A good commit message should state what was changed, why and possibly include a small code snippet to explain the reason for the change. Someone, a few years down the line, should be able to read the patch and understand why the change was made. See http://forum.world.st/The-Trunk-Compiler-eem-387-mcz-tp5079866.html for an example.
_
!Handling Commits from the Inbox by Core Developers
!Merging Commits from the *Inbox* by Core Developers
If a change in the inbox is accepted the following should be done by a core developer to merge it:
#Merge the commit in an up-to-date trunk image
#Make sure the commit works with the up-to-date image
#Commit the merged state
#The merge commit has now two ancestors: the previous head of the trunk repository and the commit from the inbox. To provide a consistent history, we have to move the inbox commit to the trunk repository. Therefore go to *http://source.squeak.org/inbox* and look for the commit under versions. After clicking on the version you see details of the version and two buttons which allow you to move the version either to trunk or the treated inbox. Use the move to trunk button to move the change to the trunk.
#The merge commit has now two ancestors: the previous head of the trunk repository and the commit from the inbox. To provide a consistent history, we have to move the inbox commit to the trunk repository. Therefore go to *Inbox>http://source.squeak.org/inbox* and look for the commit under versions. After clicking on the version you see details of the version and two buttons which allow you to move the version either to trunk or the treated inbox. Use the move to trunk button to move the change to the trunk.
In case there are no new commits in the trunk repository, core developers can also simply use the "Move to Trunk" button on *http://source.squeak.org/inbox*.
_
!Repository Locations
- The current VM code is kept in a Git repository hosted at *https://github.com/OpenSmalltalk/opensmalltalk-vm*
- The code for Classic VMs is located at *http://www.squeakvm.org/*.
- The core Squeak images are available for download from the main Squeak site - *http://www.squeak.org*
- Apply the latest updates from the "Squeak" button in the Main Menu or using code (Utilities updateFromServer).
!Guidelines for Core Developers for Trunk submissions:
#Live with the code for a few days first.
#Sharing it with others extra review eyes. Use Inbox if the code is already in it.
#When saving the MCZ version,
##Arrow through every single change and review it.
##Use the description to explain <i>why</i> the change is being made rather than <i>what</i>.
##Remember to consider all the other "objects" of the MCZ besides just the code and description, specifically, there are the pre and post scripts, as well as the MCZ name.
##Consider batching up trivial improvements (i.e., a fixed misspelling of a comment) together and/or piggy-backed with other non-trvial change within that same package.
_
!Repository Locations
- The current VM code is kept in a Git repository hosted at *https://github.com/OpenSmalltalk/opensmalltalk-vm*
- The code for Classic VMs is located at *http://www.squeakvm.org/*.
- The core Squeak images are available for download from the main Squeak site - *http://www.squeak.org*
- Apply the latest updates from the "Squeak" button in the Main Menu or using code (Utilities updateFromServer).
_
!!More
-The current *development process>https://squeak.org/development_process* of Squeak was first posted in *https://squeakboard.wordpress.com/2009/07/02/a-new-community-development-model/*.
-*Harvesting Process* If you want to get the big picture of how people's contributions turn into a stream of Squeak releases. (No longer used, historical)
-*Mantis Server* The bug/fix tracking tool for Squeak (toor arely used, has a backlog of problems that need attention and pruning; get to it!)