Robert Norris Interview
Hello Rob, thank you so much for taking the time to do this interview.Even though you are a new developer to AROS you have shown a lot of promise.
We hope you continue your developing efforts with AROS for a long time.
Thanks for the encouragement!. I must say that I was a little surprised to be approached since I only just got here, but you'll find I'm always happy to talk about myself and my work ;) I expect I'll be around as long as AROS remains interesting, which it should be for a while - there's still so much to do.
Could you tell us a little about yourself and how you became interested in Amiga's?
I'm 26, living in Melbourne, Australia with my wife Gabriel and our two-year-old daughter Francesca. By day I work as a system adminstrator and programmer in the IT division at Monash University, mainly working on the central email, calendar and newsgroups services.
I've been a longtime C64 user, being actively involved in the demo
scene for most of the 1990s. I'd read about the Amiga in the various
Commodore-related magazines that were around at the time, and my uncle also owned a A500 which I'd drool over whenever I visited. I don't remember exactly what pushed me to get one, but at some point after I got my first job as a teenager (around 1995) I'd managed to get about AUD$400 together, and bought a secondhand A500 and 1084S monitor. There was maybe 30 or so (pirated) games with it, and I managed to pick up about 50 more from a local salvage yard a few months later.
It only had WB1.3 with it, and I was consigned to floppies (though I did find a A590 a few years later), but I still had lots of fun messing with the guts of the thing as best I could (mostly via free things I got from Amiga Format magazine).
I still own the Amiga, though it doesn't get used because the monitor is long dead and I can't find anything that will sync down to 15KHz so I can play the games. I pretty much moved to Linux once I got to Uni, and stayed there ever since.
You are fairly new to AROS, how did you hear about it?
I don't remember where I saw it initially. I think I used to search around every now and again to see what's happening in the Amiga world, so I probably came across it then.
I remember downloading it back around 1999 somehwere, where the best it could muster was some gadtools demos. I think my response would probably have been "whatever", as I don't remember looking at it again for a long time.
In mid-2004 I took another look at, and found it had come along way. I grabbed the source and started fiddling, even getting a working port of JJFFE up and running (this was a decompiled cross-platform of the Elite sequel "Frontier: First Encounters", for those that remember it). Sadly, that code is long lost, though I hope to do the port again soon.
At this time I was busy with other things, and my daughter was born in November of that year, so I didn't have much chance to go further with it. I don't think I ever forgot.
This time around, there was a post on Slashdot in December about the release of OS4, which reminded me again about AROS, so I swung by for another look.
Being more experienced this time round, the code made even more sense to me, and I had lots of spare time, so I decided that it was time to get into it more seriously.
What kind of projects were you working on before you started working with AROS?
My major claim to fame is "jabberd2", an implementation of the Jabber/XMPP protocols for instant messaging. I was the main programmer on this project for over two years. It was tremendous fun, and I learnt more about programming, networks, Unix and project and user management than I could possibly have learnt anywhere else. On the other side, it was incredibly hard work and I ended up burning out because I didn't know my own limits. The project still exists, though appears to be in decline, which is kinda sad, but it was so good for me that I don't feel like I've lost anything.
Since then I haven't done alot, being without a computer at home for the last couple of years, but I bought a nice laptop a few months ago, and have mostly been experimenting with bits of Perl and JavaScript since then. AROS is the first project I've taken up seriously in the last four years.
How does AROS compare to other operating systems you have used?
Thats an interesting question, because I don't actually use AROS - I just fire up the hosted environment whenever I want to test something. At the moment my interest is in the code itself. At that level its like oranges to apples compared to Unix systems, which is all I really know.
In terms of its actual usefulness to me, its not even close to ready yet. I've spent eight years tweaking and adjusting my environment to be perfect for the way I write code, and so AROS needs to be able to support that before I'd consider making it my primary OS on my laptop. But I'm working toward that, because I actually like its style as opposed to Unix, which I tolerate, and Windows, which I loathe.
What work have you completed for AROS up to this point?
My only finished piece is tap.device, which is a network driver for Linux-hosted AROS. With it you can run network apps in AROS on your Linux machine and have them hit the network, which is necessary if I'm going to do further work on network apps.
Thats all so far, but I've only been doing this for a few weeks.
What AROS specific projects are you working on now?
Right at this moment I'm splitting my time between porting PuTTY (a SSH client) and implementing a FAT32 filesystem driver so we can access Windows filesystems (which will be needed for using USB keys and the like). Both these projects are pushing me to shore up holes in other parts of AROS, like the console terminal emulation and DOS packets, so don't expect me to stay on these things for long, though I'll certainly come back to them once I have the pieces I need.
Has your AROS coding experience been a positive one so far? Do you find you enjoy coding for AROS?
Absolutely. The architecture is fascinating and not completely familiar to me, so I'm learning huge amounts as I try to get things done. Things aren't perfect; there's alot thats difficult about it (incoherent code in places, lack of docs, etc), but I'm certainly finding it much less frustrating than writing equivalent code on Unix.
I want to point out one of your posts on your blog named "Optimize for Fun". I thoroughly enjoyed that post and agree with it 100%. I have always thought the same way about my experience with the Amiga when I was first learning about computers and now with AROS. I am sure there are many others that feel the same way.
The post is here: http://cataclysm.cx/2007/01/20/optimise-for-fun/
Please feel free to comment any further if you would like.
I've been thinking a little more about the future of AROS since making that post. I haven't thought everything out yet, but I'll write a little of my thinking here, and perhaps follow it up with a blog post sometime later.
One of the original goals for AROS was 100% compatibility with AmigaOS 3.1. This is a noble goal, but its not particularly forward looking. AmigaOS has moved on since then, and there will be no new m68k hardware, yet many AROS developers are intent on making sure everything they do can be made to work on the older systems. Thats their prerogative of course, but my concern is that by constantly looking backwards we're missing the opportunities in the future.
As I mentioned in the post you reference, AROS could be the personal desktop OS that the world is waiting for. Thats not going to happen unless we get new developers. As time goes on, the pool of developers with experience with AmigaOS <= 3.1 grows ever smaller. The key is to attract developers with no Amiga experience at all, but thats not going to happen unless its obvious how to get started. The documentation we have is great, but its simply not enough. The canonical documentation for the AROS core, being an AmigaOS clone, is the Amiga ROM Kernel Manuals. Fine books they may be, but they've been out of print for over ten years. I'm bumping into this right now as I evaluate the work required to implement DOS packets. I have enough experience to be able to gain a vague understanding of the system by reading the code, but its less than ideal and most people don't have the time or motivation for that. I also worry about ports. Some things are great to port - mostly command-line tools. I worry about ports of GUI tools, or even whole GUI toolkits like GTK+. We gain nothing by having popular Unix apps like (say) GIMP available on AROS. No matter what the quality of the port, the fact remains that an application will always be more stable and better supported on the platform it was specifically designed and implemented for. If all we have are ports, then there's no compelling reason to run AROS - Linux can do it better. People need a reason to look at AROS. For the developers, that means well documented APIs. For users, that means high-quality AROS-only applications. Lunapaint is a great step in that direction, but it can't stand on its own. AROS needs to establish its own identity as something separate from both AmigaOS and other free operating systems.
Have you thought about what projects you would like to do for AROS in the future?
Yes. I'm keeping a list of things I might like to try at http://cataclysm.cx/aros-todo/ . As I mentioned above, my vague far-off goal is to have AROS replace Linux on my primary laptop, which I use for everything I do - code, web work, day job (requiring VMWare), video editing, media player and games. That might be an impossible target, I don't know, but I can certainly see the first steps so I'm working on those.
What advice could you give other developers who want to start contributing to AROS?For getting involved, AROS is no different to any other open source project, and I think all this applies to any project.
Don't worry about what people say AROS needs, but rather focus on what you need. Implement the features you want. Make the system work the way that you want it to. Working on what you want to work on will keep you motivated, because every milestone you hit you get closer to realising your vision.
Don't be afraid. Aim big. One of the things on my todo list is to port WebKit - the engine that powers Apple's Safari browser. I've heard good things about it, seen it in action, but I've never laid eyes on the code. I don't care - at some point, when I feel like doing it, I'll grab the code, and dive in. I won't overthink it, but just keep hacking until I get something working. If it gets too hard or demoralising, I'll chuck it and perhaps come back later.
Don't worry about looking stupid. AROS is one of the few projects that just hands out commit rights to anyone who wants them, which is a massive boon. Once you have your commit access, use it. Make changes to the core. Commit half-baked ideas. Don't worry about breaking things - if its wrong, someone will pick up on it and back your change out - all the history is there. Hang in #aros, and try to answer questions, as well as ask them. Post to the mailing list.
Finally, particularly if you're hacking on the core, forget everything you thought you knew about operating system design. Being (based-on) one of the few successful microkernel-based architectures, AROS is different to most other stuff you've seen. The "correct" way to do things on Unix may not be the right way for AROS, and vice-versa. tap.device got three rewrites as I learnt this principle.
How did you develop your programming skills?
Trial and error. Although I did do some formal CS education, most of what I know about programming is self taught through just mucking about. I think about the software I use alot, and about what works and what doesn't, and I quite often finding myself saying of some bug or shortcoming "why is that there; it can't be that hard to do it right". If I have time, I dig into the code in question and try to fix or improve it. Many times I'll find it really is that hard, but just as often I'll find an interesting or elegant solution. Other times, I'll have an idea, implement it to prove that I can, and then take the experience onto the next thing.
What programming languages do you know and what is your favorite?
I've dabbled in most of the well known languages from low-level assembly (Intel & Motorola-based) to the really high-level stuff (Erlang) and everything in between. My favourites are C for its speed and elegance and Perl for its power and flexibility. I'm also a big fan of JavaScript (as a language; the browser environment its shackled to is a horror).
Do you plan to learn other languages? If so, which ones?
Perl 6 is probably the next language I'll look into significantly, because its stolen a bunch of crazy new features from other languages that I think are a good fit, but even then thats only to keep my Perl skills up to date. I'm at the point in my programming experience where I can comfortably do anything I need to do in either C or Perl, so there's not alot of incentive to learn a new language.
The AROS community has mentioned DOS packets a lot lately.
Many people do not understand what they are and how it affects AROS. Can you explain this and help people understand?
This is long, but I've tried to make it understandable to non-technical readers. Also, I'm not an authority on this - what I've written here is what I've pieced together from reading code, mailing list posts and other bits. Its probably wrong in places.
The AmigaOS (and so AROS), like most operating systems, has the ability to use different filesystems. A filesystem controls the way files and folders are laid out on the disk, and handles all the details of creating, reading, writing and deleting those files. Without a filesystem, your disk (or floppy, CD-ROM, USB key or SD card) is just a giant chunk of raw unstructured data.
Examples of filesystems are the Amiga's Fast File System (FFS) and Smart File System (SFS), Windows' File Allocation Table (FAT) and NT File System (NTFS), Linux's ext2 and ext3, and so forth. Different filesystems are largely incompatible, so if you want to read (for example) a Windows disk on a Linux system, you need a Linux filesystem driver for FAT or NTFS.
In AmigaOS (and as I understand it, MorphOS) filesystems (also called "handlers") are implemented as a single task that wait to receive "packets" from an application (or from DOS, via calls like Open()). Each packet contains a command for the filesystem task (like "open a file" or "create a folder") and any data needed for the command (such as the filename).
In a multitasking system, there's only ever one task running on the CPU at any given time (unless you have a multiprocessor system, but lets forget about that for a moment). Every now and again, a hardware "clock" interrupts the processor and causes it to run a special piece of code installed by the operating system that saves the state of the currently running task (called the "context"), loads the context of another task, and continue running that task. This happens over and over again to give the illusion that many tasks are running at the same time
So, when a filesystem task receives a packet, it can't do anything until the task that sent the packet has been interrupted. Then it will process the packet, typically by accessing the disk. Meanwhile, the sending task (that is, the application) can continue doing other work. The filesystem task signals the sending task when the command has completed.
In some cases (usually platform dependent), the process of interrupting a task and restarting another (known as a "context switch") can be quite time consuming (from the computers' point of view). This isn't a problem most of the time, for example in a read command, where the filesystem task has to access the disk, since disk access is typically orders of magnitude slower than the work required to do a context switch. The problem is that not all commands actually require disk access (eg quering the driver for non-disk-related information). In some cases, like the RAM: handler (a filesystem based entirely in memory), none of the commands require slow disk access, so the two context switches required for every command (including every read and write) actually become quite a significant overhead.
So, the AROS developers decided to abandon this system in favour of making filesystems more like devices. AmigaOS/AROS devices are similar to the above model, in that they accept "packet" structures containing a command and a chunk of data. The major difference is that they don't have to use a separate task to do their work. When a command is issued to a device, it runs directly "inside" the caller's task - no context switch is required.
Most of the time a filesystem device will still use a seperate task, but one that it signals itself based on the asked-for command. In theory this allows the device to service commands immediately where possible, deferring slower commands to the task and allowing the application to continue without waiting.
As far as I'm able to tell this was seen as the major win, but it came at the expense of existing packet-based filesystems not being able to be used. The theory was that it would be trivial to implement a compatibility layer, but ten years on it hasn't emerged. Meanwhile, the only filesystems available to AROS are FFS, SFS and CDROM, with the last two both being packet based with a builtin conversion layer specific to the filesystem.
Various filesystem authors have offered to make their filesystems available to AROS as soon as the packet layer works. An implementation of DOS packets would both make AROS follow the "standard" in this area, but also give us fast access to much-desired filesystems like FAT, NTFS and ext2.
I'm currently researching the situation and working out what the best path forward is. If it seems feasible, I hope to take on the bounty for an implementation for DOS packets.
What do you think of the AROS community since you have been involved in it?
I love it. Both #aros and aros-exec.org have a heap of friendly, helpful people. Its been a while since I've felt comfortable in a chatroom or forum. The AROS crowd are very welcoming.
In your opinion, what feature could greatly improve AROS at this point?
A decent install system. I should be able to drop a CD in any computer and have it just work, without me having to do anything. At the moment, AROS is a pain to get setup. That needs to improve if more people are to try it.
What applications would you like to see available for AROS?
A good browser is an obvious choice - no system will ever get taken seriously these days unless it can use the Web reliably.
I think a good video editing application would rock. Its the kind of thing where the Amiga is traditionally been very good (remember the genlock days?), and its a niche that isn't dominated by a single application.
I'd like to see applications that really play to AROS' strengths.
Do you use any other operating system? If so, what type? (If Linux or BSD, please name the distribution)
My primary system is a laptop, running Debian Linux. I track the unstable tree, so I get the latest and greatest of everything but with the occassional breakages. My network detection scripts are flaky at the moment, for example, which means I have to manually configure my network when I move between home and work.
How many Amiga's have you owned and what models?
Just an old A500, as mentioned above.
Do you currently own any Amiga's?
The same A500, but its unusable without a monitor. I don't know what I'd do with it anyway.
Have you used Amiga OS4 or MorphOS at all?
Nope, and probably won't unless someone wants to send me a copy along with the necessary hardware.
Is there anything at all you would like to add?
I think I've said enough :P If anyone would like to know any more, I'll be monitoring the comments and I also hang in #aros as "fce2". Ask away!
Paul, thanks for giving me the opportunity to introduce myself properly to the AROS community. Keep up the good work with the AROS Show!



5 Comments:
Excellent Stuff Rob!
get onto those bounties, people will support a go getter like you!
Go Aussie!!
Go AROS!!
12:14 AM
keisangi
nice read.. i hope aros gets more devs and improve. definatly an interesting project to keep an eye on.
i wish fce2 best of luck for all his aros projects.
12:26 AM
I'm not sure what I like the most - the actual interview or the answers :). All in all, I really like this blog entry. Highly recommended!
5:53 AM
Thank you both! Allways interesting to read about the active Aros developers.
Gimme more!
8:39 AM
Thank you all very much for the comments, it is really appreciated. I'm glad you guys are enjoying it!
:)
9:31 AM
Post a Comment
<< Home