루비 코어와 레일즈 코어 개발 방식 비교
- 루비 코어의 특징:
- 구조: 핵심 클래스, 라이브러리, 확장 기능으로 나뉘며, 각 섹션에 전담 관리자가 존재합니다.
- 장점: 특정 분야의 전문가가 있어 안정성이 높고 위험 부담이 적습니다. 일본어와 영어 사용자 모두를 포용하는 다국어 환경입니다.
- 단점: 언어 장벽으로 인한 소통의 어려움, 전문가에게 의존하여 개발 속도가 느리고 릴리스 주기가 깁니다. 표준 라이브러리 내에 Gem과 비-Gem이 혼재하거나 외부 저장소를 사용하는 등 일관성이 부족합니다.
- 레일즈 코어의 특징:
- 구조: 여러 Gem으로 분리되어 있지만, 모든 커미터가 모든 섹션에 책임이 있습니다.
- 장점: 개발 속도가 빠르고 패치 적용 및 버그 수정이 용이합니다.
- 단점: 특정 소유자가 없어 의견 충돌이 잦고, 릴리스 관리자가 없어 릴리스 지연 및 백포트(backport) 누락이 발생합니다. 높은 개발 속도만큼 위험도도 높습니다.
루비 코어 개선 제안
-
자유로운 커밋 및 롤백: 레일즈 코어처럼 ‘자유롭게 커밋하고 롤백하라’는 문화를 도입하되, 명확한 소통 채널을 통해 책임감을 강조합니다.
-
표준 라이브러리 재정의: 표준 라이브러리 내의 ‘제3자 소프트웨어’를 Subversion에서 분리하고, 루비 코어 팀이 직접 관리하는 부분만 유지해야 합니다.
-
아웃 오브 밴드(Out-of-band) 릴리스: 표준 라이브러리 구성 요소를 Gem으로 전환하여 독립적인 릴리스 주기를 갖고, 이를 통해 API 개선 속도를 높이고 루비 버전 업그레이드 시 특정 Gem의 버전 다운그레이드를 가능하게 합니다.
레일즈 프로그래머와 개발 도구
-
‘레일즈 프로그래머’라는 용어가 루비, CSS, HTML, JavaScript, SQL 등 웹 개발에 필요한 특정 기술 스택을 아는 사람을 의미한다고 설명합니다.
-
일본의 루비 관련 서적이 특정 주제(예: D Ruby, Rack)에 집중하는 반면, 미국은 루비 언어 자체나 레일즈 웹 개발에 대한 광범위한 서적이 많아 초보자들이 루비로 무엇을 만들지 막막해하는 경향이 있다고 지적합니다.
-
레일즈 앱에서 발생하는 루비 코어 버그 리포트의 어려움을 언급하며, 현재의 레일즈 프로그래머들이 미래의 루비 전문가가 될 수 있도록 교육의 중요성을 강조합니다.
루비의 미래를 위한 개선 사항
-
인코딩:
ASCII-8BIT문자열과 다른 인코딩 문자열의 연결 시 일관성 없는 동작을 비판하며, 항상 예외를 발생시켜 명확한 오류 처리를 유도해야 한다고 주장합니다. -
로드 경로 객체(Load Path Objects):
$LOAD_PATH에 객체를 추가하여 파일 시스템 외에 인터넷이나 데이터베이스 등에서 코드를 로드할 수 있도록 하는 기능을 제안합니다. -
DTrace 지원: 루비 트렁크에 DTrace 지원을 재도입하여 객체 할당 위치, 메서드 호출, GC 이벤트 등 시스템 프로파일링을 강화하고, 실시간으로 실행 중인 프로세스에 연결하여 디버깅할 수 있는 강력한 도구를 제공해야 한다고 역설합니다.