Lobsters

An open-source, clean-room reimplementation of Adobe Photoshop in pure Rust

순수 Rust로 다시 만든 오픈소스 Photoshop 호환 이미지 편집기

PhotoCraft는 레이어, 마스크, 조정 레이어와 PSD 편집을 지원하는 Rust 기반 이미지 편집기입니다. GPU 합성기와 CLI·MCP 제어 기능을 갖췄으며, 프로젝트 측은 PSD 테스트 파일 대부분을 재저장한 뒤에도 같은 이미지로 렌더링한다고 설명합니다. 다만 아직 초기 알파 단계입니다.

AI 요약

PhotoCraft는 Adobe Photoshop의 작업 흐름과 파일 호환성을 구현하려는 오픈소스 이미지 편집기입니다. 프로젝트는 순수 Rust로 작성했으며, 공개 사양과 관찰한 동작을 바탕으로 독립 구현했다고 설명합니다. macOS, Windows, Linux용 앱을 제공하고 엔진과 UI를 WebAssembly로 빌드할 수도 있습니다. 다만 초기 알파 단계라 전문 작업에서 Photoshop을 대체할 수준은 아니라고 밝힙니다. 생성형 AI 기능, 약 20개 도구, 타이포그래피와 전문 작업 흐름의 세부 기능, 플러그인 호환성이 부족합니다.

문서 모델과 합성 구조

엔진은 순수 데이터 문서 모델과 명령 처리기로 구성하고, egui UI를 얇게 얹었습니다. 코드는 24개 크레이트로 나뉘며, CPU 합성기를 기준 구현으로 삼아 wgpu 기반 GPU 합성 결과와 대조합니다. GPU 경로는 Metal, Vulkan, DirectX 12, WebGPU를 대상으로 합니다. 256×256 크기의 희소 타일과 copy-on-write 방식을 써서 큰 캔버스의 메모리 사용과 실행 취소 비용을 줄이고, 레이어 상태별 효과 결과도 캐시합니다. 프로젝트는 테스트 1,700개 이상을 포함한다고 설명합니다.

편집 기능과 자동화

레이어, 마스크, 조정 레이어, 레이어 스타일, 텍스트와 벡터 도형을 지원합니다. Curves, Levels, Vibrance 등 조정 레이어를 쌓고 마스크를 적용하면 원본 픽셀을 바꾸지 않고 편집 내용을 조절할 수 있습니다. RGB, Grayscale, CMYK, Lab 문서를 채널당 8·16·32비트로 처리하며 ICC 색상 관리와 소프트 프루핑도 지원합니다. 브러시, 선택 도구, 스마트 오브젝트 필터, 변형, 히스토리 등도 제공합니다.

모든 메뉴와 도구는 500개가 넘는 명령을 공유합니다. 앱 UI뿐 아니라 CLI, JSON 제어 채널, MCP 서버도 같은 명령 엔진을 호출하므로 이미지 편집을 스크립트나 에이전트 작업으로 실행할 수 있습니다. CLI로 PSD를 열고 필터나 Curves 조정 레이어를 적용해 내보내거나, 액션 목록을 폴더의 이미지에 일괄 적용할 수 있습니다. 앱은 로컬에서 동작하며, 프로젝트는 네트워크 계정 없이 선택 기능을 실행한다고 설명합니다.

PSD 호환성과 검증

PSD 지원은 Adobe의 공개 사양을 바탕으로 작성한 별도 크레이트에 구현했습니다. psd-tools 테스트 세트 309개 가운데 307개, ag-psd와 psd-tools를 섞은 세트 170개 가운데 169개는 PhotoCraft에서 열고 다시 저장한 뒤에도 같은 렌더링 결과를 냈다고 합니다. 아직 모델링하지 않은 블록과 메타데이터는 버리지 않고 보존합니다. 다만 문서 모델을 거쳐 저장한 파일은 원본과 바이트 단위로 같지 않습니다. 별도 PSD 크레이트로 직접 파싱하고 쓰는 경우에는 파싱 가능한 코퍼스 파일을 바이트 단위로 재현한다고 설명합니다. 도형 레이어는 자체 PSD 코퍼스 116개 전부가 Photoshop과 같은 픽셀을 만들었다고 주장합니다.

배포와 라이선스

저장 형식은 PSD·PSB와 레이어가 있는 TIFF, PNG·JPEG·WebP·OpenEXR·AVIF 등을 포함합니다. MIT 또는 Apache-2.0 라이선스로 배포하며, macOS·Windows·Linux·FreeBSD용 설치 파일과 브라우저용 빌드를 제공합니다. 프로젝트는 저작권이 있는 Photoshop 코드, 셰이더, 에셋을 사용하지 않았다고 밝힙니다. 다만 Lobsters 토론에서는 README의 공동 작성자 표기에 Claude Opus가 등장하는 점을 근거로, LLM을 사용한 프로젝트를 clean-room 구현이라고 부를 수 있는지 논쟁이 벌어졌습니다.

