Creating Native OS/2 Software
Introduction
This article does not define "native
software" -- I think this is common knowledge to everyone using OS/2. This
article deals with two things: first, the hard to see relationship between porting
projects to native software, and why these are absolutely needed for the future
of native software development, and secondly how we can satisfy our need for native
software with our limited resources of programmers.
If you know the criticisms against
porting software, it should be obvious why I deal with the first part. I deal with
the second part because the "Netlabs idea" is mostly misunderstood, and
believe that THIS is where the future of OS/2 software lies.
Part One: Ports
Odin
Odin is the well known project that
opens OS/2 to the world to Win32 software (that is Win 9x/NT software). The ported
programs are not native software of course, and they do not behave as if
they are native. But there are Win 32 programs that are absolutely needed, such
as Word, the Realplayer or smaller specific software (for programming your phone
or whatever). So we have two choices: either everyone has to have a Win32 platform
on his computer, or we write a clone.
But who wants to reboot every time
he wants to view a Realplayer file? So the only real choice is to write a clone.
But if you know anything about what we're cloning, you also know there's a lot to
do -- and while you cloning it, the target is moving away. And those targets are
moving fast.
So instead of constantly producing
out-of-date clones, Odin decided to build a base on which you can use the needed
programs directly. It's not as native a clone, but you don't have to reboot -- the
best clone is the original.
I don't know if cloning would take
less time than Odin, but I know that getting information on the Word files, Realplayer
formats etc is not that easy and Odin has a lot bigger side effect.
First, some later versions of a program already work without changing Odin. A Clone
has to implement all the new features. Secondly, some people will never get an application
if they're waiting for a true clone clone... like the phone-programming tool (or
Gnutella, which is already working with Odin).
This allows developers to be more
selective about what to clone as a native application. With Odin, you don't have
to clone Word (as it's too big and too fast moving) but you can clone Napster to
implement WPS integration, or include it in the SysBar pipe monitor, for example.
And don't forget, Odin can also help
you use Win32 code under OS/2. So if you can get the source to PowerArchiver
you can use it to build an OS/2 front end, so that you have built an archiving tool
that supports nearly every type or archive with a minimum of work.
*nix ports
First, when I say "*nix"
we all think of Linux. But this isn't necessarily true, Linux is just one platform
that all the GNU and other *nix progs are compiled for. It's the free distribution
that makes Linux ports so common, but if you compare speed and stability you'll
see that other Unix platforms have many advantages. Second, "port" is
the wrong word of course. It's only used because it's a lot of work some times to
get a *nix prog compiling and running under OS/2, as there are bigger differences
than between the different *nixes. But if you think of the idea behind GNU (Gnu
is Not Unix) you realize the OS/2 is just one platform like the others that the
program is compiled for.
There are two kinds of *nix ports,
the text mode ones and Xfree86 ones. They all have something in common: their development
is continued without any OS/2-programmer's manpower, and mostly it's continued quickly.
So if we port a program once, we have a good chance of getting an up-to-date program
with a minimum of work next time.
Text mode ports can be divided into
command line tools and those with a VIO-interactive user interface.
Command line tools are popular
if you're talking about native software, as there is no difference between these
and native OS/2 command line programs, except that you need EMX. And it's a lot
less work to port a program than it is to write it from scratch. Instead, you port
the prog and either provide from it's development or also work on it. And there
are not only normal programs to port like wget, but there are also a lot of (hardware)
specific apps out there, such as cdrecord (CD-burning) or SANE (scanning).
Command-line-ports are also used
as a starting point in order to build PM-Front ends. So you don't have to care about
any specific work of the program, but only for its usability. And this was (maybe
still is) one of the easiest ways to work together on a project, one programmer
working on the front end and one working on the back end.
VIO-programs are not as popular,
as it is sometimes complicated to solve their problems with the character set and
special keys (like arrows etc). But if they are ported correctly, once again the
program doesn't have to be developed by OS/2-programmers. So you can get great programs
with little work such as the Midnight Commander (Norton Commander clone with FTP
enhancement) and sometimes it even possible to build a PM front end like we have
with EMACS (programmable editor, with Newsreader, web browser, mail client, syntax
highlighting (for Tex, HTML etc)).
Xfree86 ports are all different,
but they all have in common that you run an X-Server on your OS/2 system. This is
the biggest criticism for these ports. Xfree86OS/2 is absolutely useful (e.g. for
remote programs) but it's inconvenient to have to leave the WPS to run a program.
So if there are Xfree86OS/2 programs that could be useful for OS/2, the most important
step should be getting them to the PM and one way to do this is with the Everblue
project. And to answer the question, there are Xfree86OS/2 programs worth porting,
specifically there are two kinds of GUI-Toolkits with a lot of software: GNOME and
KDE.
GNOME/2 is a project with the goal
porting the most needed GNOME-apps to OS/2. Therefore the team has to port the GNOME
libs such as Orbit and GTK, which is very hard and the team is often seeking help
in finding bugs (see below if you want to help). But the profit of this painful
work is well known: GIMP (great graphic prog), Gphoto (Digital Camera transfer utility),
Gnokii (Nokia cell-phone communication suite) ...
One reason why such programs are
ported has been said, e.g. it would take too much time writing a program like GIMP.
Another reason is, that some code includes a lot of hardware specific stuff like
Gphoto and Gnokii does. This hardware information is easier to get if you say "I'm
working on a Linux program" than for any other platform, AND if you have a
big community that needs your program, so you have a lot of testers.
So if these programs are wanted under
OS/2, and there is no easier way to get them, they have to be ported. The biggest
job to be done is getting them to the PM. At the beginning Everblue thought about
only porting the GTK to the PM, but the changed to porting the whole Xlib. Another
possible (but slow) way is having a X-Server included in the PM. The last and hardest
way is to rewrite the GUI of a prog. This is an idea that hasn't been tried yet,
but it's not much more work than building a code-internal front end (only the code
is a lot more confusing and you need to know it very well).
KDE/2: Like GNOME, KDE also has a
big bunch of software and there is more to come. The OS/2 port has only been started,
but it will be interesting to see where it's programs can help OS/2 filling leaks.
A few other programs use different
toolkits, but those are mostly smaller and sometimes even included with the program
source.
A lot of people wonder, if all the
Xfree86OS/2 programs are ported only when they are needed, why is there so much
junk? That's easy to answer: If you already have the basics ported, a few programs
can be ported without much work. And if you like a program, why not port it to OS/2
instead of booting to *nix every time you want to run it? On the other had you should
never forget that there's not only needed programs, but also a lot of fun stuff
out there. So if you'd like to have a SimCity under OS/2 you can either buy the
old OS/2 version, use a *nix with LinCity or use the OS/2 port of LinCity, but there
is no need to rewrite SimCity for OS/2.
The Netlabs idea
In my eyes, Netlabs is simply the
solution to the biggest OS/2 problems: dead software and 20 unfinished software
packages with the same goal ...
I think I don't need to explain more,
you know exactly what I'm talking about. This is the pain of OS/2. But the solution
could have been so simple: be sure software won't die and make certain that there
isn't already a program out there before another 19 are started. The solution for
such problems is Open Source Software. Projects can't die, and people can work together
on it though CVS. And if you really want your own software you don't have to start
from scratch, but can use the existing code of a project. Even this is a bad idea,
as you could also implement all the features you wanted to have in an existing project
without separating. I want to give you an example:
X-Workplace
I know it's not up to me to write
about it, but it explains what I wanted to point out.
A great thing about OS/2 always was
and is the WPS, but after some time you'll notice it's missing some features. Therefore
there are a lot of WPS-Enhancers all with great features. But after a short time
the fun has gone again, when you figure out that some WPS-Enhancers won't work together
correctly. (And did you notice how many same features they have?) So what X-Workplace
does is give the programmers the chance to add all their features into a single
piece of software. What the programmers have to do is not to write all the stuff
with the common features and the basic enhancements, they only need to add their
feature and that's it... so they have more time for writing other features. What
the users get is ONE WPS-enhancer, so no more collisions between enhancers... and
one user interface.
But X-Workplace has gone a step farther,
as you can choose which classes shall be overwritten, so that features can REALLY
be disabled when necessary, so you have the features, but not the problems. At the
moment, this is not the reality because the product is still alpha and developers
are missing.
Currently Ulrich Moeller is nearly
doing everything by himself (thanks a lot Ulrich, we know what you're doing). There
aren't even any guest programmers who add their own features. What's the problem,
why are you still working only on you own software?
But this should also be an example
...
Positive side-effects
Of course working on an Open Source
project at Netlabs is a good thing for users and programmers, so that Freeware programmers
should think of joining, but the Netlabs Organization also has a lot of other positive
side effects. For example, Netlabs is the perfect place where you can donate discontinued
software, so others can learn from its code, or continue developing it.
An example for this could be HandyFTP,
which includes a lot of great ideas, but was discontinued before it's first non
beta came out, because the author was involved in a lot of other projects. Now this
source is at Netlabs and can be continued. This software could be developed with
the same potential that X-Workplace has, where guest programmers can add their wanted
features.
Another positive side effect is that
Netlabs is the place where new ideas can be born, as it has a database with ideas
for new software, so developers can get great ideas, either from non-developers
or busy developers. The same goes for existing software, non-developers can have
great ideas, for example with X-Workplace, but could never realize it on their own...
but with this way it's possible for the idea to be realized by someone else.
But Open Source also influences up-and-coming
new developers, as existing source is a great point to start programming. You only
have to understand the code to add a few lines. This is not as easy as it seems,
because setting up a properly configured GCC-Environment is not as easy as it sounds.
So we have to build out of the box environments and collect and write Tutorials
... (it's still a log way to go).
Conclusion
To give OS/2 the software it deserves
and allow us to have a powerful Office/Home environment, we need to use all the
resources we can get. That means we should try to port as many apps as we can and
have them run as close to native applications as possible. And we should try to
use our own resources as carefully as possible, which means we have to work together
in the future. The solution here is Netlabs. Currently it is only a Webserver, so
we have to fill it with life. Go join projects, build your own, be sure we have
at least one program of a kind instead 20 WPS-Enhancers and Config.sys editors (with
nearly the same features), but nothing else. Don't be shy or think you have too
little time to be on a project. Adding a single feature to a software is better
than keeping out of it entirely.
Non programmers ...
... can also help. Of course they
could learn programming, but there are also other ways. They could try to support
programmers, for example by making their homepages or testing programs. Or help
the OS/2 community get organized, by making unknown programs popular, filling Hobbes
and LEO with stuff you found etc.
And NEVER KEEP YOUR MOUTH SHUT, when
you have an IDEA or find a BUG.
|