For the last three years, I've been developing and marketing a software product for the iSeries market. In prior years, I've had several software products that have done well and some that have stalled at launch.
I have a problem with the current software offering I market: It runs on the System i5 (formerly iSeries and iSeries i5 and AS/400). Yes, it runs on the System i5, and that's a problem. Why? Because IBM provides no method for me to sell my software while protecting it from unauthorized use, accidental or otherwise.
Let me explain.
I make a service program of subprocedures. That service program provides a function to software developers to make life easier for tasks X, Y, and Z. I sell it to Company A. They compile their own programs and, in those programs, call my subprocedures. They include prototypes for these subprocedures via /COPY statements, which I provide with the software. So far, life is good.
Now another (we'll call them a "third party") software vendor wants to incorporate the functionality of my software into their own software. Of course, I think, "Great! This will mean a new revenue channel." But then what happens is the software vendor suggests that they want to incorporate my product into theirs for use by their customers, but they want to pay only a small, one-time fee for it. Why? Because their customers are going to use the third-party software, not my software.
So this leads me to the problem. Today, I can easily ship a customer my service program and prototypes, and they can use my software. I can protect it using a variety of techniques, including the software licensing APIs, embedded MI or API calls, or some homegrown techniques. But this does not give me the ability to allow a third-party software vendor to safely distribute runtime licenses of my software to their customers.
If their customer installs my software, which the third party now requires, that customer has nothing blocking them from also incorporating my software into their own code. Why? Because in order to provide the product to a third party's customer base, they will need a runtime library that does not allow anyone to compile and bind to my service program.
Despite my extensive research, I cannot find a solution to this problem on the System i5 today. Therefore, either I have to not enter the OEM supplier market (providing third-party software vendors with a single developer's license and no-charge runtime licenses for their customers) or I have to convince the software vendor that wishes to incorporate my software into their own products to pay a hefty price tag (effectively similar to buying a license for each of their customers). While a greedy, 1980s-era MBA might see this as the preferred way to do things, the fact is that unless they are offering a $100,000+ software package, no one is going to make that kind of a business deal in 2006.
The other issue is with my own customers. I have customers that have a development box and then deploy their own applications on production machines. Some have one production box; some have more than one. It is difficult to convince them to purchase additional licenses for those boxes (even at a reduced rate) because they are "only" using the runtime; no development components are being used on production boxes.
So what's the solution? Well, there are three options:
- I can leave the System i5 software market. I am considering doing that.
- I can lobby IBM to provide a method for runtime-only distribution of software that prohibits its use at compile time, specifically at program "bind time."
- I can give away my software for free and ask for donations.
I love the System i5 market, and specifically I love all the cool inventions one can create with RPG IV and OS/400 APIs. This is an exciting platform, no matter what those Linux weenies say.
If IBM gave us the ability to control whether or not a *SRVPGM can be used at compile time (by restricting bind-time authority, for example), I could sell third-party Company B my software at the going rate for their processor group. They in turn would sell their software, which is integrated with my software, to their own customers. I would provide a free or extremely low-cost runtime license fee structure. That way, I can continue to improve my software and have the widest possible audience for it. If a customer asks the software vendor how they implemented feature X or Y, they can say they used my product. Then the customer can decide if they too want to license the software. Today, without bind-time protection, their customers could steal (i.e., use) my software.
Offhand, I can think of at least five other software vendors that could immediately leverage this kind of runtime protection of their software. I would guess that 80% of the non-end-user application vendors would eventually be able to take advantage of this capability, as well.
But until that day, I have to isolate my sales channel to end-user customers and hope that market is large enough to give me and others reason to remain in the System i5 software tools business.
Bob Cozzi is a programmer/consultant, writer/author, and software developer of the RPG xTools, a popular add-on subprocedure library for RPG IV. His book The Modern RPG Language has been the most widely used RPG programming book for nearly two decades. He, along with others, speaks at and runs the highly-popular RPG World conference for RPG programmers.
LATEST COMMENTS
MC Press Online