Lobsters 반응

  • @Halkcyon — 공동 작성자: Claude Opus 5.5 [email protected]. 그다지 ‘clean-room’ 같지는 않네요.
    • @jussi — 네. 사람이 소스 코드를 읽기나 했는지 좀 의심스럽습니다. LLM으로 이런 식의 재구현이 가능해지면 자본주의에 어떤 영향을 줄지 궁금합니다. Adobe가 LLM을 적극적으로 밀어왔는데, 반대 방향으로도 작동하는 셈이네요. 심연을 들여다보면 심연도 우리를 들여다본다는 식입니다. 누군가 새 도구로 Adobe 제품을 전부 역설계했다면 업계가 어떻게 대응할지도 흥미롭습니다.
    • @gspr — 큰 회사는 작은 회사를 계속 같은 방식으로 짓밟으면서, 법과 이용 약관은 큰 회사만 보호하는 방향으로 만들어질까 봐 두렵습니다. “Photoshop에는 그런 일을 할 수 없습니다. Adobe의 지식재산이고, Adobe가 금지한다고 했으니까요!”라고 하면서, “Adobe가 LLM으로 당신의 GPL 코드베이스를 학습해 Photoshop을 개선하는 건 당연히 괜찮습니다. 오픈소스고, 코드를 복사하지 않고 보기만 했으니까 GPL이 적용되지 않습니다!”라고 하겠죠. 아직 맞설 시간은 있지만 지쳤습니다. FOSS 커뮤니티 상당수가 이런 흐름을 지지합니다. 그런 일이 일어나지 않을 거라고 하거나, 일어나도 좋다고 하면서요. 그 점도 더 의욕을 꺾습니다.
    • @algernon — 이미 그런 상황입니다. 저작권이 실제로 작동하는 방식이죠. 회사가 당신의 코드를 훔치면 소송을 걸 수 있지만, 법률 비용으로 파산시킵니다. 당신이 회사 코드를 훔치면 회사가 소송을 걸어 파산시킵니다. (앞 문장은 피드에서 본 말을 가져왔습니다. 좋길래 빌렸습니다.)
    • @gspr — 말씀하신 건 법률 체계 전반의 결함입니다. 지식재산권에만 해당하지 않습니다. 제가 말한 건 법 자체에 생기는 새로운 문제입니다. 둘 다 나쁘지만 같은 문제는 아닙니다.
    • @algernon — 현실에서 나타나는 효과는 거의 같습니다. 법은 언제나 큰 회사를 보호합니다. 좋은 법을 만들어도 큰 회사는 늘 제도를 이용할 겁니다. 게다가 AI 회사들은 이미 ‘공정 이용’을 내세웁니다. 그런 제도가 있는 지역에서는 말씀하신 법이 이미 존재합니다.
    • @david_chisnall — Adobe 소스 코드 유출본이 학습 데이터에 들어가지 않았다고 장담할 수 있나요? Adobe가 감사를 진행해 실제 Photoshop 코드를 C에서 Rust로 그대로 옮긴 부분이 얼마나 되는지 확인한다면 흥미롭겠습니다.
    • @jussi — 흥미로운 소송으로 이어질 것 같습니다. ‘clean-room’이 이 뜻일 수도 있다고 생각했습니다. https://shiftmag.dev/license-laundering-and-the-death-of-clean-room-8528/ GitHub에는 AutoCAD, Illustrator, Lightroom, Premiere Pro, Acrobat Reader, Microsoft Excel, PowerPoint, Word 복제 프로젝트도 있었습니다.
    • @algernon — 감사는 비싸니 할 필요가 없습니다. 경고장을 보내거나 재구현한 사람을 법률 비용으로 압박하는 편이 더 싸죠.
    • @mro — 학습 데이터를 수집하는 일이 공정 이용이라면 이것도 분명 공정 이용이겠죠?
    • @dvshkn — 네. 저는 LLM에 반대하는 건 아니지만, LLM을 상당한 비중으로 쓴 프로젝트를 clean-room이라고 보지는 않습니다. 자격을 갖추려면 AI 기여를 제한하는 FOSS 프로젝트보다도 높은 기준이 필요합니다. Stack Overflow처럼 LLM에 질문만 하는 것도 위험할 수 있습니다.
  • @simonw — Rust 프로젝트라 WebAssembly 빌드를 찾아봤습니다. 있긴 한데, 직접 실행하려면 ZIP 파일을 내려받아 localhost에서 서비스해야 하더군요. 그래서 ZIP 파일을 제 S3 버킷에 올려 여기서 써볼 수 있게 했습니다. https://static.simonwillison.net/static/2026/photocraft-web-0.2.0/ 27.1MB짜리 WASM 파일을 불러옵니다. 왜 개발팀이 호스팅 버전을 눈에 띄는 곳에 제공하지 않는지 모르겠습니다.
    • @hmaddocks — 트래픽 비용을 내고 싶지 않은 거겠죠.
  • @swannodette — 소개용 UI 이미지를 전부 봤는데 하나같이 엉성해 보여서 웃깁니다. 소프트웨어의 미래를 환영합니다!

원문: GitHub / 번역·요약: Trawling