Interview with Peter Tattam of the PetrOS Project

Trumpet Software is mostly known for their Internet communications software package, Trumpet Winsock, which has been adopted by the Internet world back in 1995, at the times where Windows 3.1 and Win95 did not come as standard with full internet connetion capabilities. But the main product these days for Trumpet Software is PetrOS, a 32-bit Operating System, which has the goal to be compatible by all means with Microsoft Windows. We are interviewing the main architect behind the project, Peter Tattam, who talks in depth about PetrOS, and also we feature a world exclusive first screenshot of the PetrOS GUI, a GUI which is still under heavy development.1. What is the goal of PetrOS? Is it destined for the embedded market, desktop market or pure research?

Peter Tattam: Mainly heading for the desktop market. Despite the general pessimism in the open source community towards targeting the desktop market, the overwhelming response I get from many windows users is that they wished they had something better without having to pay big big bucks. Occasionally in history one needs a better “wheel”. We’re well aware of the dominance by the key player in this market – we just want to coexist, not supplant.

It’s also a good candidate for the embedded market because it boots quickly (less than 5 seconds to bring up the test GUI from the time the bios hands over to the boot loader) and it has a small footprint ( runs in < 4 meg). it might be ok if they a i386 based, but we don't have anyhting for ARM or the other processors in that market. Also the market is crowded there with many players trying to make their mark, and they have a strong head start on us. Time will tell if we can do much there.

I’m also targetting servers since we’ve put a lot of time into remote management functionality. It’s kind of cool to be able to deploy a win32 based server that doesn’t need a lot of resources and which you can telnet into and
manage remotely – we plan to extend that to remote GUI functionalty too. Also keeping the kernel footprint small offers performance benefits since you can likely squeeze a large chunk of the kernel working set into L2 cache. For a server doing an ASP, low kernel overhead will likely be important.

At a suitable time in the future, we will use the platform for research into clustering, remote access, ASPing and maybe AI. I keep a close eye on 64 bit processor developments and would like to bring out a x86-64 version of PetrOS as soon as is practical.

2. One of the features found on PetrOS is compatibility with the WindowsNT drivers API. Tell us about the achievements so far.

Peter Tattam: I would have to correct the question here. We are maintaining Win32 compatibility, but not Windows NT driver compatibility. This means we are attempting to be compatible at the Windows application layer. We have much of kernel32.dll implemented. Maintaining WinNT driver compatibilty could place undue restrictions on kernel design which we want to avoid. One issue that all OS developers face though is getting enough drivers for their OS. It has been suggested that we could gain something by having a driver compatibilty layer with NT drivers. I’m not sure but it’s something for us to consider.

Click for a larger version

3. What kind of GUI PetrOS has? Is there a research going on for a different kind of GUI, or it will be a “traditional” kind of GUI where users may found their way around easier?

Peter Tattam: Very much a work in progress. Because of the market we are targetting, a traditional desktop is what will be expected so that’s our priority. However we are open to alternative GUIs and desktops. As an example of alternatives, I was able to bring up the Qube desktop using PetrOS’ DOS compatibilty – this using direct VESA emulated functionality and running over PetrOS’ DPMI service.

To aid developers who might want to develop a GUI in parallel with our own, I plan to release a DLL and API in the next release (end of Sept) to allow third parties access to a VESA based virtual graphics plane. The mouse, keyboard and other regular stuff will be visible either through kernel32.dll or other private PetrOS API’s. This should be enough for some of the experimental GUIs to be ported to PetrOS – something we don’t have time to do.

4. What is the current roadmap and schedule? What plans are there for filesystem addons and maybe a posix layer?

Peter Tattam: Our current schedule is to have a usable Win32 GUI working by the end of the year.

