feenk.com is proud to announce gt4gemstone, a version of the Glamorous Toolkit aimed at supporting remote development with GemStone/S, the coolest object-oriented database in the world, from Pharo. gt4gemstone is released as an open-source project under the MIT license and was built primarily by Andrei Chis with some marginal contributions from me.
The toolkit currently offers several features:
There are still things to improve, especially around code browsing and searching, but the tools can already support development scenarios.
One particular aspect that we focused on is performance. So much so, that at one point inspecting objects in gt4gemstone was faster than doing them locally. In the meantime, the GT inspector from Pharo also received an upgrade.
But, perhaps the most exciting thing about this project is that most extensions of the inspector can be expressed exactly in the same way both in Pharo and in GemStone.
For example, this method defines an extension for an AddressBook
class.
ABAddressBook>>gtGsInspectorAContactsOn: aComposite <gtInspectorPresentationOrder: 5> aComposite table title: 'Contacts'; display: [ self contacts ]; column: 'Name' evaluated: [ :aContact | aContact fullName ] width: 150; column: 'Telephone' evaluated: [ :aContact | aContact address telephone fullNumber ]
Inspecting an instance of such a class locally offers a custom presentation in the inspector:
But, after deploying the class in Gemstone, the same method offers the custom presentation in the remote inspector as well.
Why is this feature important? When programing in Pharo, extending the inspector is by now an expected feature and it is part of the typical development flow. It is only natural to expect the same ability when inspecting remote objects.
With the ability of having the same code working both in Pharo and in GemStone, the scenario of building in Pharo and deploying in GemStone even more appealing.