CTO Praises Open Source, Offers Modernization Guidance
June 12, 2017 Dan Burger
One of the most influential and productive fields of new development is the open source community. Its magnitude is just beginning to be felt. It’s not just people talking about open source development. It’s people doing development and deriving benefit from it. And it’s people using it often times without realizing it.
At the COMMON Annual Meeting last month, I had an opportunity to talk about open source technology with Brendan Kay, chief technology officer at Fresche Solutions, where open source solutions continue to evolve and provide benefits to internal development and the software products that company delivers to its customers.
There’s been an increase in open source technologies in the development of Fresche products, Kay says. Node.js, and particularly AngularJS, allow Fresche to create continuous integration environments. Angular is a development framework for building mobile and desktop Web applications.
“We are big fans of the AngularJS data-binding functionality,” he notes. “It’s one of the technologies Fresche is using to provide higher quality development in a much faster timeframe.”
Data-binding is an automatic way of updating the view whenever the model changes, as well as updating the model whenever the view changes. It eliminates document object model (DOM) manipulation, which is used in cross-platform, language-independent programming.
Fresche has been developing PHP and Node.js versions of BCD WebSmart development tools, since the company acquired BCD Software (along with Quadrant Software) in 2016. The development tools are used for creating multi-platform, Web and mobile applications on IBM i. The open source technology integrates with RPG and supports Windows, Unix and Linux platforms. There are thousands of free PHP scripts online that can provide shortcuts when doing new development. Among IBM i developers, PHP is the most widely used of the open source development environments.
Kay says PHP and Node.js will be coming to looksoftware and Quadrant products soon, but no time table is being mentioned. (Kay was president and CEO of looksoftware when it was acquired by Fresche in 2014.)
“Where open source provides the best solution for a problem, we will go there,” he says. “We use particular open source technologies because they deliver something useful as quickly as possible.”
Open source software adds options to the development environment. Becoming aware of the options is a lesson in progress for a lot of IBM i shops. Not that long ago, software companies funneled customers into proprietary technology silos. At its worst, this can result in hammering square pegs into round holes. When there is a broader discussion about how an organization wants to use its applications and where it wants to end up in terms of an IT strategy, it’s far easier to arrive at a precise solution.
People come to a vendor because they recognize they have a problem, Kay says. And in most cases, they’ve thought through it pretty well. Information is easier to get than it used to be – blogs and websites and resources can be researched before contacting vendors.
“The evaluation is, more times than not, good quality,” Kay says. “If they have done the research, they are generally on the right track. Sometimes the decision makers are conflicted – could go one way or the other. Those usually involve complex environments where help developing a proposal is necessary. There are some cases where a customer has a plan that’s not well thought out and we advise them to think about it another way. Come up with a different solution. In these cases, they may understand the first step, but not the second third, or fourth.”
Kay looks at modernization as a three-level project involving the database, the business logic and the user experience. All three are equally important.
“The code on any of those three levels is either going to get better or worse. It is not going to stay the same,” he advises. “If you are not putting the effort into making it better, it’s going to get worse. And when you have a problem in any one of those three areas, it is going to create problems in the other two. You can’t fix the problem by just fixing one of the areas.”
Making an educated guess, Kay estimates 80 percent of modernization projects begin with user experience and/or integration as the starting point.
The reason the user interface and integration are good starting places, he says, is because that’s where IT gets the organizational buy-in. Changes in the interface or in improved integration allow people to quickly see the benefit. It’s usually the area that people are complaining about and fixing complaints is a good place to start. Often the benefit can be quantified and then used to fund the activities of the database and code levels. Taking on all three levels at once is more complicated, so making the project sequential is the better choice. The sequence is usually the user interface, the database and then the code, but that’s not a hard and fast rule.
Between 10 percent and 20 percent of IBM i shops chose code cleanup as the first step.
“The easiest code to modernize is the code that you delete,” Kay says. “Getting rid of the code you don’t need is a great place to start. Then you are left with a smaller and more manageable database interface.”
The shops that have the biggest job ahead of them are those that have done a poor job with documentation and maintenance.
“For me, code modernization is a redundant term. Continual code improvement should be the practice,” Kay says. “Improvement should be reflected by more functionality and by continual improvement of architecture. These are things that people talk about as modernization, but for me that’s part of development.”
There are two activities that Kay suggests for improving a code base and, with regular maintenance, keeping it operating at a high level. One is refactoring – making architectural changes that improve the quality, adaptability, performance and ease of maintenance or performance – and the other activity is regularly extending functionality – providing a graphical user interface or improving integration. Separate the two and do the refactoring first. These two things combine to accelerate rather than retard progress.