Cross-platform, the freedom to choose any computer

How to change the computer world to suit everybody

(C) Otto Wyss, Jan. 19th 2006


Cross-platform, the vision

Just imagine that if every application and every game were coded cross-platform everybody just could go into any shop and buy any computer they like. They wouldn't have to ask the sales person questions like "Is that application available on this computer?" or "Does my game still run on this computer?". All these questions would immediately vanish if everything were coded and built cross-platform. Everybody probably agrees that having cross-platform programs would mean lot of freedom in the computer world.

There are many ways to get cross-platform but we aren't just talking about web access which is cross-platform as long as we are using a cross-platform browser. Nor aren't we talking about scripting solutions which are cross-platform as long as the scripting environment is. No, we are talking about the binary executable applications used by ordinary people doing their everyday work. All these applications have to be cross-platform as well!

Now you may ask yourself; is this goal realistic, is it really possible to code almost everything cross-platform, besides tightly platform specific code? Yes, it is of course, at no question. The question is rather, is it possible to code everything cross-platform without too much work? Is it possible to code cross-platform while keeping the additional work load within reasonable limits? Yes it is possible", it is even possible to keep the amount negligible! And compared to any multiple port solution, cross-platform coding is by far less work!

No matter how difficult cross-platform solutions are, there will come a time in future when everything is cross-platform and it's time to start doing it now. There are simply too many advantages, too much freedom to gain from cross-platform applications!


Who will gain from cross-platform?

Obviously the ordinary computer users gain much from cross-platform applications since they no longer have to care if anything, i.e. any important application or any nice game, will run on their chosen computer. So any user can just buy what he likes, a top gaming computer which will still run any application, an ordinary work computer which will still run any game, or just a nice little computer suited for any personal task. Cross-platform programs also help the sales personnel, who are no longer confronted with questions they usually can not answer.

Can you imagine how much cross-platform development could benefit to computer science students? During their studies they often have to create solutions to tasks the professor sets them. Learning is either confined to tasks which can be completed on both the university and the home computer, or confined to tasks without any platform limitations, e.g. web development. Just working on the university computers is possible but probably not the best alternative. With cross-platform development there aren't these limitations anymore, any student can choose whatever he likes most. Furthermore, cross-platform development helps them to finish their tasks faster or develop more capable applications (although professors might also increase the complexity of the requirements).

What about companies? Well companies always strive to reduce costs and deliver cheaper solutions. I'm quite sure any serious software manufacture delving into cross-platform development will discover its advantages. It's just so much easier to code cross-platform for multiple platforms. Of course they keep it secret until they've finished the transition and are able to sell their products. This transition needs time, sometimes years, so don't expect the first announcements early.

What about government and city administrations? As these have to provide platform independent services as soon as cross-platform solutions are possible, they have no alternative to requesting it from their suppliers. Administrations can gain most from cross-platform solutions since they can choose their best fitting solutions. Therefore it would not be big surprises if legislation is laid down to force suppliers to provide cross-platform solutions sooner or later.

Do you know that the 100$-PC community urgently needs cross-platform solutions? 100$-PCs aren't meant for development so applications will still be developed on the high powered systems which developers like to use. It's quite reasonable to assume that these developers do not use compatible operating systems, so cross-platform development is therefore a necessity. Besides the 100$-PC might not always be limited to the current processor or the current system.

Let's look at the countless independent software vendors. They are always hard pressed to fulfill their tasks and earn money. Sure, without cross-platform development they have no alternative other than to concentrate on the leading platform, cementing its role further. But with cross-platform development they are free from a single platform and free to sell their products to any customer. No more are they restricted by not being able to support a second or third platform. Besides they probably profit from the other advantages (see below).

Now what about OpenSource developers? At first glance it seems as if cross-platform implies more work than they can cope with. But that's not true; cross-platform doesn't impose additional work besides a negligible amount (see below). But in return developers get multiple ports for free! They can finally compete on any computer against any other applications showing to ordinary users what they are able to achieve.


What about losers?

