GN⁺: 2013년 Adobe Photoshop 소스 코드
(computerhistory.org)Adobe Photoshop 소스 코드
소프트웨어 보석: 컴퓨터 역사 박물관의 역사적 소스 코드 시리즈
- 포토샵: 디지털 이미지를 포토샵 소프트웨어나 다른 이미지 편집 소프트웨어로 변경하는 것, 특히 현실을 왜곡하는 방식으로 변경하는 것을 의미함 (출처: 메리엄-웹스터 온라인 사전, 2012년)
포토샵의 탄생
- 1980년대 후반, 토마스 놀과 존 놀 형제가 이미지 편집 프로그램을 설계하고 작성하기 시작함
- 토마스 놀은 미시간 대학교에서 컴퓨터 비전 박사 과정 학생으로, 1987년에 디지털 이미지를 표시하고 수정하는 프로그램을 작성함
- 존 놀은 영화 시각 효과 회사인 인더스트리얼 라이트 & 매직에서 일하며 이 프로그램을 사진 편집에 유용하게 사용함
포토샵의 발전
- 프로그램은 점차 발전하여 "디스플레이"라는 이름으로 불리게 됨
- 1988년 여름, 이 프로그램이 상업적으로 유망하다는 것을 깨닫고 "포토샵"으로 이름을 변경함
- 슬라이드 스캐너 제조업체인 바니스캔이 "바니스캔 XP"라는 이름으로 약 200개의 버전 0.87을 번들로 제공함
어도비와의 계약
- 어도비의 아트 디렉터 러셀 브라운의 권유로 어도비가 포토샵 배포 라이선스를 구매하기로 결정함
- 1989년 4월 계약이 체결되고, 1990년 초에 버전 1.0이 출시됨
- 이후 10년 동안 300만 개 이상의 포토샵이 판매됨
초기 포토샵의 기술적 세부 사항
- 초기 포토샵은 주로 애플 매킨토시용 파스칼로 작성되었으며, 일부는 모토로라 68000 마이크로프로세서를 위한 기계어로 작성됨
- 버전 1에서는 토마스 혼자 엔지니어로 일했고, 버전 2에서는 두 명의 엔지니어가 참여함
- 토마스는 기본 애플리케이션 프로그램을 작업했고, 존은 많은 이미지 처리 플러그인을 작성함
소스 코드 공개
- 어도비 시스템즈의 허가를 받아 컴퓨터 역사 박물관은 1990년 버전 1.0.1의 포토샵 소스 코드를 비상업적 용도로 공개함
- 소스 코드는 179개의 파일로 구성되어 있으며, 약 128,000줄의 주석이 거의 없는 잘 구조화된 코드로 이루어짐
- 코드의 약 75%는 파스칼로, 약 15%는 68000 어셈블리어로 작성됨
소스 코드에 대한 해설
- IBM 리서치 알마덴의 소프트웨어 엔지니어링 수석 과학자이자 컴퓨터 역사 박물관의 이사인 그레이디 부치의 의견:
- 포토샵 1.0의 소스 코드를 열어보는 것은 고대 유물의 무덤을 여는 것과 같았음
- 인터페이스와 추상화의 일관된 분리, 컴포넌트화된 추상화의 설계 결정이 잘 이루어짐
- 현대 구현에서도 기본 구조가 유지되고 있음
- 주석이 거의 없지만 코드가 매우 읽기 쉬움
초기 포토샵 스크린샷
- 홈 화면: 사용 가능한 도구들을 보여줌
- 브러시 색상, 크기 및 텍스처 선택 가능
- 다양한 선택 도구와 이미지 필터 제공
- 버전 3에서 추가된 이미지 레이어 기능은 초기 버전에는 없음
- 사용자 정의 기능을 제공하는 환경 설정 페이지
- 제한된 글꼴, 글꼴 크기 및 스타일 선택 가능
역사적 소스 코드 공개 목록
- MacPaint와 QuickDraw 소스 코드, 2010년 7월 18일
- APL 프로그래밍 언어 소스 코드, 2012년 10월 10일
- Adobe Photoshop 소스 코드, 2013년 2월 13일
- Apple II DOS 소스 코드, 2013년 11월 12일
- Microsoft MS-DOS 초기 소스 코드, 2014년 3월 25일
- Microsoft Word for Windows 버전 1.1a 소스 코드, 2014년 3월 25일
- 초기 Digital Research CP/M 소스 코드, 2014년 10월 1일
- Xerox Alto 소스 코드, 2014년 10월 21일
- Electronic Arts DeluxePaint 초기 소스 코드, 2015년 7월 22일
저자 소개
- 렌 슈스텍은 컴퓨터 역사 박물관의 설립 이사장 명예 이사임
관련 기사
- CHM 블로그: 우리 모두를 위한 컴퓨터, 2023년 12월 15일
- CHM 블로그: 당신의 퍼비는 몇 살인가?, 2023년 12월 13일
- CHM 블로그: 거북이, 블록, 그리고 추억, 2023년 12월 5일
GN⁺의 의견
- 포토샵의 역사적 가치: 포토샵은 디지털 이미지 편집의 혁명을 일으켰으며, 그 소스 코드를 통해 초기 소프트웨어 개발의 역사적 맥락을 이해할 수 있음.
- 코드의 교육적 가치: 주석이 거의 없지만 잘 구조화된 코드는 소프트웨어 엔지니어링 교육에 유용한 자료가 될 수 있음.
- 기술적 진보: 초기 포토샵의 구조와 현대 버전의 구조를 비교함으로써 소프트웨어 아키텍처의 진화를 이해할 수 있음.
- 비판적 시각: 초기 소스 코드의 공개는 역사적 가치를 지니지만, 상업적 사용이 제한되어 있어 실질적인 활용에는 한계가 있음.
- 관련 프로젝트: GIMP와 같은 오픈소스 이미지 편집 소프트웨어도 유사한 기능을 제공하며, 포토샵의 대안으로 고려할 수 있음.
Hacker News 의견
해커뉴스 댓글 모음 요약
-
Adobe 소스 코드 아카이빙 경험
- Adobe에서 Photoshop, Illustrator, PostScript 등의 소스 코드를 아카이빙한 경험 공유.
- Thomas Knoll의 원본 Mac 플로피 디스크 백업을 사용해 Mac Plus와 시리얼 케이블로 파일을 전송.
- 1988년 7월 6일자 0.54 버전의 파일을 포함한 다양한 고대 압축 아카이브 형식의 파일들.
- Perforce 서버에 모든 코드를 아카이빙했으나, 초기 Illustrator 백업은 손상된 외장 디스크에 있었음.
-
Adobe와 소스 코드 교환 경험
- 90년대 중반 Adobe를 방문해 소스 코드를 교환한 경험.
- PhotoShop이 MacApp 기반이었고, Windows에서 작동하는 레이어가 있었음.
- 일부 PhotoShop 코드와 색 공간 계산 부분을 가져왔으나 대부분 무시.
- 현재 소스 코드에 MacApp의 흔적이 남아있는지 확인하고 싶음.
-
UX의 일관성
- UX가 여전히 일반적으로 동일함에 놀라움.
- MacBook Pro M1 출시 초기 Adobe Photoshop의 Silicon 베타 버전이 가장 빠르게 작동했음.
- 현재는 다시 느려짐.
-
소스 코드의 아름다움 이해 어려움
- 소스 코드를 보았으나 그 아름다움을 이해하기 어려움.
- Rust를 배우며 코드 구조를 고민하던 중, Photoshop이나 3D Studio Max와 같은 UI를 어떻게 구축할지 궁금했음.
- 코드 구조를 배울 수 있는 좋은 자원을 알고 싶음.
-
Adobe Photoshop 1.x 버전 기사
- 1990년의 Adobe Photoshop 1.x 버전에 대한 2013년 기사.
-
상표의 일반화 방지
- Adobe가 상표의 일반화를 막기 위해 노력 중.
- "photoshopped" 대신 "Adobe® Photoshop® Elements 소프트웨어로 이미지가 향상됨"과 같은 올바른 사용 예시 제공.
-
오래된 소스 코드 공개에 대한 찬사
- 오래된 소프트웨어의 소스 코드를 공개하는 회사들에 대한 찬사.
- 많은 소스 코드가 시간과 여러 번의 인수로 인해 사라졌을 가능성.
- 버전 관리의 보편화가 최근의 현상이라 많은 소스 코드가 랜덤 테이프 백업, 플로피 디스크 또는 바인더에 인쇄된 상태로 존재할 가능성.
-
Photoshop의 초기 버전 경험
- Adobe 이전의 Photoshop을 병원에서 본 경험.
- 당시 MacApp 버전이 베타 상태였을 가능성.
- Tom Knoll의 B-스플라인 알고리즘을 곡선 편집기의 기초로 사용.
-
John Knoll의 경력
- John Knoll이 스타워즈 프리퀄의 FX 리드였으며, Rogue One을 감독.
- 프리퀄의 비하인드 씬 다큐멘터리가 잘 유지됨.