Thursday, December 6, 2012

The Project Revealed

The more things change, the more they stay the same

So far, I've written about mountains and ports, about programming and about popular games on phones.  There were pictures from Himalaya and some screenshots of ancient computers.  There were also pictures of colored text and colored windows.  Even a page with samples of running code.  But it's all bits and pieces.  It's time to connect the dots.

Can you guess the image?

The basic idea is to make wxWidgets available on Amiga.  Making a new software available on a new computer is referred to as porting.  Porting wxWidgets means making it available on a new computer.  It's just that simple.

What is wxWidgets?

It's a toolkit for programmers.  Some of the fun things programmers want to do with computers can be a bit hard.  Things like playing video clips and music, making nice user interfaces, network stuff, graphics and 3D, web, database connections, etc. can take quite a bit of code even to achieve very simple things.  Even just making the software work nicely in both Россия and 日本 can present some fairly hairy challenges.  If you've ever faced code pages in Windows, or EURO (€) symbols that won't print, then perhaps you know what I mean.  Some people think of wxWidgets as a GUI toolkit, but it's really a toolkit that simplifies all of the above (and more).  And what's more, it makes it easy to make the same app available on both PC and Mac.  And Linux.  And phones.  And Amiga.

Using another toolkit like MFC, .NET or Cocoa (Mac) or even GTK (Linux) makes apps just as easy to write, but mostly just makes them available on one computer type (e.g. Mac or PC).  With wxWidgets, the app is more or less automatically available on just about any computer type, and tablets and phones.

Is that the Amiga from my childhood?

A different kind of small talk
Yeah ;-)  It changed a bit after Commodore failed, but it's essentially the same thing.  What most people don't know is that Amiga has a pretty nice, simple and mostly complete operating system.  The initial designers took inspiration from some of the best available technology, and simplified it to work in an inexpensive home/game computer.  This means it has many features from bigger systems (read: Unix), but without the complexity that makes them slow and big.  User interface systems were inspired by research at Xerox PARC, same as most other user interface systems.  GUI and widgets systems were inspired by Smalltalk, and the MVC model.  The disk operating system and kernel originated mostly from a research project at the University of Cambridge.

The modern Amiga is a 64-bit multi core PowerPC machine, with gigabytes of RAM, Radeon 3D graphics, gigabit ethernet, SATA/USB/PCI ports, 7.1 channel audio, and whatever else can be expected from a current computer.  The OS supports Cairo and OpenGL graphics, 64 bit journalling file systems, BSD sockets, music and video playback, transparent desktop windows, internationalization, threads, dynamic loading, and many other things expected from a modern OS -- with some nice additions not found anywhere else.

The key thing is that all of AmigaOS is based on solid research principles that were simplified and put into an efficient package.  This makes it similar enough to other systems to make it easy to understand, but different enough to make it interesting.  Now, how the original engineers were able to get venture capital to build a game console, but managed to produce this neat little piece of operating system, that can probably only be answered by themselves!

Either way, wxWidgets is a perfect match for the Amiga, and the port is long overdue.

So what's the project?

Making wxWidgets available on Amiga.  I'd like to think that this adds value both to Amiga and to wxWidgets.  How much value can certainly be debated, but I'm not asking to get paid.  I'm doing it mostly because I enjoy it.  And because it's something wildly different from what I've been doing recently.

The main effect would be to enable a large number of new apps on Amiga, but it also means that some Amiga apps could be rewritten for wxWidgets and made available on other platforms.

What's with the mountains?

They're just there as a metaphor for challenges that sometimes come in our way.  This project is a significant challenge for me.  I don't know much about mountains really, but I know quite a lot about taking on challenges that appear almost overwhelming.  Depending on your own experience with wxWidgets, Amiga, programming and software projects, you may or may not see the same challenge in this project.  That's fine though.  I will explain as I go along why this project, right now in my life, is stretching my limits.


Used for 3D graphics.  I like moving, spinning things in full color.  What can I say?  Here's an example of what is possible when triangles meet wxWidgets:

Nothing But Nets

One of the nice things about open source development is that it's mostly free (as in beer) and unbound in time.  In reality though, there are still both money and time constraints although maybe not as clear cut as in commercial projects.  I've decided to commit the time and money to complete this project, and make the end product available for free.  If you like this project and enjoy reading the blog, do consider donating to Nothing But Nets.  It is a United Nations Foundation initiative to fight malaria, clearly on a whole different level of importance than anything wxWidgets or Amiga can do.  I don't mind some limited compensation for the time and money I invested, but it's not critical.  If there is interest, I may open up options to donate to this project specifically, but Nothing But Nets will always be the preferred choice.

That's all for now.  Comments are open for this post, go ahead and try it!

“Grown-ups never understand anything by themselves, and it is
tiresome for children to be always and forever explaining things to them”
― Antoine de Saint-Exupéry


  1. I will do a donation as soon as we can see some fun on our amigaos :)

  2. I haven´t an AOS4 yet but I´m following your blog cos think It´ll be a very very good thing. Keep up the work. As Joeled, I´ll donate when party starts!


    1. Okay, cool! I'm hoping the port will work reasonably well on 3.x also. Not sure about the details yet, some features are missing from 3.x, but they may or may not be critical.

  3. Thanks! It´s funny to read your blog! Keep on!!

  4. This comment has been removed by the author.

  5. Your work is great!
    Could the other ng amigans (AROS/MOS users) hope something?

    What is the technical details of porting? Do you use Intuition?

    What is the progress? You haven't written nothing long time...