
Compiling a Mac OS 8 Application on MacOS Sierra - ingve
https://www.cocoawithlove.com/blog/porting-from-macos8-to-sierra.html
======
unwiredben
Having been at Metrowerks during the launch of Project Builder, I can say that
it wasn't just Motorola bungling things. Apple poached a lot of MW's talent
and was trying to build a CodeWarrior-killer. They hated being reliant on an
external company to make the best dev tools for their platform and actively
worked to make CodeWarrior irrelevant. Motorola's interest in the tools was
both for Mac support (as long as they used 68K and PPCs) but also to improve
their embedded toolchains, and once they saw that desktop market dry up, all
efforts were moved into the embedded space.

~~~
mmarks
Hey ben, those were fun days! For others, Metrowerks hit the wall that many
Mac developers hit and continue to hit. The Mac market size simply isn't big
enough for a 3rd party developer, so they tried other platforms. As Metrowerks
tried many embedded markets, the Mac product suffered. Also, since only
Metrowerks had a PowerPC compiler, Apple was very dependent on Metrowerks
while Metrowerks was heading towards Chapter 11. The tension between the execs
(give me more money/support or else) created a 'complicated' relationship.

Motorola rescued Metrowerks from the brink of Chapter 11 with the
Apple/Metrowerks relationship already tense. Motorola also gave many long-time
employees an excuse to leave (pre dotcom crash). PalmOS took so many people
that lawyers were involved at the HR level between Motorola/PalmOS

~~~
yuhong
BTW, Metrowerks was originally founded as "Metropolis Computer Networks" by
Greg Galanos in 1985.

