Modular의 Python 스타일 시스템 프로그래밍 언어 Mojo가 2026년 8월 18일 완전 오픈소스로 전환됐다. 컴파일러와 도구, 언어를 빌드하는 데 필요한 소스까지 모두 Apache 2.0 with LLVM exceptions로 공개됐다. 다만 이 발표를 곧바로 ‘모든 것이 열렸다’고 해석하기는 어렵다. 컴파일러 PR은 Modular이 제시한 2026년 말 목표 시점까지 받지 않으며, GPU 서빙 스택은 여전히 별도 라이선스가 적용되는 사전 빌드 구성 요소에 의존한다. 지금 Mojo를 기반으로 무엇을 만들어도 되는지, 경계선을 정확히 짚어보자.
Mojo 오픈소스화는 2024년부터 세 단계로 진행됐다
Mojo 언어는 한 번에 공개된 프로젝트가 아니다. LLVM과 Swift의 창시자인 Chris Lattner가 설립한 Modular은 2년이 넘는 기간에 걸쳐 코드를 순차적으로 공개했다. 표준 라이브러리와 커널 코드가 먼저 공개됐고, 컴파일러는 가장 마지막에 열렸다.
| 날짜 | 공개된 항목 | 외부 PR |
|---|---|---|
| 2024년 3월 | 표준 라이브러리, Apache 2.0 with LLVM exceptions | 접수 |
| 2024–2025년 | Mojo GPU/CPU 커널, Modular이 2025년 5월 기준으로 밝힌 450,000+ LOC | 접수 |
| 2026년 8월 11일 | Mojo 1.0.0 안정 버전 출시 - 언어 semver 적용, 6주 출시 주기 | - |
| 2026년 8월 18일 | 컴파일러, 도구, 빌드 소스 공개(ModCon에서 발표) | 2026년 말까지 동결 |
자료를 확인할 때는 날짜에 특히 주의해야 한다. 2026년 8월 18일 이전 자료에는 컴파일러가 비공개라고 적힌 경우가 많다. 예를 들어 Mojo Wikipedia 문서는 공개 6일 전인 2026년 8월 12일 수정본까지도 컴파일러 라이선스를 독점적인 Modular Community License로 표기했다.
Apache 2.0 with LLVM exceptions가 실제로 허용하는 것
저장소의 LICENSE 파일은 LLVM이 사용하는 것과 같은 허용적 라이선스 템플릿이다. 여기에 붙은 두 가지 LLVM exception은 단순한 법률 문구가 아니라, 실제 배포 방식에 영향을 준다.
기본 라이선스인 Apache 2.0은 상업적 이용자에게 익숙한 권리를 제공한다. 소스나 오브젝트 형식으로 복제, 수정, 재라이선스, 배포할 수 있고, 모든 기여자로부터 명시적인 특허 라이선스도 받는다. 단, 해당 작업물이 자신의 특허를 침해했다며 소송을 제기하면 그 특허 허여는 종료된다. 재배포할 때는 일반적으로 라이선스 사본, 수정 고지, NOTICE 파일을 유지해야 한다(Section 4).
LLVM exceptions는 여기서 두 가지 의무를 완화한다.
- 내장되는 오브젝트 코드. Mojo로 코드를 컴파일하는 과정에서 Mojo 일부가 결과물에 포함되더라도 Sections 4(a), 4(b), 4(d)는 면제된다. 즉, Mojo 컴파일러가 만든 모든 바이너리에 Apache 라이선스 전문을 함께 배포할 필요는 없다.
- GPLv2 결합. Mojo로 컴파일한 형식을 GPLv2 코드와 결합했고, 법원이 Apache의 특허 또는 면책 조항이 GPLv2와 충돌한다고 판단하면 해당 결합물에 한해 충돌하는 조항을 면제할 수 있다.
반대로 이 라이선스가 주지 않는 권리도 있다. Mojo 및 Modular 이름에 대한 상표권, 보증, 책임 보호는 제공하지 않는다. 또한 저장소 소스의 라이선스가 전부는 아니다. 저장소 README에 따르면 MAX, Mojo, Modular의 사용 및 배포에는 별도로 Modular Community License가 적용된다.
공개된 영역과 아직 밖에 있는 영역
‘완전 오픈소스’라는 표현이 modular/modular 저장소에서 정확히 무엇을 뜻하는지 정리해보자. 이 저장소는 2026년 8월 19일 기준 53,617개 커밋, 별 26.9k개, 포크 2.9k개를 기록했다. 하지만 저장소 밖에 남아 있는 구성 요소도 있다.
| 구성 요소 | 위치 | 상태 |
|---|---|---|
| Mojo 컴파일러 | /KGEN 디렉터리 | 2026년 8월 18일부터 공개, PR은 동결 |
| 표준 라이브러리 | /mojo/stdlib | 2024년 3월부터 공개, PR 접수 |
| MAX GPU/CPU 커널 | /max/kernels | 공개, 기여 접수 |
| 추론 서버, 모델 파이프라인 | /max/python/max/serve, /max/pipelines | 공개 |
| MAX 사전 빌드 플랫폼 빌드 | 저장소 외부 배포 | Modular Community License |
| MAX 커널·모델 커스터마이징 워크플로 | - | 여전히 사전 빌드 Mojo 컴파일러 바이너리 필요 |
마지막 항목은 커뮤니티의 추측이 아니라 Modular의 공식 설명이다. 8월 18일 발표문은 MAX 커널이나 모델을 커스터마이징할 때 사전 빌드 컴파일러가 “여전히 필요하다”고 명시한다. GPU를 겨냥하는 AI 엔지니어라면 바로 이 지점에서 오픈소스와 라이선스 구성 요소가 만난다는 점을 알아둘 필요가 있다. 출시 당일에도 이 부분을 두고 반응이 나왔다. r/ProgrammingLanguages 발표 스레드에서 u/benreynwar는 다음과 같이 썼다.
"GPU로 컴파일하려면 아직도 오픈소스가 아닌 것들이 많이 필요한 듯하다." - u/benreynwar, r/ProgrammingLanguages
로컬 CPU 빌드는 문서화된 경로가 있다. 저장소를 클론하고 Bazel로 빌드한 뒤 실행하면 된다. 반면 GPU 커널과 모델을 커스터마이징하는 순간 사전 빌드 컴파일러 의존성이 등장한다.
표준 라이브러리는 기여 가능, 컴파일러는 2026년 말까지 불가
오픈소스와 개방형 거버넌스는 같은 말이 아니다. 현재 Mojo는 전자는 갖췄지만 후자는 아직 아니다. 발표 글은 “컴파일러와 도구에 대한 기여를 받을 준비가 되지 않았다”고 분명히 밝히며, 2026년 말까지 이를 받는 것을 목표로 제시했다.
표준 라이브러리는 상황이 다르다. 2024년부터 외부 기여를 받아왔고, Mojo 1.0 출시 시점에 Modular은 PR이 병합된 기여자가 약 200명이며, 1,100+개의 PR이 200,000+줄을 변경했다고 밝혔다. 컴파일러와 도구 PR은 여전히 받지 않는다.
소스가 실제로 빌드되는지는 직접 확인할 수 있다.
git clone https://github.com/modular/modular.git
cd modular
./bazelw run --config=build-mojo KGEN:mojo -- run hello.mojo
./bazelw test --config=build-mojo mojo/stdlib/test/...
--config=build-mojo는 로컬 체크아웃에서 컴파일러를 직접 빌드한다. 반면 --config=prebuilt-mojo는 야간 빌드를 내려받는다(발표문 기준). 포크를 고려한다면 몇 가지도 함께 알아둬야 한다. main 브랜치는 나이틀리 빌드를 따라가며, 안정 버전은 6주마다 출시된다. 또한 컴파일러 기여가 닫혀 있는 동안 Modular이 유지관리자 권한을 유지한다. r/programming 스레드의 u/Fidodo가 말했듯이 말이다.
"오픈소스라고 해서 커뮤니티가 지배한다는 뜻은 아니다. 무엇을 병합할지에 관한 최종 결정은 여전히 유지관리자에게 있다." - u/Fidodo, r/programming
Python 연동은 가능하지만, Python 대체재는 아니다
공식 홈페이지는 현재 가능한 연동 방향을 잘 보여준다. Mojo에서 Float64 값 40개를 만들고, 이를 NumPy에 넘겨 Matplotlib으로 그래프를 그린 다음 plot.png로 저장할 수 있다. 현재 실질적으로 쓸 수 있는 경로는 두 가지다. Mojo는 CPython 런타임을 통해 Python 모듈을 임포트할 수 있고, Python은 C 호환 바인딩을 통해 Mojo 함수를 호출할 수 있다. AI 엔지니어에게 더 중요한 것은 후자다. 성능이 중요한 커널은 Mojo로 작성하고, 학습과 서빙 코드는 Python에 남겨둘 수 있다.
문제는 Mojo가 2023년 처음 내세웠던 ‘Python 상위 호환’이라는 표현이다. 현재의 현실은 다음과 같다.
- Mojo는 Python 3와 소스 호환되지 않는다. 기존 Python 코드가 수정 없이 실행되지는 않는다.
- 공식 로드맵도 이제 Mojo가 Python의 완전한 상위 집합으로 발전할 수도, 그렇지 않을 수도 있다고 밝힌다. Phase 1에서는 타입이 없는 Python 스타일 코드와 Python 라이브러리 동등성을 명시적으로 제외했다.
- Mojo에는 Python식 클래스 시스템이 없고, traits를 사용하는 structs가 있다. 객체 모델이 다르다.
- 클래스, 상속, 타입 없는 변수는 아직 시작되지 않은 로드맵 Phase 3에 속한다. Phase 2인 도구와 패키징은 진행 중이다.
- 명시적으로 안정(stable) 표시되지 않은 표준 라이브러리 API는 1.0 이후에도 불안정하다.
실제 마이그레이션을 시도한 이용자들은 문서보다 더 단호하게 말한다. r/MojoLang의 Mojo 현황 스레드에서 나온 반응이다.
"Python을 상위 클래스로 지원하는 일은 아직 한참 멀었다." - u/newtestdrive, r/MojoLang
"아직 Python의 상위 집합은 절대 아니다." - @eatonphil, X
같은 u/newtestdrive는 Python 스크립트를 옮기면 “가독성이 나빠지고, 때로는 불가능하다”고도 전했다. Modular의 FAQ는 세 가지 마이그레이션 경로를 권한다. 문서화된 Python-Mojo 차이를 학습하거나, Mojo AI skills를 이용해 보조 번역을 하거나, 기존 Python 코드에서 Mojo 바인딩을 점진적으로 노출하는 방식이다. Mojo는 Python을 대체하는 언어라기보다, Python 문법 감각을 가진 커널 언어로 보는 편이 맞다.
현재 AI 스택에서 Mojo를 쓸 만한 자리
GPU 성능에 관한 독립적인 근거도 있다. SC25 WACCPD 워크숍에서 발표됐고 최우수 논문상을 받은 Oak Ridge National Laboratory 연구는 NVIDIA H100과 AMD MI300A에서 7-point stencil, BabelStream, miniBUDE, Hartree-Fock 등 네 가지 커널을 CUDA 및 HIP와 비교했다. Mojo는 메모리 바운드 워크로드에서 전반적으로 경쟁력이 있었지만, atomic 연산 비중이 높거나 fast-math를 쓰는 컴퓨트 바운드 사례에서는 눈에 띄는 격차가 남았다.
| 워크로드 | 판단 |
|---|---|
| 이식 가능한 GPU/CPU 커널 작성 | 파일럿 도입 권장 - ORNL 데이터는 메모리 바운드 성능 동등성을 뒷받침하지만, atomic 비중이 높은 AMD 코드는 먼저 벤치마크해야 한다 |
| MAX 기반 프로덕션 모델 서빙 | 먼저 Modular Community License 조건을 확인할 것; 사전 빌드 바이너리 의존성은 남아 있다 |
| 범용 Python 애플리케이션 코드 대체 | 아니오 - Phase 3가 미완성이며 소스 호환되지 않고, 패키지 관리도 시작되지 않았다 |
| 가속기 프로그래밍 학습 | 예 - 읽기 쉬운 소스, 로컬 빌드, LSP와 디버거를 갖춘 VS Code 확장이 있다 |
플랫폼 계획 시 참고할 사항도 있다. Mojo는 Linux와 macOS에서 네이티브로 실행되며, Windows는 WSL에서만 지원한다. SDK 텔레메트리 정책은 기본 시스템 정보, 충돌 보고서, 집계된 LSP 타이밍을 다루며 소스 코드는 전송하지 않는다.
FAQ
Mojo 언어는 이제 완전히 오픈소스인가요?
예. 2026년 8월 18일부터 컴파일러, 도구, 표준 라이브러리, 빌드 소스가 Apache 2.0 with LLVM exceptions로 modular/modular GitHub 저장소에 공개됐다. 단, MAX 사전 빌드 플랫폼 빌드에는 별도의 Modular Community License가 계속 적용된다.
Mojo의 라이선스는 무엇인가요?
저장소 소스와 기여에는 Apache License 2.0 with LLVM exceptions가 적용된다. MAX 플랫폼의 사용과 배포에는 별도로 Modular Community License가 적용된다.
Mojo 컴파일러에 기여할 수 있나요?
아직은 안 된다. 표준 라이브러리, MAX 커널, 예제, 문서는 외부 PR을 받는다. 2024년 이후 약 200명의 기여자가 PR을 병합했지만, 컴파일러와 도구 PR은 Modular이 밝힌 2026년 말 목표 시점까지 동결돼 있다.
Mojo는 Python과 호환되나요?
부분적으로 호환된다. Mojo는 CPython 런타임을 통해 Python 모듈을 임포트할 수 있고, Python에서 호출할 수 있는 C 호환 바인딩도 제공한다. 하지만 Python 3와 소스 호환되지는 않으며 클래스도 없다. 로드맵 역시 완전한 Python 상위 집합이 될 수도, 그렇지 않을 수도 있다고 설명한다.
2027년 전까지 지켜볼 세 가지
이번 공개가 커뮤니티 주도 프로젝트로 자리 잡을지는 세 가지 일정에 달려 있다. 첫째는 컴파일러와 도구 기여를 받겠다는 2026년 말 목표다. 둘째는 클래스, 상속, 타입 없는 변수가 포함된 로드맵 Phase 3로, 실질적인 Python 호환성이 나타난다면 이 단계에서다. 셋째는 1.0 이후 semver 정책 아래 표준 라이브러리 API가 얼마나 빠르게 안정 표시를 받느냐다.