For Your Inspection: Source Code For Photoshop 1.0 176
gbooch writes "With the permission of Adobe Systems, the Computer History Museum has made available the source code for Photoshop version 1.0.1, comprising about 128,000 lines of code within 179 files, most of which is in Pascal, the remainder in 68000 assembly language. This the kind of code I aspire to write. The Computer History Museum has earlier made available the source code to MacPaint."
What's this weird hidden splash file in MacPaint? (Score:5, Funny)
I'll just compile and run it to see.
Well, it doesn't seem to show anythALL HAIL STEVE JOBS! STEVE JOBS IS MY MASTER!
Re: (Score:2, Interesting)
Re: (Score:1)
Re: (Score:2, Interesting)
Still Down (Score:1)
Their site has been toast since yesterday and now you turn the /. hose at it? Poor IT guys gonna have a bad day.
Re:Still Down (Score:5, Informative)
Re: (Score:3, Informative)
I found one 0day ... (Score:1)
... in this code.
No server available (Score:5, Funny)
503 Service Unavailable
No server is available to handle this request.
At least they still have servers available to tell us that they don't have servers available.
Re:No server available (Score:5, Funny)
Re: (Score:1)
Re: (Score:3)
Re: (Score:1)
Re: (Score:1)
Actually it's just one text file (Score:5, Funny)
Here, I'll post it here to save you time:
503 Service Unavailable
No server is available to handle this request.
Not sure what language that's in.
Re: (Score:3, Funny)
My vote would be 'English'...
Re: (Score:2)
Here, I'll post it here to save you time:
503 Service Unavailable
No server is available to handle this request.
Not sure what language that's in.
Have you checked for Whitespace [dur.ac.uk]
Re:Actually it's just one text file (Score:4, Interesting)
Your answer remind me the 404 not found painted on shop signs in Asia.
They weren't an intented joke, were they?
Re: (Score:3)
Those signs actualy read Translate server error [boingboing.net].
Anyway, this is off topic, but still so funny...
Re: (Score:3)
Cool story bro. (Score:1)
This the kind of story I aspire to write
What Functionality? (Score:2)
This is a cool piece of history, though I wonder how much real functionality was in the original 1.0 version. Were they doing CMYK back then? Anyway, I want to check it out, but I don't anticipate seeing many technical marvels.
Re: (Score:3, Informative)
http://en.wikipedia.org/wiki/Adobe_Photoshop_version_history [wikipedia.org]
Re: (Score:2)
Were they doing CMYK back then?
If so, maybe the GIMP team could, um, borrow the code?
Re: (Score:2)
I used it back in the day. Even though 2.0 and 2.5 and 3.0 were great improvements, 1.0 was still a lot like the Photoshop as we know it today.
when software was fast... (Score:2, Insightful)
...and good. I miss those times.
I miss stuff which opened instantly and worked quickly. Where a faster PC actually meant things getting done quicker, rather than an opportunity to shim in another layer of crapware designed by a 3rd party half way across the world to find its way into your ever-less-steady stack of shit.
Windows 95 on a PC from 2000 runs way faster than XP on a 2010 PC, and both are faster than Windows Vista/7/8 on a modern PC. Why don't people make that effort any more? It's not as if using
Re: (Score:2)
Speak for yourself. I'm using Windows 8 on a core 2 duo Dell (so not exactly cutting edge). I've upped the RAM to 8GB and put in a half decent SSD. Everything opens and runs nice and fast.
(no, not a shill, check my comment history)
Re: (Score:2, Insightful)
You miss the point. You shouldn't need 8GB of ram and an SSD just so a typical application can seem snappy. It is great that that such technology is available and affordable today, but that may not always be the case.
Having programed on computers with as little as 4k of ram, 8GB just seems insane. Nobody should need that unless they are running something like an enterprise database, doing atomic modeling of a nuclear explosion, or running an FPS that is more realistic than going outside and shooting people.
Re: (Score:2)
Having programed on computers with as little as 4k of ram, 8GB just seems insane. Nobody should need that unless they are running something like an enterprise database, doing atomic modeling of a nuclear explosion, or running an FPS that is more realistic than going outside and shooting people.
Well ignoring the fact that people do run database and do modelling of all sorts of things on PCS, just the last mentioned justifies the high hardware specifications on today's PCs.
Any games on a machine with 4k of RAM are going to be pretty much text only.
Re:when software was fast... (Score:4)
Any games on a machine with 4k of RAM are going to be pretty much text only.
Nonsense. The original NES only had 4K of RAM (2K of general purpose memory and 2K of video memory). The code itself, of course, was on cartridge ROMs (as was the tile data).
You can easily get a decent game to run with 4K of RAM if you have a tile-based raster graphics chip and are coding efficiently in 8-bit assembly language. Back in the 1980s it was done all the time.
Re: (Score:2)
Anything will run fast if you throw gobs of hardware at it.
Re: (Score:1)
There are a number of factors:
* Programmers are lazy. They don't give a damn about quality; they just push for tools to make _their_ jobs easier. Bloat? Not their problem.
* Corporations are lazy. If their software sucks, just throw more hardware at it. Somebody else's problem.
* Users are lazy. Long gone are the days that programmers and users greatly overlapped. And current users continue to be deluded that as their computers get older, they run slower. No, they don't. If they _appear_ to be r
Re: (Score:2)
Loading "Pirate Adventure" onto an Atari 800 from a cassette drive in 1980 was neither quick nor instantaneous. Plugging in the Star Raiders ROM, on the other hand, was.
Re: (Score:2)
I miss stuff which opened instantly and worked quickly. Where a faster PC actually meant things getting done quicker, rather than an opportunity to shim in another layer of crapware designed by a 3rd party half way across the world to find its way into your ever-less-steady stack of shit.
There are some positive trends found of today too. For example Win7 is more or less as smooth as XP. Win8 runs even a nudge faster. Web browsers are fighting for the crown of fastest JavaScript and rendering engine. Boot up times in all OSes have improved tremendously. For all the awesome things we get to do, the tradeoffs aren't that bad IMO. Also, the fact that we are pushing the boundaries of single CPU core performance, motivates to pay attention to performance issues.
Re: (Score:2)
Windows 95 on a PC from 2000 runs way faster than XP on a 2010 PC, and both are faster than Windows Vista/7/8 on a modern PC.
Windows 7 is actually faster than XP on most systems. The trend towards ever-increasing bloat peaked around the time of Vista, and ever since then, the increased concern with power efficiency and the rise of mobile devices has led to a rollback.
As for Windows 95, of course it runs faster; it's right on the bare metal and is written mostly in assembly. Remember, Windows 9x has no sec
Re: (Score:2)
Windows 95 was a quick and dirty hack? It has no security? It was needed due to limitations in hardware? You're an idiot.
Windows 95 was a monumental effort at the time. It included Plug and Play for the very first time, a feature which took literally years for the industry to develop. It had a substantially new UI, a completely new OS integral to Windows, it ran DOS apps in a virtual 86 environment, it was preemptive and had protected memory (although that was not new to Windows). Windows was the OPPO
Re: (Score:2)
Yeah, I had occasion to use machines w/ fairly similar hardware specs (internal-clock multiplied 25MHz bus CPUs) running Windows 95, Mac OS 7 and NeXTstep 3.1 --- only the NeXT Cube would be considered usable by today's standards (and if it were still running, I'd still be using WriteNow to draft written correspondence and poste.app to print envelopes).
I really wish Apple had preserved more of NeXTstep in Mac OS X, or that there were easily accessible options to strip down the features to a parity w/ OPENST
Re: (Score:2)
The 98 machine boots almost instantly and opening windows are instant
If you run it on a 2012 machine, you're probably right. It didn't on the hardware around at the time.
Re: (Score:2)
And that's the point. Opening a window today is no more complex a task than opening a window 15 years ago.
Fifteen years ago your app didn't pull in three hundred multi-megabyte DLLs, and require managed code to be compiled to host code before it could display a window. The faster hardware becomes, the less people bother optimising.
Re: (Score:2)
Re: (Score:2, Insightful)
Re: (Score:2)
There are a couple of reasons. The first is that programmers value code correctness, maintainability, and ease of development over performance. They are taught not to optimize for speed unless a bottleneck has been determined by actual measurements.
It's the end users who value performance, not the developers. Programmers code to please their bosses, and concerns of the end user rarely make it back to the actual developers. Therefore performance issues often don't have any impact on the resulting code.
slashdotted ! (Score:1)
by geeks around the world who think $700+ is a bit much for the latest version when they can hack on 1.0's source code for free.
Licensing issues? (Score:2)
Does this put the source code into the public domain - and thus now might it be possible to port it to other architectures?
Re: (Score:2)
I googled around and could not find any ports of MacPaint (the earlier source code release).
Has anybody attempted it?
Re: (Score:2)
Doubtful, unless they wanted to get sued for copyright infringement for violating the source code license. Since its license also is:
Source code in the Museum Collection
Note: This material is Copyright ©1984 Apple Inc. and is made available only for non-commercial use.
Neither of the source code is under a license that allows distributing it or a derivative.
Re: (Score:2)
Of course it doesn't. Adobe has not relinquished their rights to it.
Re: (Score:2)
To add. Here is the copyright statement in the source files:
{Photoshop version 1.0.1, file: About.r
Computer History Museum, www.computerhistory.org
This material is (C)Copyright 1990 Adobe Systems Inc.
It may not be distributed to third parties.
It is licensed for non-commercial use according to
www.computerhistory.org/softwarelicense/photoshop/ }
And from the linked license:
1. Grant of License. Conditioned upon your compliance with the terms and conditions of this Agreement, the Museum grants you a non-exclusive and non-transferable license for a single user, solely for your individual, personal and non-commercial purposes, (a) to load and install the Software; (b) to compile, modify and create modifications or enhancements of the Software or any of its components (“Derivative Works”); and (c) to run the Software or Derivative Works on simulators or hardware. The Museum and its licensors reserve all rights in the Software not expressly granted to you in this Agreement.
2. Restrictions. Except as expressly specified in this Agreement, you may not: (a) transfer, sublicense, lease, lend, rent or otherwise distribute the Software or Derivative Works to any third party; or (b) make the functionality of the Software or Derivative Works available to multiple users through any means, including, but not limited to, by uploading the Software to a network or file-sharing service or through any hosting, application services provider, service bureau, software-as-a-service (SaaS) or any other type of services. You acknowledge and agree that portions of the Software, including, but not limited to, the source code and the specific design and structure of individual modules or programs, constitute or contain trade secrets of Museum and its licensors.
3. Ownership. The copy of the Software is licensed, not sold. The Museum and its licensors retain ownership of the copy of the Software itself, including all intellectual property rights therein. The Software is protected by United States copyright law and international treaties. You will not delete or in any manner alter the copyright, trademark, confidentiality and other proprietary rights notices or markings or limited or restricted rights legends appearing on the Software as delivered to you.
The only thing you're allowed to do is view and modify it for your own personal use. You cannot distribute the software or derivative works based on it.
Re: (Score:2)
Gimp (Score:5, Funny)
Hopefully the Gimp folks can make some use of this.
Re:Gimp (Score:5, Funny)
unless there is a clear licence allowing them to use the code, they would probably be wise not to look at it at all.
Re: (Score:2)
I'm pretty sure they were making a joke.
Re: (Score:3, Funny)
I'm pretty sure they were making a joke.
After using the Gimp, it's difficult to dispute this.
Re:Gimp (Score:4, Informative)
Hopefully the Gimp folks can make some use of this.
Certainly, because GIMP won't be a success until it natively supports CMYK like photoshop.
[ for the impaired, GIMP does and this version of photoshop does not, and noone outside the print industry gives a damn ]
Re: (Score:2)
[ for the impaired, GIMP does and this version of photoshop does not, and noone outside the print industry gives a damn ]
From the GIMP FAQ:
When can we see native CMYK support?
It is clear from the product vision that GIMP eventually needs to support CMYK, but it is impossible to say when someone finds the free time and motivation to add it. In the meantime it is possible to work with CMYK to some extent using plug-ins, such as the Separate+ plug-in.
Re: (Score:2)
[ for the impaired, GIMP does and this version of photoshop does not, and noone outside the print industry gives a damn ]
You're partially right. I'm part of a genetic research group, and I've had to work with people that need to make CMYK materials to send to publishers because apparently the print industry they work with requests it so the publisher demands it from us. So there is a trickle down effect in some cases. The print industry itself may not be large enough to give CMYK attention, but when you consider all the clients they have...
Re: (Score:3)
The print industry itself may not be large enough to give CMYK attention, but when you consider all the clients they have...
And yet nobody has cared enough in the past decade to hire a few developers to add CMYK support. When the motion picture industry wanted more out of GIMP they hired the programmers to get it done (and they forked as well, but that was a matter of governance).
Re: (Score:2)
That's because they all just bought Photoshop and got their work done.
Re: (Score:2)
noone outside the print industry gives a damn
Another way of putting it is that "no one outside professionals who want to actually publish their work gives a damn."
You can pretend that everything is just published on the internet and printing is just something old people do all you like, it is simply not the case yet.
Re: (Score:2, Informative)
You can pretend that everything is just published on the internet and printing is just something old people do all you like, it is simply not the case yet.
No, I actually stand by my claim.
Only the people at the high end of the print and design industry actually care about things like colour matching and quality.
There are huge swaths of businesses who print stuff who apparently just do not care one bit. Just look around at all the random signage and posters printed for anything that's not a huge advertising
Re: (Score:2)
Re:Gimp (Score:4, Informative)
Professionals in print production and publishing aren't using CMYK these days. Modern print-production workflows use RGB images (as they have a wider gamut thant CMYK) and use ICC profiles to convert to CMYK at the time it's printed. This way, when the colours are separated, they're done with the intent of the device that will actually be printing the output, not with some generic RGB to CMYK conversion in Photoshop.
If you are working with CMYK images on your computer, you have made decisions about UCR and GCR and ink density that are at best educated guesses as you often have no idea what equipment will be printing your output. Once you've separated it to CMYK, if you need to print it on a different device that has different characteristics, you're in trouble.
Now, whether or not GIMP is a suitable substitute for Photoshop is another argument altogether, but these days it doesn't hinge on CMYK support.
Re: (Score:2)
It's amazing how many people don't get this. How many people convert to CMYK as they think that's the professional thing to do, and they just use the canned profiles (or no profile at all as they don't trust all that ICC wizardry) in Photoshop. Fail. Then they wonder why the output looks crap...
Re: (Score:2)
Considering that for the first one or two decades of Photoshops existance, the print industry was the main purchaser of photoshop (or the design industry, which would then send finished files to the print industry), it's been a pretty important feature. OK, it wasn't there in version 1.0, but soon thereafter. Yes, now more and more design work is done for online audiences, but many companies do in fact blend their online and offline marketing pieces.
CMYK is an incredibly important feature; maybe slashdotter
How much of this is still in use? (Score:2)
Would Photoshop CS 6 (or wherever they are these days) still contain code from the 1.0 days?
Re:How much of this is still in use? (Score:5, Informative)
No. Photoshop was long ago rewritten into C++. That's not to say that some of the current code might not have some basis on the original code, but it's doubtful it's that much.
Re:How much of this is still in use? (Score:4, Informative)
Highly unlikely. Photoshop 1.0 was 1990 and it was an application. That's like expecting Windows 3.0 to be using the same code as Windows 8 - sure there might be some similarity but most of Windows 3.0 and its features don't even exist in Windows any more (and haven't for many, many years).
With an application, it's also much easier to just rewrite every version - the only "compatibility" you have to worry about is that you can read the old files generated by the program (writing new file formats is common practice, but you need to be able to read the previous ones back in even if just for a one-time conversion). Think the very first Word for Windows versus Word 2013 / 365. The program itself doesn't even open files that old any more (compatibility only goes back to Word 97/2000 at best nowadays), so the likelihood of any code being more than vaguely similar is almost zero.
Plus, given that the original is in Pascal and 68k assembler, the chance is basically zero. At the point that it had to be rewritten for newer languages / platforms (even if they ran 68k code, it's unlikely to be perfectly compatible), the old code would be ditched and used - at best - as a reference to how the program used to work.
Code evolves or dies. This code-drop is pretty ancient in computing terms and won't be of any practical use any more - like when they released the original Prince of Persia source in assembler. At best, you could use it as a reference to make a pixel-for-pixel identical version by rewriting it in a sensible language and making sure it is equivalent to the old code, but that's about the only use of it.
Have a look here:
http://creativebits.org/the_first_version_of_photoshop [creativebits.org]
You could just about put some text into it. It's like looking at the source code to Word for DOS 5 and saying "Is this any good to anyone?" No. Not really. Maybe 20 years ago, but now it's so obsolete we don't even use the program itself, let alone the code that makes it, and haven't for 15 years.
Re: (Score:1)
With an application, it's also much easier to just rewrite every version
You're joking right? Rewriting something as complex as Photoshop with every single version? Photoshop that has 10s of millions of lines of code. HAHAHAHAHAHAHA. I nominate this for the "Most Idiotic Post of the Week".
Re: (Score:2)
The code is not going to be rewritten every version, but it certainly can change faster than OS code.
Re: (Score:2)
And this one has 128,000 lines code, as titled in the article summary.
I have that in an incomplete game that's basically just an pretty isometric sprite blitter at the moment. Given 128,000 lines of PASCAL and assembler, I think my first task WOULD be to rewrite them in something decent and more suited to the task. The time you save would overcome any conversion time.
And the fact is that by version 3, they HAD rewritten the application entirely - in a completely different language.
Re: (Score:3)
You could just about put some text into it. It's like looking at the source code to Word for DOS 5 and saying "Is this any good to anyone?" No. Not really. Maybe 20 years ago, but now it's so obsolete we don't even use the program itself, let alone the code that makes it, and haven't for 15 years.
But wouldn't it be educational for someone who was going to write a word processor to see what you could achieve with 640K RAM and 720K floppy disk storage limits?
Re: (Score:2)
Besides the fact that every consumer windows starting with XP is based upon the NT kernel, with the consumery stuff rewritten and layered on top.
The win 1 -> 3.11 -> 95 -> 98 -> ME line was retired, thankfully, after ME.
Run in emulator (Score:5, Funny)
Has anybody run it in a 68k Mac emulator? It would be interesting to see a performance comparison between modern PhotoShop running natively and version 1 running on an emulator.
Re: (Score:3, Informative)
Re: (Score:2, Informative)
By the way, the included makefile has unresolved dependencies and you would need to write a new makefile for it.
Re: (Score:2)
You can still get the MacApp framework with MPW from Apple. I've also still got a copy somewhere on my DVD archive of old ADC floppies.
Re: (Score:2)
I suspect it won't be too long before someone figures out how to build it, and posts instructions.
Homepage Paging URL? (Score:2)
Now it has changed to ?page=1, where 1 means "1 page back from the most recent set of articles". So if I go back a page, then come back later and refresh-- I get a completely different set of articles-- somew
Build it? (Score:2)
Re: (Score:2)
I have one too, and was wondering the same thing (just dusted off my Powerbook 540c last night. Now I need to find the powerbrick.)
I remember that... (Score:2)
Ran that sucker on a MacII with 8bit color at SVA's computer lab when it was on the East side 21st street...
Bruce Wands and Burt Monroy were both very excited about this product as it was much more powerful than "Digital Darkroom".
Photoshop history lesson (Score:3)
Note that Photoshop 1.0 was a one-man app...and Knoll still works on Lightroom.
People today don't realize how mind-blowing Photoshop was back in the day. Nobody in real life did image editing - it was all airbrushing, paste-up, etc.
Anyway, good reading:
http://www.theverge.com/2013/2/13/3959868/photoshop-is-a-city-for-everyone-how-adobe-endlessly-rebuilds-its [theverge.com]
YouTube (Score:2)
Don't let Michael Hardy get it (Score:2)
Source code on the internet? Not safe from Michael Hardy.
http://youfailit.net/?p=49 [youfailit.net]
http://better-explorer.com/blog/a-word-about-michael-hardy-copycat/ [better-explorer.com]
This person likes to take peoples source code, recompile it with minimal changes (usually just taking the author out and putting in his name) and then sell it.
Recently hit the Apple II scene trying to pass off Byte Magazines Solitare Game as his own, asking how to make copyright materials then wanting the person who wrong Lemmings for the Apple IIGS to unprot
Re: (Score:2)
Source code on the internet? Not safe from Michael Hardy.
http://youfailit.net/?p=49 [youfailit.net]
http://better-explorer.com/blog/a-word-about-michael-hardy-copycat/ [better-explorer.com]
This person likes to take peoples source code, recompile it with minimal changes (usually just taking the author out and putting in his name) and then sell it.
Recently hit the Apple II scene trying to pass off Byte Magazines Solitare Game as his own, asking how to make copyright materials then wanting the person who wrong Lemmings for the Apple IIGS to unprotect it for him. lol.
Anyways, great reading about a loser who profits via others work. But a source code thief and will find Michael Hardy's Photoshopped Photoshop 1.0 coming out soon!
fuck, I can't type to save my life.
he ask how to make copyright symbol, not materials. doh!
Re:Pascal ? (Score:5, Informative)
Re: (Score:1)
PS 1 is from 1990 and was only available for Mac OS.
Re: (Score:2)
Re: (Score:2)
Re: (Score:3)
Turbo Pascal rocked. Ignoring all the "it's pascal so it must suck" idiocy being posted, Turbo Pascal changed PC programming. The only compilers besides MASM were too expensive for a college student to touch and slower than Christmas to compile, but TP was $99 and screaming fast. I got a copy and that started a 25 year career in programming, almost exclusively using Borland products and building just about everything you can imagine with them. I get it that Photoshop was first written to run on Apple, b
Re: (Score:2)
As long as that serious work fit into tiny memory model. Turbo Pascal didn't support anything else. Turbo Pascal was a toy for people learning to program, serious work was done in Lattice C, and later in MSC (which originally was Lattice C).
Of course, by 1990 PCs were flooded with affordable compilers and Turbo Pascal was gone.
Re:Pascal ? (Score:5, Informative)
Photoshop 1 was only available on a Mac. I remember receiving the first "public beta" (Photoshop 0.9) some time in 1990 or so and it was awesome - jawdroppping awesome...
In any case, you would use MPW (Macintosh Programmer's Workshop) those days, which I think is still one of the best team-development tools. And the language-of-choice (well, in fact, nearly the only choice) for developing on a Mac at those days was Pascal + Assembler.
So, it makes sense that this code is Pascal.
Re: (Score:3)
Shouldn't be too much of a stretch since this [wikipedia.org] was written using Free Pascal.
Re:Pascal ? (Score:4, Informative)
Actually it's pretty close (UCSD dialect) until you get to the OBJECT keyword. Apple made full use of their Memory Manager for Object Pascal, which had a linear address space and supported relocatable objects, while Borland had a horrible memory allocator and was stuck with the 80x86 real-mode memory model and 640k limit. So they implemented "Object Pascal" as some kind of horrible C++ish hack. It was really and truly awful compared to the Object Pascal that Apple had already produced, though I hear they filed down some of the worst warts by the time of Delphi.
Oddly, this code didn't make use of the Pascal UNIT system for its own code, instead using multiple levels of include files, with the main code for a unit in "foo.inc1.p". This was probably done to make it work well with makefiles. Back in the day it took long enough to compile that you really didn't want to re-compile anything you didn't have to, and if you did things the "proper" way, code and headers would be in the same file, causing a lot of unnecessary recompilation.
Re: (Score:2)
Re: (Score:2)
Was this a college CS assignment? I wonder who made the choice to use Pascal.
plenty of stuff from around that time was written in pascal + asm.
Re: (Score:2)
Re: (Score:2)
If its either, de-install Visual Studio please.
Non sequitur much?
Re:Aspirations (Score:4, Insightful)
Re:Aspirations (Score:4, Funny)
Yeah, C++, C#, VB.NET and F# are ALL dying languages. Fucking moron.
F# ? I agree it's not dying, but only because it never lived.