플라네타리움 엔지니어링 스낵

Libplanet 처음 기여하기

(한국어English)

안녕하세요. 플라네타리움 개발팀 이승훈입니다. 플라네타리움에서 일하는 것이 매력적인 이유 중 하나는 오픈 소스 개발자로 일할 수 있다는 게 아닐까 합니다. 이번 글은 제가 Libplanet 프로젝트에 했던 첫 기여에 대한 이야기입니다. Libplanet에 대한 소개는 Libplanet 0.2 릴리스를 참고해주세요.

왜 Libplanet에 기여했을까?

지난 1월 플라네타리움은 첫 채용 공고를 오픈함과 동시에 Libplanet 프로젝트의 저장소를 공개했습니다. 매력적인 팀과 프로젝트라고 생각했지만 Libplanet은 유니티와 연동하기 위해 C#으로 개발되고 있었고 저는 주로 파이썬으로 개발해왔기 때문에 선뜻 지원하기가 망설여졌습니다. 그래서 Libplanet이 오픈 소스로 열려있기도 하니 간단한 것이라도 개발에 한 번 참여해보고 결정하기로 마음을 먹었습니다.

C# 개발 환경

저의 경우 이전에는 맥에서 파이썬 위주로 개발을 했습니다. 종종 관심 있는 파이썬 오픈 소스 프로젝트에 기여하곤 했었는데, 파이썬 개발자들이 맥을 많이 사용하기도 하고 오픈 소스에도 친숙한 편이어서 크게 어려움을 느끼지 않고 참여할 수 있었습니다. 그런데 막상 맥에서 C# 개발 환경을 구축하려고 하니 무엇을 설치해야 할지부터 막막했습니다. 다행히 예전과는 다르게 Mono.NET Core와 같은 프로젝트들이 있어서 맥에서도 .NET 개발을 할 수 있고, VS Code 등의 에디터들에서도 C# 개발을 하기 위한 플러그인들을 잘 지원하는 편이라 큰 어려움 없이 개발 환경을 설치할 수 있었습니다. 현재는 Libplanet에서도 프로젝트에 기여하려는 개발자들을 위한 개발 환경 설정 방법을 제공하기 때문에 좀 더 수월하게 환경을 설정할 수 있을 것 같습니다.

어떤 걸 기여할까?

Libplanet 주소는 이더리움의 주소형식을 차용하고 있습니다. 이더리움 주소는 EIP-55에서 제안된 대소문자를 혼합한 형식의 체크섬을 사용하고 있는데, 이 주소 형식의 예제는 아래와 같습니다.

십육진법
0xd1220a0cf47c7b9be7a2e6ba89f429762e7b9adb
EIP-55 체크섬
0xD1220A0cf47c7B9Be7A2E6BA89F429762e7b9aDb

당시에 Libplanet 주소의 문자열 표현은 소문자만으로 구성된 십육진법이었습니다. 따라서 주소의 문자열 표현을 이더리움에서 사용하고 있는 EIP-55 체크섬 형식으로 표현되도록 구현해야 하는 이슈였습니다. 자세한 내용은 해당 이슈PR을 참고하실 수 있습니다.

C#에서의 개발 경험이 거의 없었고 프로젝트 배경지식도 별로 없는 상황이었지만 많은 모듈을 고치지 않아도 되는 간단한 이슈여서 큰 어려움 없이 첫 기여를 진행할 수 있었습니다.

기여를 통해 알게된 것

첫 기여를 통해서 알게 된 점은 맥에서의 C# 개발 환경이 생각했던 것보다는 해볼 만하다는 것입니다. C#이 대중화된 멀티 패러다임 프로그래밍 언어를 지향하기 때문에 언어 자체의 어려움은 별로 없었습니다. 맥에서의 .NET 개발 환경도 개발하는 데 큰 무리는 없었지만, 써드파티 라이브러리나 윈도우외의 플랫폼에서 다양한 도구 지원은 아직 미비한 부분이 있었습니다. 하지만 최근 마이크로소프트의 오픈 소스 정책과 멀티 플랫폼 정책에 힘입어 차츰 나아질 것으로 보입니다.

또한 플라네타리움 팀의 개발문화도 경험할 수 있었는데, 깃허브에서 모든 이슈가 기록되고 전 세계 오픈 소스 커뮤니티와 소통하기 위해 영어를 사용한다는 점이 인상적이었습니다. 그리고 외부에서 기여를 받고 있기 때문에 코드 리뷰가 필수적으로 진행되고 CI를 통해 테스트뿐 아니라 체인지로그 같은 사항들도 자동화되어 관리되고 있다는 점이 좋았습니다.

마치며

저는 첫 기여 후에 플라네타리움팀에 합류한 지 약 한 달 정도 되었고 함께 즐겁게 일하고 있습니다. 플라네타리움에서 함께 Libplanet을 만들 소프트웨어 엔지니어를 찾고 있으니 관심있는 분들은 채용 정보 페이지를 확인해주세요.

플라네타리움은 Libplanet 기여를 활성화하기 위해 코드먹는하마, 스프린트서울 등의 행사에 참여했고 앞으로도 활발하게 참여할 예정입니다. 또한 처음 기여하시는 분들을 위한 초심자용 이슈들이 있으니 관심 있는 분들은 참고하시면 좋을 것 같습니다.

프로젝트에 궁금한 점이 있으신 분들은 언제든 저희 팀이 상주해 있는 디스코드 대화방에 놀러 오시길 바랍니다!

플라네타리움은 게임에 특화된 오픈 소스 P2P 라이브러리 Libplanet과, 그 위에서 중앙 서버 없는 온라인 게임 〈나인 크로니클〉을 만들고 있습니다. 저희와 흥미로운 기술적 도전을 함께 하실 분들을 모시고 있습니다. 지금 인재 영입 페이지를 확인해주세요!