------
mrpippy
Fun fact: the US Social Security Administration _still_ maintains and
distributes a Mac PowerPlant app, built with CodeWarrior as a PPC binary
(which of course doesn't work on 10.7+)!

[https://www.ssa.gov/OACT/anypia/anypia.html](https://www.ssa.gov/OACT/anypia/anypia.html)

I ported it to Xcode, keep the code on GitHub, and maintain an Intel build.
Haven't been able to get the attention of anyone at the SSA though.

[http://bslabs.net/2015/07/18/porting-anypia-to-
xcodeintel/](http://bslabs.net/2015/07/18/porting-anypia-to-xcodeintel/)

~~~
ayuvar
Looks like your screenshot links got broken in the second part of your series
(maybe since they're TIFF they won't display inline on Windows Chrome?). I'd
love to read the rest of the series when you write it, as well!

~~~
mrpippy
Thanks for the tip, 10.4 takes screenshots as TIFF (unless you use Grab.app)
and didn't realize Chrome won't show them. Unfortunately I don't think I'll
finish out the series with quite that many separate posts, but I want to do at
least one more to finish it out and get the screenshots up.

------
swerner
That was a fun read. Just until recently, I also worked on a code base that
originated in Think C/68k, albeit in the order of several hundred thousand
lines of code. It was quite the effort when I had to take it through Apple's
transitions, porting it to OS X/Carbon/Codewarrior, then to Xcode/gcc/UTF-8,
then to Intel, finally lifting the whole thing to Cocoa/64 bit/clang. We even
had prototypes on iOS.

The Windows version remained largely unchanged despite being ported to Unicode
and 64 bits. Microsoft is doing a crazy good job at keeping APIs alive.

------
mmjaa
I remember those days, thinking to myself "why would anyone actually choose to
use this junk of an OS, let alone actually develop for it", because: Think
C/Metrowerks Codewarrior.

But now I sit here wrestling with merging Storyboards in Xcode and casting a
green eye at my friends, doing React apps, in the background.

I sure do miss the simpler days, before all these great tools got in the way.
You know, coding for X and POSIX .. /ducks.

------
BugsJustFindMe
_The library computers all had Fetch (a disk-eating koala and FTP client_

I can't tell if that's meant to be a joke or if the guy had never seen a dog
before.

~~~
pionar
Considering that later in the same sentence, he says, "Mosaic (a program
written at the Andreessen Center for Supercomputing Champagne", I'm going to
say dry humor.

------
minikites
This is a great story and it brought back a lot of classic Mac OS nostalgia
for me.

------
jstewartmobile
Metrowerks for Mac may be nostalgia. Metrowerks for PalmOS was like trying to
breed a duck with a platypus. I mean, they're both using Motorola 68K, so it
_should_ work...

~~~
unwiredben
I was the tech lead on CodeWarrior for Palm OS v7, v8, and v9... it was quite
a mishmash, and the Windows version was a really big hack on a hack. I ended
up rewriting the whole 68K toolchain and linker for the v9 version, but that
ended up making something that we couldn't economically justify porting back
to Mac OS (it was 2003, Macs weren't doing so well).

~~~
jstewartmobile
Since the Palm had a very screwy approach to memory in general, your team did
a fine job.

------
jason_slack
Great article. I have a Carbon/Powerplant app that I stopped developing that I
would live to get it working again. Perhaps this will help.

~~~
mrpippy
CodeWarrior is readily available from abandonware sites, and can be used
inside 10.5/10.6 on VMware Fusion if you don't have any PPC hardware around.
Older versions of Xcode (2.x) can then import CW projects, you can swap in
open-powerplant, and do an Intel build. Let me know if you want any
help/advice

~~~
jason_slack
This is actually what I was trying! Perhaps I can dump this all into a GitHub
repo and we could collaborate. E-Mail in my profile if you are interested.

------
woodruffw
You can still find Metrowerks macros and macro checks in parts of Darwin/XNU
(like the Mach-O loader). It's pretty interesting to see how the development
options of the time have shaped the kernel and userspace's code, even today.

------
krallja
I grew up on the opposite side of the Classic Mac learning-C++ camp. I had a
copy of MPW, and a trial version of CodeWarrior from some CD in the front of a
"...For Dummies" book I had checked out from the library. I was SO jealous of
the people who got to use the professional version of CodeWarrior! They were
obviously real programmers, and I was not, because my development environment
was free and theirs was not.

~~~
kalleboo
Although at the time the extent of my C programming didn't go past a couple of
XCMDs to make my HyperCard stacks more app-like, I had the same CodeWarrier
complex...

------
DoodleBuggy
Oh ResEdit, you were so much fun.

~~~
duskwuff
ResEdit was an _incredibly cool_ tool, with a surprisingly good (and
intuitive!) interface for what was clearly a developer tool. I started using
it to poke around in games when I was around 9 years old -- admittedly I
didn't understand everything I saw, but there was still a lot of interesting
stuff to see.

~~~
munificent
ResEdit was one of the things that got me hooked on programming because it was
(1) so accessible and (2) could be used on real executables.

A few months after discovering it, I had jammed little hand drawn icons onto
the menu items of damn near every application on my tiny hard drive. It was
awesome.

~~~
barclay
This, this, this!

I bet there's a whole slew of us who spent countless hours inspecting
everything, trying to take it all apart... that formed the developers we are
today.

------
bluedino
>> By 1998, Think C 5 was woefully outdated

In school back in 1997 we were using Think C 3 or 4 on Mac LC II's, talk about
a terrible environment for programming C

~~~
4ad
In Romania they are still using Borland C++ 3.1 for DOS, released in 1992 to
teach programming.

~~~
bluedino
StackOverflow has a lot of questions relating to bgi.h and conio.h, I wouldn't
be surprised if other countries are still using it as well

~~~
duskwuff
A lot of programming courses in India still use course materials which rely on
Turbo C++. It's really unfortunate -- means that students are learning "C++"
without access to the STL.

------
makomk
Fun fact: the concept of handles that this article talks about is almost
exactly the same as Windows 1.0's concept of handles. See for example
[https://blogs.msdn.microsoft.com/oldnewthing/20041104-00/?p=...](https://blogs.msdn.microsoft.com/oldnewthing/20041104-00/?p=37393)

