개요
발대식 및 내 목표

처음 발대식에 참가하여 OSSCA에 대한 전체적인 개요와 팀 소개를 받고 여정을 시작하게 되었습니다. 사진 가장 왼쪽에 햇빛 덕분에 빛나고 있는 사람이 저입니다.
이후 첫 번째 과제로 여러 LLM을 이용하여 프로젝트와 친해지는 시간을 가졌고, 이것을 중심으로 어떤 부분에 기여하고 싶은지 고민해보고 이를 게시물에 작성해보는 시간을 가졌습니다. 아무래도 해당 프로젝트에서 사용하는 Rust라는 언어를 처음 접하다 보니 차근차근 구조부터 알아볼 수 있는 부분부터 기여하려 했습니다. 아래는 제가 처음에 생각한 세 가지 기여해보고 싶은 요소입니다.
- 문서화나 번역 및 초보자를 위한 예제 코드 작성
- 기능 구현(CTE)
- 언어 바인딩(Java)
그러나 언어 바인딩이라는 것은 난이도가 너무 높고, 기능도 모두 수준이 차이가 많이 났습니다. 그렇게 오프라인 모임에서 조언을 구했고, SQL에서 사용하는 간단한 function부터 구현하는 것이 프로젝트 전체적인 부분을 빠르게 이해할 수 있다 들어서 이 부분부터 구현해보려 했습니다. 아래 URL 멘션은 github gist에 게시한 게시물입니다.
온/오프라인 모임 및 기여 진행 방향
온/오프라인 모임 덕분에 팀원 분들과 친분을 가질 수 있었고, 덕분에 여러 팁을 얻을 수 있었습니다.
관심사 기반으로 기능 기여를 위해 더 들어가는 방향과 동시에 상대적으로 조금은 복잡도가 낮은 이슈를 하나 정해서 기여 경험을 쌓아보시는 방향인데요. SQL 함수나 Expr 추가 지원에 대한 이슈들입니다. 기존 merge된 PR중에서 참고할 사례들을 많이 보실 수 있는 작업입니다. GlueSQL AST도 수정하게 되고, parser -> translator -> executor 그리고 test-suite에 테스트 작성까지 한 번에 다 둘러볼 수 있어서 23년도 멘토링 때까지는 첫 미션으로 해당 함수 구현 안내를 드리기도 했습니다. - 태훈 멘토님 2025/7/21 오전 10시 34분
위 글은 발대식 이후 첫 번째 오프라인 모임에서 태훈 멘토님께서 주신 팁입니다. 이 글 덕분에 Rust와 해당 프로젝트를 기여함에 초보자로서 어떻게 시작 할지 이정표가 되었던 글입니다. 저는 TDD 때문에 해당 프로젝트에 참여했습니다. 때문에 TDD 방식을 사용할 것이고, 덕분에 저는 다음과 같은 형식으로 진행할 계획을 짤 수 있었습니다.
- 미구현 되었거나 기능 부족한 함수 조사, SQLite의 INSTR(string, substring)을 구현하기로 했습니다.
- 테스트 작성 (AST) → "이렇게 동작해야 해"
- 실행 로직 구현 → "실제로 문자열 찾기"
- 연결 부분 구현 → "모든 부분을 연결"
- SQL 파싱 추가 → "사용자 입력 받기"
- 개발자 도구(ast_builder) → "코드 레벨에서 더 쉽게 사용하기"
오프라인 모임
발대식

- 공통적인 행사가 마무리 되고, 팀끼리의 시간에는 멘토단과 프로젝트의 간단한 소개 및 모든 멘티의 자기 소개로 발대식을 진행했습니다.
- 위 사진은 발대식에서 오픈 업이 준비해준 드론 체험기 사진입니다. 좌측 게임은 9개의 타일을 드론으로 눌러서 하나의 색으로 변경하는 게임으로 해당 날에 참여한 사람 중 가장 잘한다는 칭찬을 받았습니다. 우측은 드론을 이용한 인형 뽑기입니다. 여기에서 귀여운 문어 인형을 뽑을 수 있었습니다. 해당 행사 덕분에 같은 팀 멘티와 친해질 수 있었고, 행사 날에 나온 쿠키와 커피가 정말 맛있었습니다.
모각코(모여서 각자 코딩)
모각코는 보통 멘토님들의 주도 하에 오픈업에서 주말 토요일 또는 일요일에 매주 진행 되었습니다.
1주차

- 팀원끼리의 네트워킹을 진행했고, 서로의 관심사를 나눴습니다. 이후 친해지고 난 뒤에는 프로젝트 소스를 다같이 가볍게 보면서 전체적인 호름을 들을 수 있었습니다.
- 가장 뒤 왼쪽에 일어서서 브이하고 있는 게 접니다.
2주차

- 기본적으로는 자신이 할 일을 진행하며, 프로젝트 또는 요즘 기술의 트렌드 등의 정보를 얻을 수 있었습니다. 저 같은 경우는 Rust라는 언어를 어떻게 어디까지 공부하고, 어떻게 기여하는 것이 좋은지 얻어갈 수 있는 좋은 경험이었습니다.
- 가운데 쯤에 일어나 있는 사람이 저입니다.
4주차

- 자신이 할 일을 진행하며, Challenges를 마무리 하며 소감이 어땠는지, 어떻게 접근하고 있는지 간략하게 다시 한 번 확인하는 과정을 거쳤습니다.
- 우측 라인 뒤에서 두 번째가 접니다.
온라인 모임
자기소개

