You are here: Home / Blogs / A New Platform For Business Application Development

A New Platform For Business Application Development

Anybody who has been involved in developing a business application, has already exhausted the long list of frameworks/libraries in JVM, .NET and Python platforms searching for something that reduces the costs while increases the development speed. However it's almost proved to me that one should seek the answer in less explored/popular platforms. Let's meet Pharo!

Introduction

Well, the title of this blog entry may be a bit confusing as the platform I'm going to talk about is not new at all! In fact, it's been around evolving far more than most of us know and could imagine.

As a polyglot programmer, for the past 5 years, I've been trying many different languages and platforms to find one which would help me reach my goal: to write a business application (ERP) which can be run in hosted mode (SaaS) and is easily maintainable; and I had a short list of features/characteristics I was looking for in any of them.

Note: I will elaborate on software as a service (SaaS) business model soon in a separate article.

Criteria

To find my dream platform, I was looking for all of the following criteria in any platform I tried.

Note: I will elaborate on these criteria in a separate article soon.

  1. Maturity: I don't need a platform that changes the fundamental stuff frequently.
  2. Clear and clean syntax: The syntax should disallow any magic and be easily understandable.
  3. Light-weight: I'm talking about the hosted model; an application that requires 4GB of RAM to run is of no use for me.
  4. Debuggable: The application and the platform should be debuggable; meaning that it should be easy to find the source of the problem and patch it.
  5. Runs on Linux/Unix.

Obviously, these are the minimum requirements -no bargaining!  I could have included more criteria to the list but I believe if any platform matches these basic ones, one can somehow live with it.

Here Comes Pharo

From the Pharo website:Pharo is a clean, innovative, open-source Smalltalk-inspired environment.

Basically, Pharo is a Smalltalk with a vibrant and active community, a clean light-weight environment and access to all Smalltalk libraries/frameworks like

  • the brilliant Seaside web framework
  • GOODS OODBMS (object database)
  • SUnit testing framework
  • OpenGL bindings
  • ORM
  • and many more...

You may be wondering "What's special about it? Nowadays, so many platforms offer the same package or even more!" Be patient and let's apply our criteria to Pharo.

Please note that since Pharo is a Smalltalk, it enjoys every advantage Smalltalk has.

Mature

Smalltalk has been around for more than 30 years now and has been adopted and used by many corporations (like Fortune 500) and universities. Also The syntax has been standardised back in 1998 (ANSI 98).

This means the syntax and fundamental blocks are not going to radically change anytime soon.

Clean & Clear Syntax

Belive me, Smalltalk code is very clean and readable. In fact, I was reading (and understanding!) core libraries at the end of day 1!

The syntax doesn't allow you to do any magic -unlike for example C/C++- and it's not bloated -unlike for example Java- and verbosity doesn't kill your concentration while it's not too concise -unlike for example Lisps- which means everybody can read and understand it.

Light-weight

As someone who had been doing Java for many years, it was really shocking to find out the whole Pharo memory footprint was less than 100MB! Yes, 100 megabytes and I was doing web development! Can you imagine that with Java/.NET!?

Debuggability

Pharo is debuggable to the core and I mean it. Whenever something goes wrong, you have the chance to inspect the stacktrace of the live system, make changes to the live system and let the live system continue operation with the new code without ever needing to shutdown the live system.  Yes!

And Seaside web framework takes this power even one step further. Debug/edit your server code right from the web if you need to. Just take a look at the picture below:

Figure 1: Seaside - Live code debug/edit inside a browser (click to enlarge)

As you can see, it's all happening inside your browser. If you need to fix a bug, just change the code inside the browser, click the "Accept" button and voila!  The server is running your new code.

Just imagine what you have to do to fix a bug in Java/.NET or even Python.

Linux/Unix friendly

It is indeed. Pharo supports Linux, Windoze and Mac. I don't have a Mac machine but I tested it on Linux and Windoze and it ran equally smoothly.

Bonus

There are some points that add to the value of Pharo for a business application which I have not included in my criteria.

Open Source

Pharo is open source under MIT license.

Very Small Learning Curve

