home
Product
Helix 6.0 Status Update: Dec 4, 2004

The code for the uninitialized floppy disk

...and other stories on the road to Helix 6

4 December 2004--Ten years ago, Microsoft was furiously working away trying to turn its clunky Windows 3.1 into Windows '95. Those of us old enough to remember that time in Helix's life might also recall that when they finally shipped Windows '95, people were actually waiting in big city streets, some camped out overnight, to be first in line when the doors opened the next morning.

Ten years ago, someone involved with Helix's code should have put their foot down and decreed that Helix had to get moving on getting ready to run in Windows, but at that time, Helix was still pretty far behind getting ready to run in PowerPC.

Of course, Helix did eventually make it to PowerPC and the world did not come to an end. But the rest of the world did move on into Windows and Helix didn't. Some followers believe that the owners of Helix at that time were so motivated by a quick money fix that they couldn't see the forest for the trees. It was clearly easier to come out with new feature releases than it was to bite the bullet and begin the tedious task of moving Helix's code base into the future.

But before we who are not without sin cast any stones, let us take a moment to remark on what a monumentally daunting task that was--and still is, lest we judge our forebears too harshly.

Every day we make progress toward our goal of seeing Helix running in OS X, but we also curse (under our breath) those who forced us to wait so long. Every time we hear another Helix user tell us that their sky is starting to fall, that Helix 6 just isn't coming fast enough to let them remain Helix users, our curse gets a bit louder, a bit more bitter. All the progress in the world doesn't change the fact that we're still not there...but we are getting closer.

Caught in a blinding blizzard

One of the battles we just fought--and finally won--had us trying to pin down a bug in Helix's networking code that just seemed to refuse to let itself be pinned.

Late one night, when we thought we'd finally nailed it and realized we hadn't, someone said that what we were doing was like wearing blindfolds and swinging brooms in a darkened room in an attempt to kill a bat. Not quite spinning our wheels, since the bat was at least in the room with us and there was at least the chance that someone might hit it, disable it and allow us to finally see it.

Trying to give a definitive answer to the question of when we'll finally ship an OS X product is a bit like trying to say what time you're going to get home when you're fighting a blizzard. Sometimes all you can really do is keep shoveling and hope for the best.

In spite of your best efforts, you might find yourself suddenly confronted with a giant snow drift you have to dig through. The snow is coming down so hard you can't even see it until you're up against it, and then there's really no way to gauge how high or how deep it is. You just have to get through it.

Such is the case with the code that manages the uninitialized floppy disk. Who still uses floppy disks? MFS? Does anybody even remember the "Macintosh File System" -- the one where there was no such thing as a true folder? Helix remembers (and can handle those old MFS disks, formatted or unformatted. Much credit (blame?) for this has to go to Apple: They did a pretty remarkable job of maintaining backwards compatibility from Mac OS 0.1 through 9.2.2. Routines that were written in the early 80s kept working. Until OS X, that is.

But now that old code has to go, along with dozens of other archaic bits of code. We can't have that stuff in Helix when it gets to OS X, yet there it is... the proverbial ten-foot snow drift in a blinding blizzard. The destination is clear, even if the time it is going to take to get there is not.

Server is still first

As noted before, delivering an OS X Helix Server is our first priority. The problems we encountered in making our new networking work may have made it appear that the entire Helix 6 project was going nowhere. While it certainly slowed us down much more than we wanted it to, work on the Helix Server has continued all along, and the next piece of it is beginning to enter the testing phase.

Bloatware and Shrinkwrap

With the networking we need for OS X finally in place, our attention is now focused on the next two steps along our critical path: Bloatware and Shrinkwrap.

When Helix was "resuscitated" back in 1998 by the programming team in Arizona, some of the work done on the Helix Utility effectively undid years of progress in the Helix diagnostics area. The visible manifestation of this was that the Helix Utility itself mushroomed in size from around 76K to more than 4 MBytes.

There came a point in the planning for OS X that we realized that this product needed to be trimmed back down to a manageable size if we were going to be able to get it to OS X. Another large, very tedious process had to get underway. This project came to be known in-house as "Shrinkwrap."

Around the same time...it was brought to our attention by several Helix users that their collections were getting close to 2 GBytes in size. Helix simply can't cope with that.

When Helix was first created, there were no hard disk drives for a Macintosh. The largest storage device available at the time was an 400 KB floppy disk. Even with this limitation, Helix's original engineers envisioned a day when this would change. So they designed a file structure capable of handling a collection in the neighborhood of 2 Gbytes, a file larger than anything anyone could imagine at the time. The fact that Apple also eventually had to grapple with the 2 GB file size limit (not until OS 9 was it fully addressed) is more coincidental than the casual observer would guess.

As it turned out, they also had the foresight to write this in such a way that it could be easily expanded. But that's where the quandry dug in its heels. The "easy" way to achieve this new, expanded file size would be to use Pascal, the language of Helix's oldest sections of code, as its building block. To the team, using more Pascal was anathema. Besides which, even after that work was done, 64 GBytes would still be "limited." We didn't like the idea of a limitation. Especially with Terabyte drives coming across the horizon.

So a logic similar to the one used in deciding that the old networking had to go was applied to this problem as well: if we're going to all this trouble to make Helix work in OS X and eventually in Windows and Linux, won't it seem a little ridiculous the apply all that effort and come out the other side with something that would have to be rewritten again in the near future?

One of the promises we made when we started this march to OS X is that we would not take the easy path to short term success at the expense of the long term goals. We could have "patched" it and shipped an OS X Helix sooner, and then thrown that work away when we moved on to the next phase. We opted to rewrite the code and eliminate the limit altogether. That code is now being made part of the essence of Helix. It's the OS X work that's being done right now as you read this update. In the process we have discovered new obstacles to overcome, and we expect there will be more, but we want to do this right, not just continue to put band-aids on code that engineers are already loathe to go near.

Evolution of a form

One of the few remaining unfinished pieces of the Helix 6 Server puzzle is a screen familiar to many users of Helix Client/Server, the Server Info screen. As is the policy on this page, we've got to show you a picture. This time, you get three.

First, there's the screen as it exists, submitted here for the benefit of those who may never have seen one.

When work first began on this form in Helix 6, it evolved into this:

It's a bit difficult to tell from this context that this screen would occupy a large portion of a large monitor (in fact the actual screenshot was "altered" in Photoshop® to fit on this page). It was clearly too big and the information did not seem organized efficiently. So, after a bit more evolution, it now looks like this:

It's finally starting to shape up.

Hopefully, this gives you an inkling of how the process works. Each bit evolves to its final form. The screen you see above may bear a resemblance to how it will look when you finally get your copy of Helix 6 Server, and it may not. The only thing inevitable in this process is change.

More to come...