This might be an interesting detail for all people involved in Smalltalk environments that run on Android and/or iOS. Among the top 10 search terms used in 2012 to find my blog there were “smalltalk android” and “smalltalk ipad”. And in fact, almost every day I check my blog statistics, and these terms or variations thereof are on the list.
To me, this is a clear indication that people are looking for documentation and possibly ready-made installation packages for either Smalltalk IDEs or deployed applications that are written in Smalltalk. I must admit I have been playing with the idea of writing an application for Android in either Gnu ST or Pharo repeatedly, but never took the time because I couldn’t find much documentation for it. People do deploy Smalltalk appliations on iPhones and Android devices but I haven’t found much material on how they do it. It’s either blindingly obvious for people who are used to writing Android / iOS apps, or the people who managed to do it regard their knowledge as a trade secret. Both are okay with me. I like to have a certain advantage on things I know as well. So I am not going to bash this.
On the other hand, we as a community could miss another opportunity here (given the statistics of this little corner of the webiverse is representative). Let’s go on a mental time travel, back to 2005/6 when Seaside was quite new. This framework was fascinating and made web programming so much easier compared to other web technologies. But for a Smalltalker who had never written a java servlet or a single line of html before, it was almost impossible to understand what Seaside is all about. You had to learn html, http etc. first. Not that you don’t have to do that any more today, but html and servlets (or similar technologies) are much more common place today than they were then. Back then, you had to learn these technologies by going to a completely different community/technology space. You had to learn about Java or php, and for your first servlet you had to install tomcat and/or apache and stuff. The hurdle was extremely high if these all were new to you.
So even though we had a great web framework that still influences frameworks in all kinds of languages and is unmatched in many other languages to date, its adoption in the Smalltalk community was very slow. Seaside still is a reason for a good number of newcomers to try Smalltalk, but for many Smalltalk veterans who have been using Smalltalk for 10, 15 or more years for their day-to-day work in all kinds of client/server environments, the whole web application thing is hard to learn, partly because there is no end-to-end material that covers diving into the web application space from a pure Smalltalk perspective.
Maybe we are facing the same problem these days: Smalltalk is known for its ease of development and people from outside the community with their background of app development on mobile platforms can adopt Smalltalk relatively easily in their universe, but the community of Smalltalkers in their niche doesn’t understand much about all of what’s involved in doing app development have no idea how to do it.
To stress the Seaside comparison a bit more: almost a decade ago, many Smalltalk shops adopted web technologies by switching their implementation language, simply because they thought Smalltalk can’t do that. At the same time people from other communities like Ruby on Rails discovered Smalltalk as a cool and even more productive way to implement web applications. This was a very odd situation: long-time Smalltalkers left the scene to do things they thought Smalltalk wasn’t capable of while newcomers came to Smalltalk to do exactly that thing in Smalltalk.
So what can we do to not make the same mistake again?
The only thing I can think of is to make the hurdle to app development for mobile platforms as easy as possible. Be it Android, iOS, Arduino, Windows Mobile or whatever: publish as much as possible on how to install, run, deploy onto this platform and assume no prior knowledge of the whole ecosystem. If you happen to get Gnu ST running on Android, share what you did to run it. It’s not necessary to explain every single step, there’s enough material available that covers the stuff around us. A link to a paper that explains installing Xcode or gcc or whatever stuff is needed as a piece of the mosaic to run a Smalltalk application on a certain platform is enough, but help people fill the gaps between the “native way” and the “Smalltalk ecosystem”. This can help both, the newcomers that know the native c or objective-C or Java ecosystem as well as those familiar with Smalltalk but not with these platforms. Every little cookbook is an important step. Don’t worry if you forget a step, people will ask in comments or find their way on their own and likely publish their findings.
So here is what I’ve collected over the last few months about Smalltalk and mobile platforms, and maybe people would like to add more links and information by commenting:
- Smalltalks that are known to run on Android
- iSqueak: Home of the iPhone/Touch/iPad port of Squeak (should also run with Pharo)
- Smalltalk inspect episode 20 with Stefan Krecher and his journey with Gnu Smalltalk on Android (in German only)