Pharo (and in general Smalltalk) is very easy to learn. When I decided to try Pharo, I knew absolutely nothing about it --I was attracted to Pharo by the Seaside web framework. I started reading Seaside Tutorial and to my utmost surprise I was already coding my first application in Pharo at the end of day 1 --add to this the simple syntax that let me read the code of core Pharo and libraries.

Active & Helpful Community

As a newcomer, I had lots of questions about Pharo and how this or that works. Happily there's a mailing-list for such questions and it's a very active one (with an average of 20-30 messages per day). People are nice and try hard to help you.

This is crucial for developing and maintaining a business software.

Conclusion

Pharo is an open source Smalltalk that encompasses the characteristics which help you write a top class business application like an ERP. Being a very light-weight platform, it allows you to easily plan for hosted applications (SaaS). Also there's a helpful community around it who will support you as far as they can in your quest.

 

Ben Coman says:
Jun 08, 2013 03:42 AM

Thanks for sharing your early impressions of Pharo. Very nice to hear you found it quick to learn. You imply you may be considering implementing an ERP in Pharo. That would be very cool and I'm sure you would find a lot of interested parties.

However regarding "maturity" of Pharo, right now this is a mixed bag. One one hand, the broad architecture has a 30 year history behind it. On the other hand, Pharo is in the middle of re-implementing a lot of the core functionality. So while you would consider that the language is mature, the Pharo "libraries" still have a bit to go.

However if consider the purpose of the re-implementation, rather than introducing new paradigms mostly it is about cleaning to improve maintainability, this could be considered a big positive for ultimate maturity once they get through this interim period. Also note that most of those changes are under the hood such that with its good CI test coverage, the end user is insulated from most of those changes. Further, if you look at rate these guys are developing, I think it wont be too long before you could call Pharo a mature system all round.

Bahman Movaqar says:
Jun 08, 2013 03:51 AM

RE ERP: Actually I'm thinking of re-writing Adempiere ERP in Pharo and that task definitely needs a lot of helping hands :-)

RE maturity: I understand that. What is important is that interface of the libraries don't change while doing the clean-up job under the hoods to avoid any surprises.

Ben Coman says:
Jun 09, 2013 12:41 PM

> re-writing Adempiere ERP in Pharo and that task definitely needs a lot of helping hands :-)

Are you thinking of a complete separate project, or just a different front end? One path might be picking some popular hole in Adempiere and implementing that in Pharo, as a way of exposing some other ERP programmers to Smalltalk. It would be nice if those helping hands come with domain experience.

Bahman Movaqar says:
Jun 09, 2013 01:05 PM

Ben,
Those "hands" definitely need to have a bit of domain experience.
RE Adempiere, I'm not going to take a top-to-bottom approach, rather I'm planning for a bottom-to-top one; meaning that I'll start with one domain (Warehouse/Inventory) and keep extending it --that's the idea of Simin. This way the software will be ready for production use much earlier and I believe, since the software will be simple at the beginning, it'll attract more contributors. But most important thing is that by doing it in small steps, I -and other possible contributors- will not be demotivated working against time :-)

Also, I'm thinking of finding (a) sponsor(s) for the project.

Ben says:
Jun 10, 2013 09:00 AM

Release Early Release Often :)
http://www.catb.org/esr/writings/homesteading/cathedral-bazaar/ar01s04.html

Bahman Movaqar says:
Jun 10, 2013 09:11 AM

Exactly that's the idea!

Anonymous says:
Jun 08, 2013 03:49 AM

There are really sexy applications built with Pharo such as yesplan.be, ibizlog (5 months of develop only), netstyle.ch, cmsbox and many others
so welcome to our community.

Bahman Movaqar says:
Jun 08, 2013 03:50 AM

Oh! Thanks for the pointers!

Jeff says:
Jun 08, 2013 07:52 AM

It's a nice upbeat article and then you go and alienate the Windows users (constructive criticism). Pharo's platform agnosticism offers huge benefits.

Bahman Movaqar says:
Jun 08, 2013 08:01 AM

I'm wondering how did I alienate them? The only picture in this article is taken from a Windoze machine.

Anonymous says:
Jun 08, 2013 05:53 PM

Probably with the "windoze" spelling

Commenting has been disabled.
Tag Cloud