Are there only winners or will there also be losers when cross-platform becomes widespread? There will clearly be losers but not many, and it might not be the obvious ones. Even monopolists can use cross-platform development in the same way as anybody else. They still want to sell their products on any platform or to administrations even after "cross-platform" becomes a requirement. None can say who will be among the losers yet since it will be the ones who don't do cross-platform development or don't start in time.


What can you do?

There are lots of different things everybody can do in making cross-platform become a reality. There is no limitation in knowledge or in time. Everybody can help in whatever way he can; e.g. just talking about cross-platform to your friends or anybody else will help. Just look at the wiki http://wyoguide.sf.net/wiki and discover what you can contribute or even offer your suggestions. If you are more technically inclined, read on and later you can go to the developer section http://wyoguide.sf.net/wiki/index.php/Developers.


How is cross-platform development possible?

You may wonder how this can be possible. It's quite simple, just use a decent cross-platform framework! Before you ask the next question, yes there is at least one such framework, its called wxWidgets http://www.wxWidgets.org. Look through its online documentation or buy the wxWidgets book and discover its beauty. Of course there are many other solutions to cross-platform development but none as good.

You may counter that the above is just advertisement and not proof. To find out if that is true give me a little more of your time. Assuming you have successfully installed wxWidgets on your computer and successfully built and run some of the provided samples. Just about any framework can do that, that's no big deal. Now go to wyoGuide http://wyoguide.sf.net and get the demo sample code. Instead of just building and running it, like any ordinary sample, change any occurrence of its name to one you like more, rework its description and add some of your own code, e.g. show a dialog with your name and address. Now as soon as you are able to build and run your code successfully create an archive similar to the one as the demo sample and send it to one of your friends who own a different computer. I'm quite sure if you have done everything right your friend is able to build and run your own code within the same day.

Amazingly with the wyoGuide demo sample code, porting your application to any other supported platform doesn't take more than a single day to achieve. More amazingly it doesn't take more than a day for a full featured application either! This is because even your own simple application already is a full featured application. Besides having a usable menu, a toolbar for status message, etc, it also already has a help component, can be translated into any language and a lot more. It already has all the necessary base functionality that any decent application has these days.

Furthermore, this little demonstration has a nice side effect, any application coded like this runs right from the start. You can easily add feature after feature or improve any feature and you can simply run and test it. You don't have to build a large test environment since all the base functionality is already working.


wyoGuide, the cross-platform guidelines

Before you read on you have to realize that to write cross-platform code you also need cross-platform guidelines. Let's first have a quick look at wyoGuide:

wyoGuide is a guide and a tutorial for developing well-designed cross-platform applications. Where possible any guideline is accompanied with sample code. The fully working demo application applies all these guidelines and is well suited as a starting code base for your own projects.

wyoGuide does not only help with cross-platform development, it also ensures well-designed applications. It suggests solutions for anything a professional looking application has these days. If you follow the guidelines you can be sure your users will immediately feel comfortable.

Assume you have coded your application as wyoGuide suggests. Can you imagine any one of your friends helping you with testing your application and writing all the help texts, someone without any coding knowledge? Yes this is possible since it does not require deep technical knowledge to write the help texts. Of course if your friend is a developer himself it might be you who helps with writing the help texts. Anybody can do it, all it needs some time, some intelligence and the willingness to give something back to the community.

If you are serious about your application, you'll soon discover that you can't handle all the work alone. Other developers should be able either to suggest improvements or even participate in your project. That means you should take special care that other developers can easily understand your code. Now in case other developers already know wyoGuide they will immediately be familiar with your code. Don't you agree following wyoGuide would be extremely helpful?


Conclusion

There's no question that cross-platform will deliver a lot of freedom to everybody. There will come a day when all software is cross-platform. The transition to this day might be hard, involve a lot of work and need all our effort, but with the help of wyoGuide this transition is possible. There is no way around it and there are no excuses, it's only a matter of time and effort: Cross-platform will become a reality.

For more information look at the cross-platform wiki http://wyoguide.sf.net/wiki and see what you can do or go to the developer section http://wyoguide.sf.net/wiki/index.php/Developers.