You and i

« What is This “.1” Anyway? | Main | i: Listening Through the Year »



Craig, I am wondering if you could point us to some of the research Zend has done where they lay their claim that PHP is "Enterprise Ready"? I am mostly wanting it so I can draw my own conclusions. PHP obviously is running on a top notch server with IBM i, but I am just not convinced the language itself is well suited to business programming - maybe I just need more exposure to it and compare it less to the strongly typed RPG language.

BTW, I am in the middle of a PHP project as I type this, and I must say there are features of PHP I enjoy - mainly that I can get many of the features of Java without the complexities of Java.

On final note, I have appreciated the continued posts on this blog and the fact you haven't petered out after a handful. I am sure it takes away from your schedule, but I consider it time well spent for the community.

Aaron Bartell

Did I hear someone ask a question about PHP? :-)

Of course PHP is Enterprise ready! There have been several really good articles in the PHP|architect magazine and a book written by Ivo Jansch: I would recommend that as a great place to start.

Now, nothing will ever replace my beloved RPG as a truly enterprise class language for its efficiency and scalability. That is one of the reasons I recommend that customers continue their RPG work and integrate PHP where it makes good business sense.

Now there is another point, the "hobbyist" PHP developer does not an enterprise developer make! There are many best practices wrapped up in frameworks, templating systems and bound parameters. The web is a whole new world and the simplistic concept of RPG in 5250 cannot begin to compare to the diverse landscape of the web. There is a motto in the rails camp that says "constraints can be liberating". I think this applies quite nicely to RPG. This may be one reason why RPG has not been opened up to the web as a native language. RPG-CGI forces you to acknowledge the depth of the web and CGI-DEV2 is a great methodology for helping you implement RPG-CGI. But as you so accurately indicated, there are many nice and straight forward ways to get things done in PHP vs. Java. And in some cases, Java or RPG may be a more appropriate tool. Use the right hammer on the right nail!

But rhetoric only goes so far. Look at the companies using PHP and adopting it as an "enterprise" solution. Most notably is the folks at Harris Data who have recently deployed their website using Zend Framework PHP and are now in the process of migrating from Net.Data to PHP as the front end for many of their business applications. And while they still rely VERY heavily on RPG as the back end for many of their applications, they acknowledge that a 100% PHP solution is sometimes a great way to go! Again, echoing the use of the right hammer...

Then there is the entire Open Source community. Recently an eCommerce solution has emerged written in Zend Framework PHP call Magento Commerce: Here you have a world class PHP application that is running business processes for the likes of 3M, Vizio, Lenovo, etc. And yes, I hear it will run on IBM i! What can be more enterprise than an online shopping cart with content management, mobile support, catalog management and customer & order management?

Enterprise is truly in the eye of the beholder. RPG, Java and PHP are great technologies that bring Enterprise solutions to the IBM i shop. Each has advantages and strengths. But only PHP offers what I see as the widest point of entry, functionality and scalability in a single technology solution. But, then again, I am a tad biased.

Hope this helps!


Mike Pavlak
[email protected]

Ha! I was hoping you would step in Mike :-)

>Enterprise is truly in the eye of the beholder.

Very true! And with your very fair response to my post it requires me to spend a little more time to expound on some off-the-top-of-my-head enterprise thoughts.

The thing I keep coming back to, and why I just can't let RPG die in my heart, is because there is so much that is second nature. For example, I have yet to be able to get PHP running on my Ubuntu 9.04 desktop, in Zend Studio's runtime, to connect via ODBC to DB2 on my IBM i (yes, I tried to get it to talk with UnixODBC). Why was I trying to do that? Well for one I wanted to use the interactive debugger on local code, and second, the two Apache instances on my new V6R1 machine are no longer talking with each other (one of the instances likes my htdocs permissions and the other doesn't) - yeah, I know, I should submit a ticket, but it ended up being easier to load everything on a virtual instance of Windows on the customers network. Databases are central and foundational pieces of an enterprise application architecture, and RPG has built-in connectivity to a DB that I never have to configure, or for that matter, worry if it is up. If my application is running then the DB is ALWAYS running.

Here's another: Out of the box with RPG I can know if I am getting myself into trouble with variables that aren't declared (compile vs. interpreted language debate). In my development of PHP over the past few months I have been learning the hard way of how PHP "helps" you declare new variables because you misspelled one and now have two variables. Is there tooling to help with these things? I do recognize that a lot is gained in flexibility by having an interpreted language, but in the same breath it takes away from PHP being as solid of a business language because I now need to be mindful of petty mis-types that may not get caught until much later whilst the app is in production.

>What can be more enterprise than an online shopping cart with content management, mobile support, catalog management and customer & order management?

I can understand where you are coming from in that those companies must have done some due diligence in determining PHP was a solid direction, but the fact is that those same companies have also determine that Microsoft and .NET are viable solutions for enterprise development. Throw enough money at a group and they could develop an "enterprise ready" solution for the short term. I feel like the main reasons previously RPG shops have moved on are ONLY because they lacked a front ending technology AND they can't find modern RPG talent - otherwise the application stack is quite appealing.

I wish PHP was as tightly knit to the IBM i as RPG. I feel like the only reason why people like platform independence these days is because of platform uncertainty. Solve platform uncertainty and you solve people requiring platform independent programming stacks. I LOVE being locked into the IBM i with RPG, because it just works.

Hopefully the company I am doing PHP for right now decides to take the application to the next level so I will get to digress into more formal PHP development and root out any ignorance I have of the language and its capabilities.

>The web is a whole new world and the simplistic concept of RPG in 5250 cannot begin to compare to the diverse landscape of the web.

This is a very important observation and one that should be addressed vs. just lived with. The major issue with the web is mostly UI compliance (HTML, Javascript, css) and application state. Solve those two things and a guy can start being a business programmer again instead of a web programmer (read: tech weenie that took years to become accomplished and miss the mudd puddles). We are getting closer with "black box" client engines like ExtJS and with runtime "shells" like Adobe Flex/Flash. Add some "wait based" technologies (i.e. EXFMT) to the server side, retain your program call-stack, retain your one user per job, and you are back to having an EXCELLENT programming stack that can be easily debugged and maintained. BTW, I am working through the motions of implementing exactly this with my "RPGUI" article series that first appeared in the December issue of Oddly enough, what I just described (stateful web apps) is similar to what Microsoft claimed they are struggling to achieve in a recent edition of SDTimes - they have the UI down but don't have the infrastructure on that back end to facilitate enterprise levels of users on a single machine - IBM i DOES!

Ok, I have typed long enough. I can see I need to order that book you mentioned, though I would like to know if you think it would address the things I see as issues?

Aaron Bartell

The comments to this entry are closed.