A New Platform For Business Application Development
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.
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.
- Maturity: I don't need a platform that changes the fundamental stuff frequently.
- Clear and clean syntax: The syntax should disallow any magic and be easily understandable.
- Light-weight: I'm talking about the hosted model; an application that requires 4GB of RAM to run is of no use for me.
- 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.
- 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.
From the Pharo website:
Pharo is a clean, innovative, open-source Smalltalk-inspired environment.
- the brilliant Seaside web framework
- GOODS OODBMS (object database)
- SUnit testing framework
- OpenGL bindings
- 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.
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.
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!?
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.
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.
There are some points that add to the value of Pharo for a business application which I have not included in my criteria.
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.
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.