Adopt a Class


by James Ladd on December 22, 2011

Puppies

Redline Smalltalk requires a runtime of Smalltalk classes that people can work with to build their own Applications. There are quite a few Smalltalk classes in a simple default runtime, a few too many for the small set of core contributors to do on a short time frame, and we need your help to get a Smalltalk runtime done. What we are asking is that you adopt a Smalltalk Class and implement it with tests. The adoption process is very simple, and class class, we at Redline and the Community will love you for it.

To adopt a class you should check out the Redline Smalltalk source code and add your name to the class you would like to adopt in the file ‘OBJECTS-AND-PROTOCOLS’ and then commit that change and issue a pull request. When we accept the pull request the class is yours. Any conflicts will be resolved on a first pull-request basis.
Update: We have tried to make adopting a class easier, please see “Executing Smalltalk Tests” in the Getting Started with Redline Smalltalk post.

The file ‘OBJECTS-AND-PROTOCOLS’ lists the Smalltalk classes we are implementing for the first version of Redline Smalltalk. These classes are defined in the Blue Book (Smalltalk-80 The Language and its Implementation) along with their associated protocols.

A requirements of adopting a class is that you implement a test for each method of the class in an associated Test.st file. For example, if you adopt Object then you will have an ObjectTests.st file containing tests for each method on Object. Should you find a bug during implementation or testing then please raise an issue in the main github issues list. During implementation you may find you need a new primitive in which case you are free to implement it or you can raise an issue to have it implemented by James or Rob (experts at this now).

While the runtime is being implemented we have a very minimal testing framework to assert truths about your methods. See the file Assert.st for the provided methods. This form of testing should be sufficient to get us started and provide some level of confidence things work correctly, while protecting us from possible regression errors. We will have an SUnit or similar framework soon.

It is recommended that you look at the Getting Started with Redline Smalltalk post before adopting a class.