Those who know me know that I’m not Apple’s biggest fan. That’s probably something of an understatement in fact, but one achievement of theirs that I have always (grudgingly) admired has been the way that Apple rejuvenated the mobile device applications market with the App-Store. They didn’t invent the concept of running third party software on your mobile phone – J2ME applications had been around for a while they but had never really gained a lot of market traction, certainly not among the mainstream users, they were strictly for us geeks.
Apple turned that on its head, putting applications into the mainstream consciousness and creating a culture and a viable micro-economy. The app-store provided a new opportunity for anyone from individual developers to SMEs and big companies to give or to sell their software to people – and for consumers to easily find useful or entertaining software for their devices.
The idea of centralised application repositories wasn’t created by Apple though, most flavours of Linux have a package management tool like yum, dpkg or APT. PHP has PEAR, Ruby has Gems.
If I want to install MySQL on my Ubuntu PC, I can just go to the command line and type in
sudo apt-get install mysql-server mysql-client
The operating system then downloads and installs the MySQL software and any pre-requisites that it has.
If I want to update the software to the latest version, it’s equally easy.
sudo apt-get update mysql-server mysql-client
Alternatively, I can go into the “Ubuntu Software Center” and browse through free and paid for offerings which can then be downloaded and installed with a click.
I’ve already mention Apple – and similar features are available with my Android phone. I can install applications to it via Google Play – either on the phone itself with the push of a button, or through the Google Play website.
As I mentioned on Twitter the other day, and that Steve Pitcher picked up on – I can’t think of any single thing that would be more of a boon to the IBM i software market, to developers, users and vendors than something similar to this for our platform.
It would provide a clear route to the market for software developers and ISVs, it would bring together the software that is available for the platform and increase its visibility, it would make software easier to search for and to find – and it would encourage the development of new software, both free and paid-for.
Today, if I want to install Scott Klement’s indispensible HTTPAPI I have to visit his website, locate the HTTPAPI page, download a save file, transfer it to the i, restore it and then run the installer. How much better would it be to be able run a simple one line command like this:-
IGET ACTION(*INSTALL) PACKAGE(HTTPAPI)
RPG is dead, so proclaims Mel Beckman in this piece.
Anyway, Beckman’s article poses the question “Is the language still routinely used to write new programs that solve current problems?” – and the simple answer to that is “Yes” – I do it every day, my colleagues and customers do it every day.. and through the web I see a sizeable community of developers across the world doing likewise. I don’t doubt that very few of these people are doing the complete end-to-end development of new “applications” in RPG – but new business components, interface components, systems management tools etc. etc. are being written in RPG all the time. That doesn’t mean that RPG is in the first flush of youth, or that it is the language of the future – but to proclaim its death is still, after all these years, premature. I don’t think that the community can continue to be complacent about this though, even though we have indeed heard it all before many times.
Assessing the current status of RPG cannot be boiled down to one simple question – in addition to the number of new applications that are being developed in a language, there are many other factors that need to be taken into consideration – the amount of existing applications that are written in it, the install base of the hardware platform, the tool support, the language’s features, how frequently there are new releases of the language, and the most important questions – how readily available are the skills in the language and how readily available is training to provide those skills where they cannot be hired in.
The RPG language is still being updated by IBM and is still evolving – it does not progress as quickly as we might like but it is not stagnant. There is a massive base of RPG applications and IBM i installations globally. Tool support – well that’s a mixed bag.. Whilst IBM/Rational’s offering could certainly be improved upon (I won’t go into much detail into how and why – I think that’s a whole post in itself) – there are not really any viable third party alternatives to it. There are tools to assist development and change management, and cross-reference tooling that other platforms can only dream of thanks to the observability IBM i provides. There are UI modernization tools aplenty. Language features.. well.. there are lots of features in newer languages that I could list that we don’t have, but in many cases you have to ask if RPG really needs them? In some cases, like procedure overloading – undoubtedly. In others – such as multi-dimensional arrays… I’m not so sure. RPG is clearly not a cutting edge language, it can be hard to architect applications how one would ideally like to sometimes – but equally I don’t believe that there are many business problems that are asked of it that it does not have the features to solve. The final two questions – the availability of skills and training are the thorniest. RPG skills are not mainstream and both programmers and vacancies are not as readily available as one would like them to be.
RPG is not dead, but there is no point in denying the reality either – in many places where RPG is used, it is not being used in the way that it was, and will never be again. The question that the sensible people in the community should therefore be asking themselves is not “is RPG dead?” It is not even “is RPG dying?” It is “What is RPG’s role?” which ties in with trying to understand what the role of the IBM i platform itself is – and brings me back to this post from last year..
In my last post, I discussed the issue of the IBM i and its “identity crisis”. I recently came across this blog post from Angus The IT Chap in which he discusses similar issues, taking a slightly different position from mine – seeing the use of the current moniker as critical to the future success of the platform, rather than peripheral.
Alongside this, he is calling for much stronger advocacy from the IBM i community and a general unification of that community behind IBM and the current incarnation of the platform.
I support much of what he argues with regards the way that the platform is used and the way that developers maintain their own skill sets. In my experience IBM i developers tend to be what one might call “business IT” people, with their focus very much more on the needs of the businesses that they serve than the technology that they use to do it. I am sure the same can be said of many developers on other platforms as well, but the nature of the IBM i and the role it has traditionally performed make it all the more apparent in this community. The issue that this brings with it though is the stagnation of developers’ skills and thereby the stagnation of the solutions that those people can bring to the table. If peoples’ skills are not up to date and they are not fully versed in the capabilities that the platform can offer then the solutions that they can offer their users or their customers will not be as good as they could be – and that not only sells them short, but the platform as well. For example, if you don’t know that RPG quite easily can consume web services, how would you know that this could be an option for integrating systems?
Whilst I don’t agree that the community should be doing IBM’s job in marketing the platform for them and I don’t agree that the use of the current name of the system is a panacea for the real identity crisis facing the platform – I do agree that it is in every IBM i professional’s interests to keep their skills up to date (and any IT professional for that matter). I do also think that it is important for people to participate in the IBM i community both online, through forums and social media and offline, and to participate in local, national and international user groups. I do agree that all online communities are far better when discourse is polite and there are no personal attacks even when people hold strongly differing views. There is much to commend the sentiments here.
At the risk of being accused of being a “naysayer” as Angus puts it, my fear for this campaign is twofold though – firstly that if a platform is truly strong and has a vibrant community around it, they don’t have to have campaigns call on people to show how strong and vibrant the community and platform are.. They have other things to be getting on with like making great software. The very existence of the campaign therefore undermines its fundamental aims. Secondly I fear that it is preaching to the choir. IBM i professionals that will get to read this blog or become aware of this campaign will do so through following IBM i through social media or the industry press, or participating in forums and discussion groups – and they are likely to be the subset of IBM i professionals who would have been doing everything that the campaign calls upon them to do anyway without there needing to be a campaign to bring it to their attention.
For these reasons I can’t quite see that this kind of campaign – well intentioned as it clearly is – will change the world’s mind about IBM i. It may be a bit of a bitter pill to swallow but frankly I don’t know if that can be done.
Where I really see the value in this campaign is in trying to strengthen the ties that already exist in the community. There are a fair number of forums and online i communities, but the amount of community software that is produced is relatively tiny, and most of the really good stuff comes from individuals rather than groups. I would love to see more active community participation in developing Open Source IBM i software, with more opportunities for developers to get involved without feeling that they have to jump through hoops, commit huge amounts of time or go out of their comfort zones to do so and I would love to see IBM themselves doing more to encourage this. Providing free access to Power Servers for developers working on Open Source software to work on would be a great start – and integrating those servers with an IBM i app market or SourceForge type website would be an ideal second step.
Something that I have heard at conferences recently and that I have read in various blogs and forums online is that the IBM i has an “identity crisis” – that the community is holding the platform back by referring to the platform as AS/400, iSeries, System i or i5 – rather than the current term “IBM i on Power”.
IBM i on Power they say, is a wholly different beast from the older incarnations of the platform. To refer to it as an iSeries or an AS400 perpetuates an image of the green on black workhorse that many see as a throwback to a bygone era.
In some respects that’s hard to disagree with. The association between the platform and the 5250 is undeniable and the new Power 7 machines are indeed beasts of machines that even at entry level are capable of doing far more than the traditional workload that SMEs will be throwing at them. However is it really fair to say that the fact the negative connotations persist really down to people using terminology that IBM marketing has moved on from – and is that the limit of the identity crisis?
At the most basic level the IBM i is the product line for IBM servers that are able to run i5/OS and the community and the ecosystem that distinguish the i are all centred around the i5/OS operating system and to a great extent, RPG development. The myriad of different names that have been used for the platform – all with the aim of breaking the association between green screen and the latest incarnation of the hardware – have only served to confuse the community and send them back to a term they are familiar with. It would have been far better for IBM to have dropped the very notion of a blanket term for the product line altogether and for the relationship between operating systems and servers to be more like those with which the i competes.
The ability to run i5/OS is the only feature that distinguishes IBM i from IBM p – and that’s only an artificial restriction put in place by IBM. The convergence between these product lines is all but complete and it seems frankly meaningless to continue drawing any kind of distinction between the two. Maybe the time has come that the i and p terms can be dropped, IBM can sell Power Servers or whatever they want to call future server models, people can choose whatever operating systems they want to run on them – and we won’t have to worry about what we need to call the product line any more.
I don’t think that’s the end of the story though.. I think the problem for the i5/OS community goes further than identity and to the raison d’etre of the platform.
You can run a lot on your i these days – your traditional RPG/C/COBOL applications can carry on doing what they have always done, PHP has been well implemented by Zend and it and other open source languages like Ruby can run in PASE. The Java Virtual Machine can host a myriad of scripting languages like Scala, Groovy, JRuby, Fantom, Jython and Clojure if you want to make use of any of those. Alongside that you can have AIX and Linux partitions running any of the vast number of applications that can live on those platforms.
If you’ve got an i, the world – as they say – is your oyster.
The flip side of this is that pretty much everything new and modern about the i comes from either AIX/PASE or Linux . There’s plenty of opportunities to market new types of application to users of the i – but not nearly so much firepower to sell the i per se to users of other platforms. IBM has given plenty of ways for people to leverage an existing investment in the i – but very few reasons for people to make that investment anew. What value does running these applications on the i, or alongside i5/OS add? What is the i actually for – beyond the traditional OLTP workload?
That’s where the identity crisis really bites – and it’s a question that cannot be answered simply by remembering to use the current moniker.
I’ve been meaning to do this for a long time now, and have finally gotten round to setting up a blog. It’s going to be focussed around the topics I specialise in professionally – which means IBM i, web development, software architecture and the like. There aren’t a huge amount of blogs around talking about the i – so hopefully mine will go some small way to correct that and possibly encourage others to do the same.
I went to the “International Power” event in London yesterday, and I have to say I was very pleasantly surprised. The biggest surprise being that the place was packed. That was probably the most vibrant i event I have been to in my 15 years working in this industry. One of the innovative ideas in the event was a “code shoot out” between vendors of application modernization tools. There were six teams from different companies that were given 30 hours to use their product to modernize a sample application provided by the organizers.
One of the teams boasted that they modernized the application in seven minutes.
Only they didn’t. Not really.
They didn’t do anything to the application. They added another application on top which transformed, embellished and enhanced the output.. but the application itself was untouched.
Don’t get me wrong. What they did do is very clever and yes, there is a place for these kind of streamscraping applications that take 5250 output and display it in a browser. It helps to addresses an image problem that the i has – the green on black screen – it gives the users a better experience and can undoubtedly be a place to add more functionality and increase productivity.
It’s still lipstick on a pig though.
A truly modern application isn’t just one with a modern looking UI.
One of the more important challenges faced by the i community is the transformation of old monolithic programs and systems into truly modern software.
A modern application is built using contemporary techniques and approaches. It is one wherein the business logic is separated from the database access logic and the user interface (not really a modern idea, granted but still alien to most RPG programmers on the i). Modern applications are able to be unit tested – automatically – with modern testing tools that do not require some poor soul to lose the will to live grinding through manually scripted tests. On the i that means full adoption of ILE techniques, and refactoring the old code into functionally cohesive procedures that do clearly defined tasks.
You can’t modernize an application like that in seven minutes. It is hard. There are great tools out there to help you along the way – Databorough’s X-Analysis for example will analyze your code, strip out the file and screen handling and present you with just the business logic… but there’s no silver bullet, no single piece of software you can run and have this all done for you in minutes.
For some folk, the lipstick is all that they want and all that they need. If you really don’t actively develop your software or if it isn’t strategic, then by all means enjoy the benefits of an better user experience out of the box and be done with it. However if you are struggling against increasing development times hurting your time to market, if you have big programs that developers fear to touch, if your quality is going downhill, testing is becoming more and more complicated and time consuming or if it feels like your software is a house of cards that can come crashing down any time anybody implements anything – then please don’t let your modernization strategy stop at the front door. A UI modernization tool can be of great help in selling the whole process to the users and management, and is a very quick win – but if you want to see your development timescales dropping, maintenance costs coming down, reliability increase and defects decrease, make sure you do the hard stuff too.