Squeak has all the features of a modern development environment:
- Code is highlighted and reformatted automatically thanks to the Shout package.
- Invalid code is highlighted also thanks to the Shout package.
- SLint is a package which tests your code against a set of quality rules.
- Squeak has a Refactoring Browser available, although the basic Smalltalk browsers (and related tools) are still very powerful in their own respect.
- The Smalltalk compiler is built in and does incremental compilations as you code.
- The Squeak environment (like most Smalltalk environments) is a completely live system (you might think of it as one big debugger). You can poke around in any part of the system at any given point in time!
Development using Squeak (or any Smalltalk for that matter) does not incur the write/compile/run cycle. Instead, you interact with a Squeak "image" directly which contains all of your code and any objects that your code might instantiate! It is even possible to change the implementation of an object while it is active.
Repositories and code sharing
Here's an analogy for folks familiar with the open source world. From most hairy to most stable, we have:
- Images are the primary means we use to get code, and sometimes content, into the hands of users. They are like a snapshot of a running system - as if someone installed a linux distribution plus packages of interest, configured everything, started a bunch of applications running, did a suspend-to-disk and shipped you the disk so you could resume where they left off. A number of images are maintained and released periodically, including the official squeak images (3.7, 3.8, 3.9...), the squeakland images (05, 06...) and project-specific images (croquet, tweak, seaside, smallwiki, spoon...).
- SqueakSource is like sourceforge.net. It provides central hosting for code under development, with monticello revision control (and rss feeds, project wikis etc.)
- SqueakMap is like freshmeat.net. It is a central directory providing standardized information primarily about all kinds of downloadable packages, but also about Squeak developers and other items of interest. The packages may be uploaded to squeakmap or linked from elsewhere.SqueakMap has a synchronized Morphic client (SqueakMap Package Loader).
- Package Universes are like a gnu/linux distribution such as debian. They are a set of packages which have been selected from squeakmap and undergone more QA and integration work - testing, fixes, dependency information - so that you can install any of the packages and expect it to work.
- Update streams, which are provided for some of the major squeak images, used to be the main way of installing updated and new code, like debian's unstable update stream. They are increasingly being used in a more limited way, more like the security updates which linux distributions provide for their major releases.
The boundaries between these are not always sharp, there is ongoing experimentation in adding the features of one to another (eg kabungu adds dependency information to squeakmap).