Perhaps it is pointless commenting on this, because Fred will do whatever he thinks is best. And there's only so much you can do with a small team and limited resources. Perhaps it's better for PB to be a great language for the major desktop platforms, than a crappy language for many platforms.
But anyway, here are some thoughts...
It seems to me that programming is going through a huge change just now. In the past it was a choice between Windows, Mac or Linux. And those platforms will be important for a long time yet. However, nowadays people expect things to be available no matter what platform they're on. This is because of websites, really. Imagine if you could only look at Facebook on a Mac, or MySpace on Linux. Also because of websites, people have got accustomed to using the latest version of software without having to update it manually. This is how websites behave, and it's how programs should behave.
This is where the modern web browser comes in. It makes the underlying OS irrelevant. The browser is becoming capable of 2D drawing, 3D graphics, sound synthesis, file management, multithreading, databases, drag&drop, etc. The web browser is becoming THE platform. And this is how things should be. Who wants to worry about Mac/Windows/Linux?! Who wants to worry about not having the latest version of a program?
Part of PureBasic's charm has been that, to a large extent, you don't need to worry about Mac/Windows/Linux because it compiles to all three. But the browser is now, effectively, becoming the 4th platform. It's a few years away yet, but it's coming. And if you want your program to get to consumers, the web browser will be the platform to choose - not Windows or Mac. Google is working on Native Client to allow binary "modules" (executables) to run inside Chrome, and other browsers will follow suit.
Separate from that is the mobile phone platform. Writing mobile phone apps is already a bankable skill, and it will only become more so as people migrate away from Mac/Windows/Linux.
People will expect programs to be delivered either as webpages (you use it in your browser), or as mobile apps (you use it on your phone).
So there are two new kinds of "program" emerging:
the webpage and
the mobile phone app.
You can't use PureBasic to make either of these. For now, that isn't a big problem. All of us on this forum use PB to make programs for "the old platforms", and we'll be doing it for many years to come.
But in five or ten years from now, "the old platforms" will be much less relevant than they are today.
I'd say that it would be wise for PB v5.0 to do these things:
- compile NativeClient modules
- compile mobile phone apps
In the first case, a lot of PB's own libraries would be redundant. We don't need 2D drawing, 3D, drag&drop, database etc... because
the browser provides APIs for those things. PB would communicate with the APIs. Essentially PB would just be the top layer, with the "nuts and bolts" handled by the browser. We'd simply be programming webpages in PureBasic rather than JavaScript (I'd LOVE that!) but because the browser is a modern one, such as Chrome, we'd have access to 3D, 2D drawing, databases etc. just like we have now with PB's own libraries.
In the second case, compiling mobile phone apps would be different, because it wouldn't be for a single target platform (Native Client) but at least 3 different operating systems (iOS, Android, Symbian, etc.). I don't know what would be involved in this. Would PB's libraries need to be re-written? PB v5.0 could have basic support for this, with new features added as and when the libraries were updated, if at all.
So essentially there are four new operating systems for PureBasic to support: NativeClient, iOS, Android, Symbian.
LLVM may reduce the workload, but I don't understand how it all works. It does compile for NativeClient, though.
I hate saying all this, because it sounds like a hell of a lot of work. But I believe it is the future, and it'll be a great future. I really want PureBasic to be a part of it. I don't want it to disappear or become a language for "the old platforms". I want to be able to use it for the new era of mobile apps and web apps!