Category: Squeak

  • Code Contributions to Squeak

    Code Contributions to Squeak

    Squeak is a highly open system, which makes it very easy not only to explore every interesting detail in the image but also to customize everything at your will. Whether you would like to adjust some colors, fix a bug you have stumbled upon, or add a new feature, (almost) everything is flexible and under your control.

    Squeak lives from your contributions! Squeak is powered by volunteer open-source contributions. Whenever you make an adjustment to the base system, you might ask yourself: “could others benefit from this change, too?” If the answer is yes, we invite you to consider contributing back to the community. Or if you just discovered a bug, have a question, or would like to discuss an idea, our forums are open!

    The Squeak Community Model

    The majority of communication about the Squeak development takes place on the squeak-dev mailing list. There is a public mailing list archive, but to engage in any discussion, you have to sign up for the list. Alternatively, you can report issues on our GitHub issue tracker.

    On the mailing list, ideas, bug reports, and patches are exchanged. Version control for all Squeak packages is run via Monticello. All versions that are uploaded to any Squeak package will automatically be forwarded to the list for further discussion. There are three package repositories (hosted on https://source.squeak.org/):

    • The Trunk repository contains the latest integrated patches. (Only core developers have write access.)
    • The Inbox repository is the place for all new suggestions and requests for review. Everyone can upload proposals here without the need to create an account. (You can still create an account on https://source.squeak.org/ and edit the repository info of the inbox repository in the Monticello Browser to add your credentials.)
    • The Treated Inbox repository is for versions that have been dealt with or that have been superseded; it provides some useful history.

    The usual workflow for a new contribution is to upload it to the inbox, where others will discuss and review it on squeak-dev, and from where it usually will be merged into the Trunk eventually. Here you can learn more about our development process: https://squeak.org/development_process/.

    Making Your First Contribution

    • Install the latest Trunk updates.
    • Make your change, preferably starting from a clean image (to avoid configuration drift).
    • Open the Monticello Browser:
      • On the left, select the package you have changed (changed packages are marked with an *asterisk).
      • On the right, select the inbox repository.
      • On the top, press save.
      • On the left, select the package you have changed (changed packages are marked with an *asterisk).
      • On the right, select the inbox repository.
      • On the top, press save.
    • Review your changes, enter a meaningful version message that explains what the changes are for (e.g., which bug they address, what they are aimed at improving), and accept the new version to upload it.
    • That’s it! Your contribution has arrived in the Inbox and soon you will receive feedback from the community through the mailing list. Keep an eye on your mailbox!

    Squeak Inbox Talk

    Squeak Inbox Talk is an optional tool that attempts to simplify the development process by bringing together all the different artifacts that belong to the development process – mailing list, archives, and Monticello versions – and allowing you to interact with them directly from your image. You can access it from the Tools menu or install it by evaluating Installer installSqueakInboxTalk in a Workspace window.

    More information on Squeak Inbox Talk can be found on GitHub: https://github.com/hpi-swa-lab/squeak-inbox-talk.

    Advanced Concepts

    Change sets: Usually, new proposals are best submitted to the inbox as a new package version. However, when some ideas consist of changes to multiple packages, it becomes tricky to work with multiple versions from the inbox. In this case, a change set is a good alternative. Change sets are collections of methods and class definitions, plus some extras. You can open a dual change sorter from the Tools and Changes menus in the docking bar and open a menu on the change set list on the left. Create a new change set and copy or move all relevant changes to it. Add a preamble to the change set to add an explaining message and finally file out or mail to list it directly. To install a change set, you can file in it from the file list, or you can drag and drop it into Squeak from the outside.

    Preambles and postscripts: Some changes make it necessary to run some scripts before or after loading the new code to perform any migrations or changes to the global object graph. This is possible through preambles and postscripts. To add or edit a script for a Monticello package, select it in the Monticello browser and press the Scripts button. Add your logic to the code, test it, save it, and include it in your next inbox version. Note that preambles and postscripts in Trunk packages are required to be idempotent and may be evaluated multiple times. For change sets, you can add a preamble and a postscript as well from the context menu of the change set list in the change sorter.


    If you identify any other contribution-related concepts that should be mentioned or explained in greater detail, please feel free to add them to the Contributing to Squeak help documentation. It could even be your first contribution!

    Thanks to Christoph Thiede for contributing this excellent documentation! You can find it within the Squeak Help menu (Help->Contributing to Squeak) in the latest alpha version of Squeak. This documentation is especially valuable in this context, as it includes helpful links that execute useful code and actions, further simplifying the process.

    Have a great time with Smalltalk and keep Squeaking!

  • Squeak Turns 20!

    Please Donate to Squeak!

    Craig Latta writes:

    Hi all–

    Happy 20th birthday to us! It was twenty years ago that Dan Ingalls and the rest of Alan Kay’s team announced Squeak to the world. You really changed things with this run at the fence. 🙂  Thanks again!

     

     


    Back to the Future

    The Story of Squeak, A Practical Smalltalk Written in Itself

    by

    Dan Ingalls Ted Kaehler John Maloney Scott Wallace Alan Kay

     

     

  • Check out the New Squeak Website

    SqueakWeb

    A lot of work has gone into the new Squeak.org website.  Go check it out!

    Nice work to everyone that worked on it, it’s beautiful and well organized!

    [announcement on Squeak-dev]

    Dear Smalltalkers

    I am pleased to announce new look of the Squeak Website

    http://squeak.org

    Personally, I want to thank Fabio Niephaus, who invested a lot of effort into the new site.

    Best regards

    -Tobias Pape

  • SqueakJS runs Etoys now

    SqueakJS-Etoys-20140704

    From Bert Freudenberg:

    Hi all,

    my SqueakJS VM has reached a major milestone. It is now sufficiently complete to run a full Etoys image (and possibly other non-closure images, too). It has support for most BitBlt modes, WarpBlt, even some Balloon2D rendering (for TTF fonts), a virtual file system, image saving etc.

    Try it: http://bertfreudenberg.github.io/SqueakJS/etoys/
    (Safari and IE are significantly faster than Firefox and Chrome, best is Safari Webkit nightly, works on iPad too, hopefully Android)

    For more details, see my blogpost:
    http://croquetweak.blogspot.de/2014/07/squeakjs-runs-etoys-now.html

    Feedback and contributions welcome 🙂

    – Bert –

  • Squeak 4.5 Released!

    squeak4.5

    From Chris Muller:

    So!  Let it be known!  Squeak 4.5 is released!

    Home page is here:  http://www.squeak.org

    4.5 release notes are here:  http://wiki.squeak.org/squeak/6193

    Excellent Job Everyone!!  Can you tell we are excited!

  • Spur Memory Manager Object Format Explained

    spur_gear

     

    Clément Béra just posted an excellent article explaining the new Spur Object format.  Definitely worth a read!

    Eliot Miranda has also mentioned that Spur is coming to life in Newspeak as we speak and then Squeak 5.0.

    Find out more about the Squeak VM called Cog and the new memory manager called Spur at Eliot’s Cog Blog.

  • Cog Development Welcomes Clément Béra

    Bert VM Icon(icon by Bert)

    Word has it that Clément Béra is working With Eliot Miranda on Cog.  Göran pointed out Clements excellent blog: here, to me a few weeks ago after meeting him at ESUG.

    From Eliot: Clément Béra is, amongst other things, working on Cog performance, looking at adaptive optimization/speculative inlining (Sista in Cog, for Speculative Inlining Smalltalk Architecture).

    I just wanted to welcome Clément Béra and to say thank you to everyone working on the VM for both communities, you know who you are (and we do to) and especially Eliot for working on Cog and keeping the advancements coming!  Hip Hip … and all that.