Swift 오픈소스 공개, Swift 3.0 로드맵

Swift 오픈소스

드디어! Swift 가 오픈소스로 공개되었습니다. 라이센스는 Apache License 2.0 입니다. Swift 코드 뿐 아니라 패키지 매니저 까지 오픈이 되어서 누구나 수정하고 컴파일해볼 수 있습니다 (이 글을 읽고 계시는 Realm 모바일 데이터베이스의 Object-C, Swift 버전인 realm-cocoa 도 Apache License 2.0 랍니다) 이런 커다란 프로젝트가 오픈소스로 공개된다는 것 아주 신나는 일이 아닐 수 없습니다. 🎉

애플은 swift.org 사이트를 열고 자세한 내용을 공개했는데요, 이 사이트는 열리자 마다 사람이 너무 많이 몰려 한동안 먹통이 되어버렸습니다. Swift는 코드만 오픈된 것이 아니라, Swift가 하나의 생태계로서 자라나기 위한 모든 정보와 가이드라인까지 사이트에 잘 정리되어 있습니다.

참고로, 기존의 Swift 사이트는 https://developer.apple.com/swift/ 였습니다. 이제는 접속이 안되네요.

Swift의 간단한 역사

Swift는 LLVM의 메인 개발자인 Chris Lattner가 만들었습니다(물론 현재는 Apple 직원입니다). 이번에 공개된 Swift의 GitHub 저장소의 첫번째 커밋을 보면 Chris Lattner가 첫 커밋을 한 것을 볼 수 있습니다. 날짜는 2010년 7월 18일이고, 내용은 Makefile 이네요. Apple 은 이번에 GitHub 에 Swift를 공개하면서 전체 history 까지 볼 수 있게 공개했습니다. 전체 커밋 의 수는 28,673 커밋 입니다. 제 1 기여자는 물론 Chris Lattner 입니다.

이런 개발 뉴스를 더 만나보세요

또 GitHub에서 발견할 수 있는 또하나의 재미있는 사실은 Contributors 페이지에서 볼 수 있는 commit 그래프 입니다. 시작은 2010년 이었지만 활발한 개발은 2013년 중반부터 이루어 졌다는 것을 볼 수 있네요. 총 기여자는 54명이지만, 코어 개발자는 8명 정도 입니다. 그는 자신의 홈페이지 에서 ‘자신이 언어의 기본 구조를 짜고, 2011년 후반에 몇몇 사람들이 참여했으며 2013년 7월에 있었던 Apple Developer Tools group에서 커다란 관심을 이끌어 냈다’라고 하고 있습니다.

Swift 패키지 매니저와 Linux 포팅

먼저 가장 눈에 띄는 것은 패키지 매니저 입니다. 하나의 언어가 생태계로서 동작하기 위해서 필수적인 부분이죠. GitHub 에 공개된 저장소인 swift-package-manage의 주 개발자는 Homebrew 의 개발자 Max Howell 이네요

Linux 포팅이 되어있습니다. Swift blog에 올라온 The Swift Linux Port 에 따르면 포팅이 아직 완벽하지는 않다고는 하지만 Ubuntu에서 사용할 수 있는 바이너리를 제공하고 있습니다. (현재는 x86_64에서만 사용 가능) 리눅스용 포팅은 Object-C 에 전혀 의존성이 없고, 컴파일러와 Standard Library를 제공하며, Glibc Module를 통해 대부분의 Linux C 스탠다드 라이브러리를 제공합니다. 또한, Apple에서 쓰던것과 같이 Swift Core 라이브러리를 쓸 수 있도록 포팅되어있고, LLDB 디버거로 디버깅을 하거나 인터랙티브 Shell인 REPL 도 사용할 수 있습니다. Linux 지원에는 아직 부족한 부분도 있다고 하는데 블로그 본문을 참고해 주세요.

Swift 3.0 ?!

Swift가 앞으로 어떻게 변화할 것인가에 대한 힌트는 Swift Evolution GitHub에서 얻으실 수 있습니다. 내년 봄에 나올 Swift 2.2는 버그를 수정하고 에러메시지와 진단도구 개선 , 컴파일 시간 단축, 성능 향상 등 구현의 질을 높이는데 집중한다고 합니다. 일부 Swift 2.0의 기능으로 소개된 기능이 추가되거나 할 수는 있지만 호환성이 망가지는 일은 최소화 한다고 하네요.

지금까지 Swift는 많은 하위 호환성을 포기하면서 빠르게 발전해 왔는데요, 이번에도 하위 호환성에 묶이기 보다는 많은 부분을 크게 변경해 나가는 모습입니다. 예를 하나 들면 ++ 연산자와 -- 연산자를 제거 하자는 Proposal 이 현재 받아들여 졌다고 되어있네요. 개발자 분들은 미리미리 해당 연산자를 제거해 놓으면 나중에 편하실 듯 합니다.

또한 2016년 가을에 공개될 것이라고 예상되는 Swift 3.0에서는 바이너리 단에서의 안정화 (ABI 안정화, 즉 Swift의 미래버전과의 바이너리 호환성), 대부분의 환경에 포팅될 수 있도록 개선, Type 시스템 정리와 문서화, API design guidelines 등이 달라진다고 합니다.

Apple의 크리스마스 선물, Swift 오픈소스

이번 Swift 오픈소스는 여자친구 없는 외로운 개발자들을 위한 애플의 크리스마스 선물 일까요? 사람들은 이미 이 프로젝트를 즐기기 시작했습니다. Swift의 라이센스를 GPL v3로 변경하자고 하는 Pull Request 가 올라왔고, 수많은 댓글이 달리고 있고 이 PR이 농담이나 아니다 논쟁도 오가고 있네요 (모르시는 분들을 위해, Apple과 GPLv3 는 친하지 않습니다)

Swift 오픈소스에 기여하기위한 방법은 Contributing 페이지에 잘 정리되어 있습니다. 물론 Pull Request를 받고있고, 메일링 리스트, 버그 리포팅, CI, 커밋 메시지 가이드라인, 코드리뷰, 테스팅, 방법이 친절하게 안내 되어있습니다. Swift 의 발전방향에도 참여할 수 있는 방법도 안내 되어있습니다. 현재로서는 Proposal 이 있고 그것을 리뷰하는 형식이네요.

애플은 이번에 Swift 를 오픈소스 하고 + Linux 지원도 강화하고 + 패키지 매니저를 같이 공개 했을 뿐 아니라 + 개발자들이 인정하는 GitHub 를 통해서 + 웹사이트와 훌륭한 문서화도 공개하고 + Apache 2.0이라는 인정받은 오픈소스 라이선스로 + 프로세스 관리, I/O 라이브러리를 포함해 공개 했습니다. 뭐 하나 지적할것 없이 완벽한 오픈소스 공개에 모두들 흥분 해 있습니다. 애플, 멋져요!


Realm은 모바일 데이터베이스 입니다: SQLite 또는 Core Data를 대체하여 사용하실 수 있습니다.
물론 Swift를 지원합니다 더 알아보기

다음: Realm Obj-C와 Realm Swift의 새로운 기능을 소개합니다.

General link arrow white

컨텐츠에 대하여

이 컨텐츠는 저자의 허가 하에 이곳에서 공유합니다.


박민우

비지니스를 좋아하는 소프트웨어 개발자 @tebica / Realm을 아시아지역에 확산시키는 일을 합니다.

4 design patterns for a RESTless mobile integration »

close