- 디지털 이미지 편집의 대표 도구가 된 Photoshop은 1987년 개인용 프로그램에서 출발해, Adobe 배포를 거쳐 1990년 상용 제품으로 자리 잡음
- Computer History Museum은 Adobe Systems Inc. 허가로 Photoshop 1.0.1 소스 코드를 비상업적 용도로 공개함
- 공개된 코드는 179개 파일, 약 128,000줄 규모이며 Pascal과 68000 어셈블리어가 대부분을 차지함
- Apple에서 라이선스한 MacApp 애플리케이션 라이브러리는 공개 대상에서 제외되며, 재배포와 상업적 사용에도 제한이 있음
- Grady Booch는 초기 코드에서 잘 구조화된 설계와 현대 Photoshop으로 이어지는 기본 구조를 볼 수 있다고 평가함
Photoshop의 시작과 상용화
- Thomas Knoll은 University of Michigan에서 컴퓨터 비전을 연구하던 박사과정 학생으로, 1987년에 디지털 이미지를 표시하고 수정하는 프로그램을 작성함
- Industrial Light & Magic에서 일하던 John Knoll은 이 프로그램이 사진 편집에 유용하다고 봤지만, 처음부터 제품으로 만들 의도는 없었음
- 처음 이름은 Display였고, 기능이 점차 정교해지면서 1988년 여름에는 상용 제품이 될 수 있다고 판단함
- 두 형제는 이름을 Photoshop으로 바꿨고, 슬라이드 스캐너 제조사 Barneyscan은 버전 0.87 약 200개를 Barneyscan XP라는 이름으로 번들 제공함
Adobe와 Photoshop 1.0 출시
- Adobe는 아트 디렉터 Russell Brown의 권유를 받아 Photoshop의 향상된 버전을 배포할 라이선스를 구매하기로 결정함
- 계약은 1989년 4월 완료됐고, Photoshop 1.0은 1990년 초부터 출하됨
- 이후 10년 동안 Photoshop은 300만 개 이상 판매됨
- “Photoshop”은 Merriam-Webster 온라인 사전에서 Photoshop 또는 다른 이미지 편집 소프트웨어로 디지털 이미지를 변경한다는 동사로 쓰일 만큼 널리 퍼짐
공개된 Photoshop 1.0.1 소스 코드
- Computer History Museum은 Adobe Systems Inc. 허가를 받아 1990년 버전 Photoshop 1.0.1 소스 코드를 비상업적 용도로 공개함
- 대부분의 코드가 포함됐지만, Apple에서 라이선스한 MacApp 애플리케이션 라이브러리는 제외됨
- 압축 폴더에는 179개 파일이 있으며, 약 128,000줄의 코드로 구성됨
- 약 75% 는 Pascal
- 약 15% 는 Motorola 68000 어셈블리어
- 나머지는 여러 종류의 데이터
- 초기 Photoshop은 Apple Macintosh용으로 주로 Pascal로 작성됐고, 실행 효율이 중요한 부분에는 Motorola 68000용 기계어가 사용됨
- Thomas Knoll은 버전 1에서는 자신이 유일한 엔지니어였고, 버전 2에서는 엔지니어가 두 명이었다고 밝힘
- Thomas는 기본 애플리케이션 프로그램을 맡았고, John은 여러 이미지 처리 플러그인을 작성함
다운로드와 라이선스 조건
- 코드를 다운로드하려면 라이선스 조건에 동의해야 함
- 라이선스는 비상업적 사용만 허용하며, 웹의 다른 곳에 복사본을 게시해 제3자에게 다시 라이선스할 권리는 제공하지 않음
- 관련 자료:
Grady Booch가 본 코드 구조
- Grady Booch는 Photoshop 1.0 소스 코드를 열어보는 경험을 투탕카멘의 무덤을 처음 연 Howard Carter에 비유함
- 코드는 인터페이스와 추상화가 일관되게 분리된 매우 잘 구조화된 시스템으로 평가됨
- 각 인터페이스와 구현 조합마다 대체로 하나의 주요 타입이 있으며, 추상화를 컴포넌트화한 설계 결정을 따라가기 쉬움
- 일관된 이름, 적절히 나뉜 메서드, 단순한 구현 덕분에 시스템 구조를 파악하기 쉬운 편임
- Photoshop 1.0에는 현대 구현에도 더 발전된 형태로 남아 있는 기본 구조가 보임
- 타일과 필터가 대표적인 구조로 언급됨
- 디스플레이 버퍼나 주 메모리보다 훨씬 큰 이미지를 다루기 위한 가상 메모리 추상화가 포함됨
- Photoshop 1.0은 10만 줄을 조금 넘는 규모였지만, 현대 버전은 1,000만 줄 이상임
- 당시와 현재 모두 많은 코드는 입출력과 Photoshop이 처리해야 하는 다양한 파일 형식에 관련됨
- 버전 1.0 소스 코드에는 주석이 거의 없고, 대부분은 어셈블리어 조각에 붙어 있음
- Booch는 코드가 읽기 쉬워 주석 부족이 문제가 아니며, 주석이 오히려 방해가 됐을 수도 있다고 봄
- 코드 안에는 당시의 흔적도 남아 있음
- Andy Herzfield의 Thunderscan 스캐너 소프트웨어 처리 코드
- 초기 TARGA 래스터 그래픽 파일 형식 지원
- Barneyscan에 대한 일부 참조
Photoshop 1.0의 기능과 한계
- 초기 Photoshop 화면에는 사용할 수 있는 도구들이 표시됨
- 브러시는 색상뿐 아니라 크기와 텍스처도 선택할 수 있었음
- 정교한 선택 도구와 다양한 이미지 필터가 제공됨
- 중요한 누락 기능 중 하나는 이미지를 여러 레이어로 나누는 기능이었고, 이 기능은 1994년 버전 3에서 추가됨
- 환경설정 페이지에서는 일부 기능을 사용자화할 수 있었음
- 글꼴, 글꼴 크기, 글꼴 스타일 선택지는 제한적이었음
- 텍스트는 대화상자에 입력한 뒤 이미지 안으로 옮기는 방식이었음