Having taken the deep dive into Pharo over the last 10 months, it is more or less evident that Pharo is the best option for the Smalltalk world to make dent in the enterprise computing world. What do I consider would be the way forward in this path ?
Technology Directions from this point ahead:
* Cloud Computing: Hosted applications, scalable and change manageable
This depends on virtualization, multi-core computing and remote administration based
* End device shift:
Enterprises may not reach there very soon, but the tilt to tablet computing is very much on. Tablets, touch screen devices will be the end points of the near term future. Native apps on the tablet is very much required , despite the web browser delivery model being the preffered model in a SaaS model. Better experience period.. despite HTML5 and any other tech..
Spring framework has made the leap from being a rationalized J2EE platform to a platform for the cloud.. How about making Pharo Smalltalk code being an exposed end point in the Spring world.. What does this mean?
* Extension to Spring Filter to redirect to Pharo Seaside… modules in an enterprise app. Simple win.. just makes a Pharo Seaside app as a distinct web module within a pre-existing / or new scalable deployment
* more important make the Pharo class a bean in the Spring world. Two way communication between the Pharo and Spring modules. Make use of Pharo class as a bean that can be ( either to begin with restrictively ) invoked from Java/ Groovy modules transparently and vice-versa. Property bean, as in Java world can easily be integrated to be able to exchange the values between modules. Currently we do have a workable XMLRPC bridge to do the two communication to pass values back n forth. Exploit it further, especially with a compression extension. Look at JNI later.. somehow I have vaguely uncomfortable feeling with JNI… not my cup of tea
* Then later extend this to other major parts of the spring world: Controller/ view/ etc.. that makes it work as if they are transparently fetched from the Pharo module.. plug n play with modules developed independent of each other in any langauge: Pharo or Groovy ( my preference) / Java / Ruby / others Spring integrates..
* Target primarily all of the business logic/ custom code that requires lot of debugging/ change management / complex simulation/ OODBMS connect in Pharo + the plumbing/ back end logic viz: RDBMS through JDBC/ JAX-WS/ Reports etc in Groovy . Also plug n play with pre-existing stuff in Java as many banks/ enterprise co’s would have…
Having plumbed through Spring and Pharo.. I do feel this is a very doable excercise and should have a huge potential to make a quicker win and entry in the enterprise mass computing world.
a) You sell the front end/ infrastructure/ capability of Spring in the advertising of the solution framework..
b) Pharo Smalltalk’s great power in debugging/ simulation/ pure OO / OODBMS is well exploited
c) You get the Java / Groovy world also for combination: JDBC can be substituted but not matched in performance and ten other reasons.. Groovy’s SqlInstance or Spring JDBCTemplate will take us a longer while to reach in Pharo.
JAX-WS and Jasper Reports, Terracotta ad nauseum as Java frameworks go exist heavily in the mind share of many.. and utilizing them is better for Smalltalk.
d) Eventually once Pharo Smalltalk is embedded and the focus/ lights have turned on.. the future possibilities abound about how far one can take onto replacing other modules with a Smalltalk module.. but that is a slow game
Of course for the enterprise world to have it quick Pharo entry, the whole framework will have to be super easy to setup and mix n match.. the way Ruby n Rails knifed through the small-medium web app world..
e) Skyway Builder is an example .. of very quick setup of fairly complex rules engine driven, drag drop world of composing a Spring app. Pharo Smalltalk integrated with Spring should be able to work within this too..
Pharo already has broken a taboo in the Smalltalk world: talk of Java framework integration where it is needed : Hudson, Selenium.. and few others.. how about going the Jasper Reports, JDBC, Spring, JAX-WS route also. Easier selling the story to an enterprise shop..
Let us see.. if Pharo can go in and play this well by the next year.. The baby is going to be a year old coming Jan..!..