Are we Smalltalkers missing the mobile trend?

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:

7 thoughts on “Are we Smalltalkers missing the mobile trend?

  1. Hi,
    I think that fairly complete directions for building an Android version of Cog (or Pharo) live here:
    In addition Cuis works fine on Andriod as well (with Cog), with a small patch.
    To do something that looks non-native, but, smalltalky, download the Cog VM from the above link, and then put the image/changes/sources files in the top level directory you see via the Android file transfer, and then tap the Cog VM.
    For now the Pharo/Squeak/Cuis UI is a bit clumsy on my phone. It’s better on a 7″ tablet. I’m playing with Cuis just because it’s smaller and I think I can hack around some slightly different UI that would be more adapted to my giant fingers.

  2. I agree that native apps have still an edge over hybrid ones (BTW, hybrid apps can be also put in app stores and monetized), but do we have any chance with Smalltalk to build as ‘charmy’ mobile look&feel as others are building there? Native GUI look&feel in Smalltalk is lacking on desktop, how it can be improved soon on mobile?

    1. Stefan Krecher announced a binding for Gnu Smalltalk to SL4A, a layer that opens up the Android APIs via http calls (if I understand correctly), so you can use Gnu ST to use native features of Android. The same is true for PharoDroid, which also allows to display native dialogs. But I have found little documentation on how to get things to speed with either of these.

      You are talking about PhoneGap and similar things, I guess, and here the situation for Smalltalkers is exactly what I describe: you have to learn to use phonegap first, and for that it is best to write a Javascript app, and only after that you can try and do the same with a Smalltalk application. This is not really what I’d call inviting for Smalltalkers with no prior knowledge of mobile development.

  3. Besides native mobile apps there are also so called hybrid ones, that is, the web apps packed as native ones. Both Aida/Web and Seaside have now support for such apps based on jQuery Mobile. And at least on Aida development goes now towards more client-side, autonomous web apps for more and more standalone/offline work on mobile device, connecting back to the server just from time to time to sync data changes. I think here we Smalltalkers have even bigger opportunity, and we support all mobile platforms at once.

    1. HI Janko,

      thanks for your comment. I agree that hybrid is also an important trend, but it’s not a business model like Google’s play store or Apple’s App store. So native mobile apps have their very own charm, not only because they look&feel native. And again, getting into jQuery or jQueryMobile without learning JavaScript first, is hard. There’s not much material that covers Smalltalk and jQuery in enough depth to get to fly with it.

      1. I made my very first experiences with jQuery by using it with Amber-Smalltalk and without any in-depth knowledge of JavaScript! The Documentation, Blogs and the Mailing-List were a very good starting point.
        The problem with native-looking web-apps is the lack of the possibility to access the native api of the device.
        Regarding the Documentation for GNU Smalltalk and Android – i made two short blog-post to help getting started – of course, if you have concrete questions, feel free to ask! For me, a lot of things are obvious – but with a few good questions i could compile a FAQ/ Quickstart.

        1. Hi Stefan,

          thanks for commenting.

          Yes, Amber can make JavaScript knowledge less important to some extent. At the time I started learning jQuery, Amber didn’t exist, so I forgot about this option.

          Your blog posts are a good starting point, and what you say is exactly what I mean: qualified questions and additional comments by people who try stuff help improve the documentation a lot. And, I don’t think you are to blame for your knowledge of Android and the fact that some stuff is obvious to you 😉

          I will sure come back to your invitation when I find the time to play with Gnu ST and Android. Until then, have fun Smalltalking to your phone 😉

Comments are closed.