Smalltalk, could it replace web app’s?

Mick Duprez
4 min readMar 10, 2020

--

While performing my daily routine of checking favourite web sites and blogs I once again come across Smalltalk (oooh! shiny…). I’ve always liked Smalltalk ( https://medium.com/hackernoon/smalltalk-just-take-a-look-d0a0052ed5e4) but have never had a sizable ‘green field’ project to work on where I thought Smalltalk would be a good fit. Time to put my thoughts down on paper (so to speak).

Just thinking out loud really…

I’m currently developing an app in Django/MySQL and while I find this stack quite good to work with, it’s still a ‘web stack’ and comes with all that that entails.
This is fine but the company who I work for will be using this as an internal project management and documentation collation tool, being an actual web site is not really that important as it’s not a shop front or data collection front for potential customers.
There is a need for talking to other RESTful services of other financial institutions but again, nothing a desktop app couldn’t handle.
There is also a need for a central repository for the info and documents, no problem for a desktop app in that regard either.

So why do I need a web app?

Good question!
I guess the current thinking is that web app’s can save a lot of headache when it comes to deployment, maintenance and upgrades. The user is always working with the latest build and there is no need for installing any software, fair enough. But do we really need web app’s for things like internal accounting software and other business enterprise type applications that are used internally?
I don’t really think it’s an issue for most businesses as long as ‘staying up to date’ is seamless for the end users.

Isn’t this what Java/.Net is for?

That was the intention I’m sure but the reality is that developing with these platforms is not as ‘seamless’ as they are advertised to be.
I won’t go into detail about this (for brevity) but to say that with Smalltalk, having a single VM that can run an ‘image’ with all dependencies included feels like a lot easier way to do things.

Smalltalk…the good.

Smalltalk images can be tweaked/updated and sent out or retrieved from a remote repo automatically and loaded next startup.
Most desktop app’s come bundled with many files and dlls etc, I’m sure a VM with an image and perhaps a script that runs them after checking and downloading updated images would be more than acceptable (or something similar). Major updates would be for the VM if and when required (years, not possibly months like a web stack!).

The development stack, including the server and public web site if required, can all be in one language. Seaside is actually quite nice to use!

The development environment for Smalltalk is quite powerful and easy to use (once you get used to it but that’s another story :) ). The language is easy to understand and being able to develop ‘live’ has to be one of its greatest attributes.

Smalltalk isn’t quite as ‘walled off’ as people seem to think, interacting with the file system, the internet/intranet, databases and other app’s is quite doable. I think this is a hard perception to overcome for many that have only had a passing look at Smalltalk. It really is no different than Java, the main difference is that you typically start a Smalltalk VM and load an image (or start the VM via an image) whereas Java does this behind the scenes to give the illusion of a ‘real app’ (i.e. a stand alone executable).

Overall I think Smalltalk is well positioned to handle enterprise/commercial applications given the above and much more but…

…the bad

Unless you go with one of the commercial Smalltalk environments you’re going to find the going tough at the start for all but trivial applications. Documentation for the commercial versions is quite good and as long as you have confidence in the longevity of the company/platform you deal with I think it’s a sensible way to go.
In all fairness though, Seaside has been pretty good to work with. I think this is due to the ‘web app’s are king’ perception of the community and developers at large and more effort has been focused there.

GUI development, from what I’ve found, seems to be a second class citizen of the open source platforms, and I have no idea why! Documentation is scarce or unreliable/out of date.
The tools to build a decent GUI framework are definitely there but having a library of classes without knowing how to use them is frustrating at best.
It’s little wonder Smalltalk is often relegated to the hobbyist scene when it feels like working with a half finished project.

So, what’s the verdict?

I think there is great potential in this area for Smalltalk, it’s a great language and an even a better programming paradigm for almost any discipline.

While learning the basics of the language is very easy, like Lisp it will take a while to fully appreciate the real power of such a simple syntax and get your head around the idioms to be able to write good code. A big plus is that refactoring old, newbie code is very easy :)
I can easily see the nX productivity gains that other Smalltalkers talk about once you become even an early intermediate user of the language and tools.

Developing large applications seems like they could scale well and rolling out updates could potentially be seamless.

Hmm…I think I’ll give it a go, will let you know how I get on :)

--

--