I'd like everybody to be thinking of things we can do to distinguish our products as a whole from other peoples', and give dealers and distributors reasons to try our products in the first place. Two have been suggested so far:
Rudolf Künzli suggested that we make all of our software obtain all its messages, menus, and prompts from a direct file. We would develop a common routine which returns message text from the file by number, and a subroutine which inserts text in the message. This gives us two important advantages. First of all, the most common customisation request for all packages is to change certain messages. We can tell the dealer, ``Buy a MSP package, and you can change the messages with this little utility--no programmer is needed''. Second, we can make our packages speak any language we want just by translating the message file--one object code version will suffice. The advantages in the overseas market are obvious. Note that a pure PRINT USING type expansion isn't quite enough--you'd like to be able to change the order things are inserted in the message. Thus, you might read a message like:
"Put the #1 in the #2, #3!"
and print it with something like (assuming QBASIC):
a%=fn.print.msg(187,"disc","slot","idiot")
The #n in the message would match with the order of parameters in the call (yes, I know the problems with this example--but you understood the point, right?).
Second, we can make our packages work on any terminal with no special generation required. Thanks to Greg Lutz, we've obtained a copy of the UC Berkeley terminal capability database, and Mike Riddle has written a program to decode it into easily accessed parameters. By writing a universal terminal module that is driven by these parameters, a program can adapt to a terminal simply by taking the name of the terminal, looking it up the database, and plugging the parameters into the driver. As the UC database is constantly updated, most of the maintenance work is done by our tax dollars, not our flying fingers. If somebody shows up with a terminal not in the database, we still only have to make an entry in the file, not program a new driver. Thus, a dealer selling our products need only set up a configuration file when selling the package with a statement like:
TERM ZORCHTERM-100
and our package will be ready to go. I think this is a powerful selling point and we should do it for sure.
Now, what are your ideas? I don't want to jump into thinking of products just yet, but what are the company-wide concepts we should be putting into everything we do? Or, putting it another way, what things do you find most annoying on the system you use now, and how would you solve them if you were starting over?
Editor: John Walker