상세한 자기 소개를 통해 프로젝트에 기여하는 측면 외에 윤재상이라는 사람을 더 알리려고 노력했습니다. OSSCA는 단순히 기여하는 것 뿐 아니라 네트워킹을 통해 팀을 단단하게 이끌어가는 부분이 중요하다 생각했습니다. 때문에 다른 멘티 분들과 교류하기 위해 스터디나 평일 모임을 주도적으로 만드려 했습니다.
Rust 언어 및 git 스터디 모집 및 진행

- 스터디 프로젝트 Repository https://github.com/brixxt27/rustlings/tree/main
오픈소스 프로젝트에서 사용하는 Rust 언어와 오픈 소스 필수 역량인 git 스터디 모집을 진행했습니다. GlueSQL의 정해준님, 권현민님, 함윤주님과 함께 진행했습니다.

해당 스터디는 온라인에서 진행 되었으며, 스스로 자신이 공부한 내용을 정리하여 github 등에 정리하고, glueSQL 전용 discord 채널에서 보고하는 방식으로 진행했습니다. 해당 스터디는 처음 겪는 Rust란 언어와 친해질 수 있도록 도와주웠고, 다른 동료들은 어떻게 공부하는지 팁을 얻을 수 있었으며 함께 공부한다는 느낌을 받아 더 자극이 되는 시간이었습니다.
기여 활동 내역
INSTR 함수 구현 이슈 등록

gluesql 레포지토리에 이슈를 등록했다. SQLite 기준의 INSTR이라는 함수 구현에 대한 이슈입니다. 제가 어떤 문제를 갖고 있고, 이를 어떻게 해결할 것인지에 대해 정의해둔 문서입니다.
INSTR 함수 구현 및 PR 등록
GlueSQL의 SQL 처리 과정을 단순화 하면 다음과 같습니다.
- Parser: SQL 텍스트 → SQL Parser AST (sqlparser 라이브러리)
- Translator: SQL Parser AST → GlueSQL AST
- Planner: GlueSQL AST → 실행 계획
- Executor: 실행 계획 → 결과
해당 과정을 거쳐 구현을 완료했고, 다음과 같은 PR을 최종적으로 올리게 되었습니다.
- Pull Request URL: https://github.com/gluesql/gluesql/pull/1733
해당 문서는 Issue에서 정의한 문제를 해결하고, 이를 어떠한 과정으로 진행했는지와 프로젝트에서 정해둔 조건을 만족하는지를 확인할 수 있는 문서입니다.

현재는 모든 조건을 만족했으며, 리팩토링과 필요한 테스트를 추가하여 merge할 예정입니다.
에러 사항
원본 repository에서의 작업
이후 해당 repository에 commit 및 push를 하려 했는데 권한 문제 때문에 되지 않았다. 생각해보니 나는 collaborator가 아닌데 repository 원본에서 브랜치를 나눈 뒤 push를 하려 했다.
~/cod/gluesql implement-instr-function ❯ git push origin implement-instr-function
remote: Permission to gluesql/gluesql.git denied to brixxt27.
fatal: unable to access '<https://github.com/gluesql/gluesql.git/>': The requested URL returned error: 403
그래서 미리 fork해둔 repository를 다시 clone에서 작업을 진행했다.
cargo fmt -- --check 에러
형식을 맞추지 않아 발생한 에러가 있었다. 기존 코드를 참고하여 다시 변경하였다.
cargo clippy --all-targets -- -D warnings 에러
to_string()과 to_owned()의 차이 때문에 발생한 에러를 해결했습니다. 둘은 같은 기능을 하지만, 의미론적으로 소유권을 얻는다는 것을 더 나타내는 to_owned을 프로젝트에서 사용하기 때문에 해당 함수로 변경했습니다.
Challenges 활동 소감
Challenges는 처음으로 제가 개발자로서 오픈소스에 기여할 수 있었던 시간입니다. 항상 저는 제 프로젝트에만 보면서 살아왔습니다. 그러면서 그 동안 사용했던 여러 오픈 소스 라이브러리, 프로그램 등 결국 이렇게 누군가의 노력으로 인해 만들어졌다는 것을 깨달았고, 다시금 오픈소스의 중요성을 깨달았습니다. 이런 오픈소스 문화가 없었다면 개발자들은 유료 프로그램을 사든가 돈을 내기 싫다면 자신이 직접 반복적인 코드를 작성해야 했을 겁니다. 그렇다면 지금과 같은 개발 생태계의 발전은 이루지 못했을 것이라 생각합니다.
앞으로도 기회가 된다면 Masters에 참여하여 더 활발한 활동을 스스로 기대하고 있고, 아쉽게 친해지지 못한 다른 동료들과 더 많이 대화할 수 있는 시간을 가질 예정입니다. 항상 오프라인 모임 열어주시고, 시간 내서 지식 공유를 해주시는 우리 GlueSQL 멘토님들, 그리고 이를 열심히 따라가는 주위 동료들, 오픈업 센터 관리해주시는 스태프님들에게 감사의 말씀 드립니다.
'개발 일지' 카테고리의 다른 글
| 개발자가 하드웨어를 공부해봤다 - 메모리 계층 구조 (0) | 2025.09.24 |
|---|---|
| HTTP'S'에서 S를 떼어내어 작동 방식을 조금 더 파보았다 (1) | 2025.09.20 |
| 제 5회 프로그래머스 데브 코스 커리어 TALK, 취업을 앞당기는 실전 전략과 취업 인사이트 후기 (0) | 2025.07.07 |
| socket.io의 특징과 장단점 (0) | 2024.08.02 |
| socket.io 서버 소켓에서 연결된 클라이언트 소켓 ID와 입장한 room을 찾는 방법 (0) | 2024.08.02 |