Archive for January, 2012


You Spoke, We Listened—Cincom Smalltalk™ Maintenance Releases

In previous digest articles, we have told you about our upcoming Smalltalk maintenance releases:

  • Cincom® ObjectStudio® 8.3.1 and

  • Cincom® VisualWorks® 7.8.1

Customers requested a true maintenance release that represented refinements and fixes to the major release and did not include significant new features and functionality, which could represent more work for porting and production application certification.

We heard you!  These are true maintenance releases that are refinements of the major releases.

Another way we are trying to improve our customer experience is availability. If you have an immediate need of this release, you can order it here to request a download link.

Please let us know how we can improve our maintenance releases and delivery to better serve your needs and requirements.

– Cincom Smalltalk Product Manager, Arden Thomas (athomas@cincom.com) and the whole Cincom Smalltalk team!

Running Cincom® ObjectStudio® Headless

The first time I got a question about running ObjectStudio headless (i.e., without any GUI running), I was a little taken aback. “We can’t do that”, I thought. “ObjectStudio was written as a Windows GUI application.” I figured it would take some careful redesign work to disentangle the Windows GUI assumptions, but I was wrong.

Converting ObjectStudio Fat-Client Applications to Server-Based

Don’t get me wrong, we knew all along that some customers with complex business logic written in earlier versions of ObjectStudio would be very interested in making that functionality available in a web-server world. ObjectStudio 8.0 brought all of the amazing web-services capabilities of Cincom® VisualWorks® to ObjectStudio users as well, so that was a natural evolution. In my imagination though, that was going to happen first with a regular (i.e., GUI-based) ObjectStudio running on Windows servers. I was very interested to learn that customers have already been doing exactly this for years with headless images running on Linux servers.

Caveats

Of course, you can only expect to run your domain logic code in a headless image. Any code using GUI items is out. Less obvious is the fact that your code has to run without using any ObjectStudio primitives. To run a headless image, you must shut down the ObjectStudio Subsystem, but invoking an ObjectStudio primitive will try to start that Subsystem, which will start the GUI as well. Running without primitives would have been unthinkable in earlier versions of ObjectStudio, but in ObjectStudio 8.x, it is not as hard as you might think. First, the current ObjectStudio uses more Smalltalk code and fewer primitives than it used to. Second, most of the fundamental required primitives are part of the Cincom Smalltalk™ foundation, and thus can run without starting up the ObjectStudio Subsystem.

You may also find yourself using an ObjectStudio primitive unnecessarily. There was an example of this in Base ObjectStudio as well. A method was sending #asciiValue to a character, which eventually invoked an ObjectStudio primitive. A better idea in a case like this would be to send #asInteger instead—you get the same result from a Smalltalk method. We in ObjectStudio support and development are always happy to help in a situation like this, where we can work together to find a better way of doing something.

Other Issues

There are other things to be aware of as well. For instance, you can’t use the regular ObjectStudio Runtime Packager to create your image, since it makes assumptions about a startup controller. If there is some interest in this topic, we could explore some of the issues further in this blog. Even better, from my point of view, would be for customers who are actually doing this now to share their knowledge about what works and what doesn’t with each other. The ost-dev list would be a possible forum for that kind of conversation. If you are not on that list already, please contact Product Manager, Arden Thomas (athomas@cincom.com) to ask about joining.