We already currently do FAT12, FAT16 and FAT32 drives using IDE, and have two installable file system drivers written, one for SMB to any TCP based SMB file server, and the other a very lightweight FS protocol I’ve dubbed “PNFS” which I hacked together for development reasons. I use the latter for development by running a Win32 based server on any windows machine close by & I have a small dos TSR which does a regular dos fs redirector in addition to the native PetrOS driver. I’ve done preliminary work on NTFS & could have a read-only driver ready within a month. An ATAPI driver is under construction and that will be used as a basis for reading CD’s.

A posix layer is something which is very low priority. Doing so would risk PetrOS being seen as yet another Unix which we are really wanting to avoid. However another parallel stream is for us to get CYGWIN running over PetrOS
which would provide at least some kind of posix interface. I’m certain that once enough of the Win32 API is done, CYCWIN will run and provide that level of functionality.

I might add that a GUI doesn’t make an OS, it’s what’s under it that counts, and that’s where we’ve been concentrating our efforts. If we get the lower layers right the end user’s experience of computing should be much better. I’d like to think that BSODs would be a thing of the past.

5. Will PetrOS be able to run Windows binaries unmodified or a compilation and maybe a “light” porting is required?

Peter Tattam: Windows binary compatibility for Win32 is a primary goal. We are being practical here – we’re not trying to reinvent the wheel – there’s thousands of users out there who wished they had a choice but they don’t. I don’t need to infer much more than that 🙂 The reality is that it’s no point us writing a brand new API & hoping everyone will switch to it – it aint gonna happen. Sticking with the PE file format which Win32 uses still allows us the ability to write alternative smaller APIs than Win32 and there may be a market for that kind of thing still. Other native EXE file formats could be supported by add-ons. PetrOS has been designed with that in mind.

6. What the plans are for self hosting development tools?

Peter Tattam: If we’re successful with win32 compatibility, a wide range of development tools would come on line quickly as a result. I can currently run the Delphi 3.0 command line compiler and many other CLI Borland development tools directly in PetrOS so we are a fair way there already. I can even run Borland’s BP 7.0 under PetrOS DOS compatibility. Much of PetrOS is done with our in-house object Pascal compiler, and we will release these tools as standard with the OS at a later date. We need to use our own compiler as there aren’t many tools
that allow an object oriented approach to interfacing drivers to the kernel (especially in Object Pascal :).

7. Are there plans to add a web browser on PetrOS?

Peter Tattam: Of course, but we need to do the GUI first. There are a few Delphi based HTTP controls that might form a basis for this and we’ve done a bit of testing already to see what’s required. Ideally we could eventually run Netscape, IE or Opera natively from PetrOS, but programs of this size may not fit into one of our goals of having rapid starting system. There’s a chance that we might make the desktop the browser if practical.

The fundamental design concept behind PetrOS is that “small is beautiful”. A browser to match that philosophy is what we’d be working towards.


  1. 2001-09-10 12:54 pm
  2. 2001-09-10 1:01 pm
  3. 2001-09-10 1:13 pm
  4. 2001-09-10 1:30 pm
  5. 2001-09-10 2:00 pm
  6. 2001-09-10 2:34 pm
  7. 2001-09-10 2:40 pm
  8. 2001-09-10 2:59 pm
  9. 2001-09-10 3:35 pm
  10. 2001-09-10 4:09 pm
  11. 2001-09-10 4:18 pm
  12. 2001-09-10 4:20 pm
  13. 2001-09-10 4:34 pm
  14. 2001-09-10 6:25 pm
  15. 2001-09-10 7:38 pm
  16. 2001-09-10 8:47 pm
  17. 2001-09-10 8:56 pm
  18. 2001-09-10 10:20 pm
  19. 2001-09-10 11:37 pm
  20. 2001-09-11 1:42 am
  21. 2001-09-11 1:56 am
  22. 2001-09-11 2:27 am
  23. 2001-09-11 3:40 am
  24. 2001-09-11 4:59 am
  25. 2001-09-11 10:23 am
  26. 2001-09-11 2:51 pm
  27. 2001-09-11 6:25 pm
  28. 2001-09-11 10:52 pm
  29. 2001-09-15 7:59 am
  30. 2001-11-09 5:20 pm