An interesting thread has received a lot of attention recently on the rpg400-l list with the subject “RPGIII to get a facelift?” (see here to browse it in the archives). Among the many posts in this thread is one by Scott Klement that makes the point that in order to get people to move from RPG III (or even RPG II!) to RPG IV IBM needs to provide user visible features that are only accessible with RPG IV. The users referred to here are not programmers or managers, but data entry people or other non-techie types. Scott gives a few examples such as graphics capabilities or XML features. While true, this idea is only half right. In order to get people to move to RPG IV features must be provided that are only feasible in RPG IV, as Scott suggests. However, it is up to the programmers and developers, not just IBM, to provide such features.
What is a programming language, anyway? More or less, it provides instructions and manipulates memory. What distinguishes one language from another is how it provides the syntax and methods for doing so. With RPG IV we have a language that has great flexibility to accomplish the two main things a language does as stated above: we have a number of ways to manipulate memory and a number of ways to provide instructions. In fact, the only thing we can’t do is provide our own BIFs. And this is what IBM needs to change. We should be able to write:
%mybif(%trim(%myotherbif(myvar)))
This change needs to come from IBM.
But this isn’t the kind of feature Scott was talking about. Nor is it the kind of thing that an end user is going to see. So where do these features come from? The answer is us. IBM’s obligation is to provide the language with flexibility to accomplish the two tasks of providing instructions and manipulating memory. We are under obligation to do the rest.
Let’s look at an example. Enhanced graphics is certainly something the users would see. As is HTML integration. Perhaps most interesting is the idea of combining both. Imagine a 5250 screen with embedded HTML in it. That HTML could be something as simple as a GIF or as complex as a web application. But my point is that the HTML could be directly imbedded in the 5250 data stream. 5250 emulators such as tn5250 could embed Gecko (the HTML renderer in Mozilla) directly into the emulator to handle such HTML streams. A special attribute in the 5250 data stream would indicate that data following it is HTML. Another special attribute (or maybe the same one) would indicate the end of the HTML stream. Then a simple EXFMT would send the combined 5250 and HTML data to the 5250 client and voila! a feature the user can easily see and benefit from.
What is required to make such a feature? First, a 5250 client that can handle such data. That is certainly doable by us, the developers. Many projects exist that embed Gecko. Most of those projects are not backed by some large company. It is certainly reasonable that the iSeries community of developers could add such capability to a 5250 emulator.
Second, we need to get the HTML data into the 5250 stream. IBM could do this and add it to DDS and EXFMT. But can only IBM do it? It seems reasonable that an independent developer could write a function that when called writes HTML data to the 5250 data stream as described. This may involve some serious MI coding and a lot of work. But it could be done. Package it up and make it available to everyone. Suddenly, RPG IV has something that users want that they can’t get with RPG III.
This wouldn’t be the first time that great innovations and improvements originated outside of the company that produced the platform. Much of the UNIX world exists because people outside of AT&T starting adding features they thought were useful. Indeed, without outside contribution UNIX would have probably ended up being a niche operating system forever forgotten in the research lab. But regular (though talented) folks got involved and today we have Sun Microsystems, Cisco, BSD (in all its many flavors), Linux, and Mac OS X.
Let’s not wait for IBM (or anyone else) to do things for us. If we can reasonably do something ourselves then we should. There are many great features that users would want that require the new capabilities in RPG IV. Let’s charge ahead and create them!
Pretty much everything that I suggested in the forums is already available from a 3rd party. There’s a big difference between something being built-in to the language and available to everyone and something being created and “sold separately.”
If you go ahead and embed Gecko in TN5250, and then write your own display file compiler so that it can be embedded on the iSeries side, then what? How many people will use it?
There are at least a dozen solutions out there right now that are like this, including IBM’s WebFacing and HATS, including Seagull’s JWALK… many others exist. But, these techniques won’t be featured as the “normal way to develop apps” in books, magazines, school classes, etc. When you hire someone who claims to be an RPG programmer, you won’t be able to reasonably expect that he’s used these tools — you’ll have to SPECIFICALLY require experience with a particular tool. And since there are so many, that seriouly narrows down the field.
On the other hand, if you hire a Visual Basic programmer or a Java programmer, you can bet he’ll be able to create GUI apps.
Without direct support for these these new technologies as part of the language itself, all you’ll accomplish is dividing the community. If you’re even lucky enough to get their attention.
I didn’t mean to imply that useful and innovative tools, APIs, and packages have not already been created by non-IBM parties. I’m sorry to any who may feel disparaged by such an implication.
The point that few use these third party packages is an excellent one. Why is that? Is it only because such packages were not produced by IBM? I doubt it. Many third party packages are practically required on some platforms. For example, OpenSSL was developed by the BSD community but is ubiquitous on non-BSD platforms. Likewise Apache is a third party product on Windows. I think it is likely that Windows web programmers are required to know Apache. Certainly web developers don’t sit around waiting for Microsoft to release Apache for Windows.
So why are we waiting for IBM to do for iSeries developers what the rest of the world seems perfectly happy to do for themselves? Is it unreasonable that software for the iSeries should require third party components much the same way that gnome, mozilla, apache, and tn5250 do? We can and should (and do) create toolkits that increase RPG’s usefulness much the same way that gtk, Motif, python, and OpenSSL have increased the usefulness of C, X11, and other programming environments.
Fortunately I feel that the seeds of such toolkits have been planted. Projects such as OpenERP and tn5250 are examples as are toolkits such as DBG400.net. I don’t think it is unreasonable that an RPG programmer should be familiar with your own HTTPAPI! Just knowing it exists is important. Blindly ignoring it based on “IBM-only” think is perilous and wasteful. I believe that http://www.scottklement.com, tn5250, and many other projects have united our community, not divided it.
James’s idea that HTML could be put into the 5250 data was actually implemented by IBM in AS/400 Work Station Gateway. I have used this for about seven years and, despite the comments of some people over the years, I find it works well with good response times. My product ERROS generates additional HTML and JavaScript on the fly and so I have a point and click interface, with images, tables, etc., with considerable flexibility.
I do intend before long to change to CGI but WSG requires little effort to use. If you want something quickly, give WSG a go.
But the Workstation Gateway, as of V5R2, is DEAD !