This post originated from an RSS feed registered with Agile Buzz
by James Robertson.
Original Post: Plugging the pieces together
Feed Title: Cincom Smalltalk Blog - Smalltalk with Rants
Feed URL: http://www.cincomsmalltalk.com/rssBlog/rssBlogView.xml
Feed Description: James Robertson comments on Cincom Smalltalk, the Smalltalk development community, and IT trends and issues in general.
Over the last few years of development work on BottomFeeder, the application has changed in one very important way - what started out as a monolithic, big ball of code has become a set of reusable components that have been plugged together. That's not true in all cases; the RSS parsing is still too tightly coupled to the application - a looser coupling could make for a fully reusable Smalltalk library for dealing with RSS and Atom. However, that's the exception here. The application now includes, between core components and plugins, 30 pieces that can be updated in a (mostly) independent fashion. Of course, updates to one sometimes require new APIs available in another, but you get the idea.
So what's there? Let me walk through the list:
SpellChecker - a pluggable spell checking module. It depends on the presence of the ASpell shared libraries, which are readily available for Linux and Windows, and can (in theory at least) be compiled for other platforms
GIF Support - a library for reading GIF format
WinGDIPlus - a Windows specific library that uses native libraries to convert various image formats into something that Smalltalk can use
EpiWin32Folder - a Windows specific library that enables use of the directory selection dialog (as opposed to the file selection one)
Emote-Support - used mostly by TypeLess, it provides a set of emoticons, enabling auto-replacement of ASCII-art
ExtraEmphasis - a library that simplifies various VW font usage scenarios
ExtraActivity - a library that makes it easier to animate Visual Components. Used mostly bu WithStyle
Weaklings - adds a simple "Weak" mechanism for instance variable slots in an object
VRCommonDialogs - a cross platform set of common dialogs
Http-Overrides - this is really part of the NetResources library. It separates out the overrides required by that library, so that changes needed after a new VW release are easier to track down
NetResources - a basic library for wrapping the VW net clients libraries with a highter level API
NetResourcesHTTP - a high level API for HTTP access that simplifies access, and adds support for things like caching, digest auth, and more
PatchFileDelivery - a general settings driven library for delivering application level updates (parcels) via HTTP. Supports download and save, and download and load immediately
Browsing-Assist - a library that supports spawning a web browser on an URL across platforms. On Windows and Mac, this "just works", and has APIs for spawning new or reusing. On other platforms, the browser must be specified
OSTimeZone - a cross platform library for setting the time in VW to match the PC clock
XmlRpcClient - a library for making XML RPC calls and handling the responses
XML Configuration Files - a library for storing configuration information (or serializing objects) in an XML format.
BottomFeeder - the basic BottomFeeder application itself
Twoflower - the Twoflower Http parser, used by WithStyle if LibTidy is not present or fails
LibTidy - a library that wraps the C based LibTidy. This library takes arbitrary HTML and cleans it up, returning valid XHTML.
Win32TaskbarSupport - makes VW Windows and menus cognizant of bounds, including the taskbar - prevents menus from disappearing behind the taskbar
Windows TrayIcons - a Windows specific library with a simple API - allows you to drop an application into the tray
IRC-BottomFeeder-Typeless - the Typeless IRC plugin to BottomFeeder
Blog-Tools - the Blog posting plugin, which supports Blogger API, MetaWebLogAPI, and the MT API. Also available Standalone, as BottomLine
WinMineGame - Minesweeper
GoldenMonkey - a game
Steroids - Asteroids game
Xonix - the old Xonix arcade game
EnclosureHandler - manager for downloading/saving enclosures automatically
That list has grown over time - I started out with three components that could be updated at runtime! I should also point out that an awful lot of those components were written by other people - in particular, Software With Style is responsible for the excellent NetResources and WithStyle components - without which, BottomFeeder would be a lot less nice.