To get my feet wet, I decided on three tasks. I hoped they wouldn’t be too difficult, yet challenging enough to we my appetite. To wit:
- Install AROS in a VM
- Install Free Pascal and Lazarus, if not already installed
- Build a simple single form/single form app that responds to the button’s click event, and run the app in AROS, just to see it work.
Install AROS in a VM
My primary machine is a 2012 MacBook Pro, 15″ (not Retina), i7, and 8GB of RAM. I’m generally in Mac OS X, although that has been casual, non-development usage until now. I also run Windows 7 in Parallels, the latter being a marvelous piece of software running on a marvelous piece of hardware. Between the two, this is the best Windows laptop that I’ve ever owned. 🙂
But AROS locks up when booting in Parallels. A quick Google search did not reveal a solution, so I decided to try other solutions. I’m not running the latest Mac OS X or Parallels. My machine is capable, I just haven’t had a reason to upgrade yet. Perhaps the issues with Parallels can be resolved with future changes to either Parallels or AROS. I have no idea where one would even start. Way out of my league, anyway, so…
VMWare products seem to have the best reputation for just working with most virtualization scenarios. But there isn’t a “free for personal use” VMWare product for Mac OS X. While I don’t mind paying for quality software, I’m already a Parallels fanboy on my second upgrade and considering another upgrade. I just don’t want to have to use two products, and I really like Parallels. Luckily, I found posts that indicated that VirtualBox would work, and it is an open source product. I’d still prefer everything to work in Parallels, but at least I can get started without investing money in another vm product.
How well AROS works in VirtualBox seems to vary based on the distribution that you choose, which would be the same if you installed AROS on native hardware. Immediately after a fresh install, Icaros Desktop worked best for me. Specifically, networking (via the emulated NIC card) was already configured and worked immediately without me making a single change. That is always a blessing when trying out an operating system that you have almost zero experience using, let alone configuring and administering.
There were a couple of minor issues, but they were both known issues with solutions that could be find with a web search:
- The video display defaults to something larger than my MacBook Pro supports. (My MacBook runs at 1440 x 900. Icaros Desktop boots to something higher in VirtualBox, but I don’t remember what). That can be corrected at boot time or permanently by changing GRUB’s boot configuration file.
- Sound does not work. There is a generic “sound does not work” known issue with an easy fix. You just need to ensure the sound driver is configured correctly in Prefs (I think that is AHI prefs… dang, I need to verify that later). However, that still did not work for me. Although the AC-97 driver implemented/emulated by VirtualBox should work with AROS, something broke with VirtualBox 5.0.
Luckily, Oracle has older versions of VirtualBox available for download. I’m using 4.2.36 and it is working extremely well. The quality of multimedia playback is unbelievable (especially for hardware that is both virtualized and emulated). High def videos look amazing and my sound playback is very good. I’m sure sound quality would be better on a good, natively supported sound card. But I have no complaints.
Install Free Pascal and Lazarus, if needed
Ironically, I’ve arrived to this fascinating corner of retro technology at the perfect time. There has been a lot of work put into the Free Pascal compiler to support the AROS platform. There are some remaining issues. But there are also two or three passionate developers working to resolve those issues.
Icaros Desktop comes with Free Pascal and Lazarus already installed. However, due to the recent and ongoing support added for AROS, you should get the latest and greatest. Doing that for other platforms isn’t too difficult. It is a little challenging for AROS.
The typical way to develop a GUI application with Lazarus is to use the Lazarus Component Library (LCL). LCL is implemented as a wrapper around various native GUI frameworks, such as Win32 controls, Carbon/Cocoa, Qt, GTK, and others. In order for Lazarus to be able to develop GUI applications the same way on AROS as other platforms, a LCL interface layer was needed so LCL could “talk” to the AmigaOS GUI API. This work has started and much progress has been made. However, there are at least two possible interfaces available, if not three. Wrapping my head around the current state and stability of Lazarus and the LCL in AROS has been overly difficult. I’m still confused. All I know is that the two developers that I’ve talked to that have already made tremendous strides towards making this dream a reality have both told me that it isn’t functional or stable enough to be usable right now.
Based on their feedback, I decided to skip Lazarus running “natively” in AROS for now. Free Pascal is very usable and can be used to compile existing projects or create new projects that either do not have a graphical interface or create all of the GUI elements in code.
However, that wasn’t a reason to slow down. (Other distractions slowed me down, but that’s life.) One of the developers passionate about bringing Lazarus to AROS goes by ALB42. From what I’ve seen online, I believe he has done more towards making this dream a reality than anyone else. Among other things, he put together a “Virtual Lazarus” CD for developing AROS applications. You boot the CD on native hardware or a VM and it boots into a very lightweight Linux distribution. From there you can run Lazarus and design/create a GUI application for AROS. ALB42 has already configured the IDE for cross-compilation support. So you can compile your project for one or more AmigaOS variants, copy the compiled result to your Amiga environment, and run the application!
Now, how well your application works on “an Amiga” is another story. There are significant parts of the LCL/Amiga interface layer that are missing. Although the LCL may know how to create an image control when running in Windows or Lazarus, your app may crash on an Amiga because of critical missing pieces.
If you read between the lines, you should pick up on a major motivation for getting Lazarus working on AROS, along with all of the other projects that you can image creating with Lazarus. Because a single Lazarus project can be built to run on Windows, Linux, Mac OS X, WinCE, iOS, and Android. And, coming soon, AROS. (Keep in mind that each is a different platform, so it needs to be designed to accommodate those differences. For example, the same screens probably aren’t appropriate for every platform.)
One might think that the fact that Lazarus and the LCL are there just it would be a disappointment and a distraction for me. Quite the contrary. This is an opportunity where I can truly contribute to make Lazarus and AROS a more enjoyable, more productive experience that enables other developers to create stuff that I’ll never even dream of. And that is really exciting. 🙂
Create a simple app in Lazarus and see that app run in AROS
Although I couldn’t do this using Lazarus directly in AROS, I was able to accomplish it with ALB42’s Virtual Lazarus. And it was very cool! But I’m still not where I want to be before I really get started.
I have Lazarus and AROS running in separate VMs within Mac OS X. Virtual Lazarus is a VMWare machine, so I’m running the trial version of VMWare Fusion. I have a couple of options here:
There is extensive support for Linux in Parallels. I suspect that Windows and Linux are the two most products most commonly virtualized using Parallels. So I could create a new Linux vm in Parallels, using a distribution that is a little better equipped out of the box.
But I’m not a strong Linux user. I have nothing against Linux, aside from I don’t believe most Linux desktop environments are as easy to use or as functional as Windows or Mac OS X either one. But commercial products have a lot more man years invested in them for that level of polish. Of course, AROS needs some love in this area as well. Which might be another opportunity for me. But I can’t get ahead of myself…
An even better solution, eventually…
Then I realized that I’d still be cross-compiling for AROS support. And Lazarus works in Mac OS X quite well. So I decided to install Lazarus on my laptop. Unfortunately, I was exposed and confused by the one thing that has plagued Lazarus for years: politics (or that’s the best analogy that I have). I actually looked at Lazarus in the late ’90s, but it was too young for me at the time. I was already using Delphi and did not need cross-platform back then. Now I’m back, and the same crap is going on.
There have been at least forks, if you will, where someone has released another IDE using the Lazarus source code. One of those contributed a lot of his work back to Lazarus, which was apparently extremely good work and very appreciated. The other, not so much.
And yet there are still two “distributions” of Lazarus, if you will. There is the original, traditional, Lazarus at http://www.lazarus-ide.org. And there is the GetLazarus initiative at http://www.getlazarus.org. It boggles my mind why these two aren’t working together. Anyway, I highly recommend using GetLazarus if you need to install Lazarus on a supported platform. Their installation script for Mac OS X is extremely slick. I’d love to implement something similar for a Lazarus installer for AROS.
I still need to configure cross-compiling to AROS from Lazarus running on a Mac work, and get it working.
I also want an easy way to distribute and share the files between my environments and virtual machines. I’ll likely use github to store projects. I mean, why not, right? But that isn’t feasible for something like copying temporary files between machines. I’m used to using the VM’s Shared Folders feature, but that requires the guest OS to support those VM extensions. And getting Samba working between Mac OS X and AROS running in a VirtualBox VM is nothing something that I want to think about.
So I’m going to invest in AmiCloud. I have mixed feelings about “the cloud”. There is a quote, which I can’t correctly attribute, that is “the cloud is just someone else’s computer”. I generally prefer keeping my data and applications on my own computers. But I do use Google Drive and Google Docs. I think AmiCloud is something that could benefit a lot of users. And there are clients for all of the devices that I may want to use. It isn’t clear whether it is really working yet or not, as it a new service with a lot of hype from the company. But it is worth a shot and, even if there are problems with it, hopefully I can give feedback that will make AmiCloud even better.
So many ideas and opportunities, and yet so little time…