IT & CODE 이야기

한학기 커뮤니스 활동을 되돌아보면서 본문

CODE/My Project

한학기 커뮤니스 활동을 되돌아보면서

Karoid 2017. 10. 6. 21:23

한학기 커뮤니스 활동을 되돌아보면서

커뮤니스를 시작하게 된 계기: 실력이 되지 않는 학습

“휴학도 했는데 무엇을 하고 지내면 좋을까?” 대학교 4학년인 저는 올해 휴학을 하게 되면서, 모처럼 주어지지 않는 자유시간을 무엇으로 채우며 지낼지 고민에 빠졌습니다. 여러가지 고민을 하던 중 재작년부터 관심이 생긴 컴퓨터 프로그래밍 공부를 하나하나 해가면서 들었던 고민이 떠올랐습니다. 전부터 컴퓨터 프로그래밍에 관심이 있었던 저는, 혼자 책을 사서 Javascript의 세계에 발을 담그기 시작한 후, 웹 개발 쪽으로 영역을 조금씩 확장해가고 있었습니다. 혼자서 공부를 하고 난후에는 작은 프로젝트를 만들었습니다. 웹사이트를 만들고, 작은 게임을 만들어보고, 서버환경을 구축해보면서 실력이 향상되는 것을 느낄 수 있었습니다. 하지만 작은 프로그램을 만드는 단계까지는 쉽게 실력이 향상되었지만 그 이후에 정체기가 찾아왔습니다. 좋은 구조를 통해 가독성을 높이고 코드 재사용율을 높이는 수준의 실력은 잘 향상되지 않았습니다. 그러던 중 이전에 페이스북에서 읽었던 글이 생각이 났습니다.

이 글을 쓰신 분은 rellat 이라는 프로젝트를 구상하여 실행에 옮기셨지만, 제가 생각했던 오픈소스를 이용한 학습과는 거리가 있는 방식이었습니다. 아이디어의 도입부는 같았지만 결론이 달랐죠. 그분은 Rellat이라는 서비스로 오픈소스를 통한 학습이 실현될 수 있다고 생각했고, 저는 단체를 통해 그 수요를 충족할 수 있으리라 생각했습니다.

커뮤니스의 구상: 세상에 기여하는 커뮤니스

이러한 아이디어가 떠오르자 저는 곧바로 새로운 단체 Communis의 구상을 시작하였습니다. “오픈소스란 결국 지적재산은 사유되지 않아야 한다”는 카피레프트 운동으로 시작되었지만, 현재 우리 모두에게 이익이 되는 공공재라고 생각하였습니다. 그래서 “공동체”라는 의미를 지닌 “community”를 변형한 단어인 Communis로 단체명을 정하고, 단체의 목표를 “오픈소스로 세상에 기여하는 모임”으로 설정하였습니다. 참여자들은 개인적인 “학습”의 목표로 오픈소스를 읽기 시작하여, 궁극적으로 오픈소스 커뮤니티에 기여할 수 있는 사람들로 성장하는 단체를 꿈꾸었습니다.

사실 아이디어는 매우 그럴듯해 보였지만 사람들이 이 아이디어에 대해 어떻게 반응할지 매우 궁금했습니다. 과연 이 단체에 들어올 수요가 존재할지 의문이 들었던 저는 사람들의 반응을 살펴보기 위하여 저의 상황과 비슷한 지인들에게 제 아이디어를 소개하고 반응을 살펴보았습니다. 그리고 조사해본 결과 많은 사람들이 함께하고 싶어한다는 것을 느꼈습니다. “오픈소스”와 “교육”이라는 생소한 조합에 사람들은 많은 관심이 있다는 것을 확인한 저는 본격적으로 구체적인 계획에 들어갔습니다. 우선 사람을 모으기 위해서 어떻게 할지 고민하던 중 생활코딩이라는 페이스북 페이지에 수많은 사람들이 본다는 사실을 기억하였습니다. “혹시 이 페이지를 보는 사람들도 커뮤니스에 관심을 가지지 않을까?”라고 예상해서 온라인으로 사람을 모으기로 결정하였습니다. 또한 운영도 온라인 팀과 오프라인 팀을 병행으로 운영하여, 같은 팀인 사람들끼리 같은 언어를 사용해서 오픈소스를 학습 및 작성하도록 하는 구상을 하였습니다.’

아이디어의 홍보, 그리고…

뼈속까지 공돌이인 제가 홍보물을 제작하려고 하니까 막막한 생각이 들었습니다. 본격적으로 사람을 모으기 위해서 컨셉 색상과 로고를 디자인하였는데, 거친 원형모양의 로고와 주황색을 컨셉 색상으로 정한 후 얼마전에 배운 일러스트레이터로 홍보물을 만들기 시작했습니다.

사실 이때만 해도 얼마나 많은 사람들이 이 홍보물을 보고 지원할 지 의문이 들었습니다. 저에게 있어서 커뮤니스는 일종의 되면 좋고 아니면 어쩔 수 없는 실험이었습니다. 이전에 이미 있는 단체의 대표를 해본적은 있었지만, 아무도 없고 저 혼자만으로 하나의 단체를 만드는 경험은 이전에 해본적이 없기 때문이었습니다. 그럼에도 불구하고 이때 당시 제가 이런 시도를 할 용기를 얻었던 이유는 사실 제가 보아왔던 단체가 어떻게 생존하면서 성장하는지, 그 매커니즘을 관찰해왔기 때문입니다. “내 손으로 내가 원하는 서비스를 만든다”는 모토를 가진 “멋쟁이 사자처럼”이라는 단체가 어떻게 성장해 나갔는지가 저에게 있어서 가장 큰 롤 모델이었습니다.

친구들과 개강 직전 일본여행을 준비하던 날, 저는 제 아이디어를 담은 홍보물을 생활코딩이라는 그룹에 올리게 되고, 몇 명이 보았는지를 나타내는 그래프를 보면서 매우 놀라고 말았습니다. 수천명이 보기 시작하더니 다음날 오천 명이 게시글을 보았다고 알려 주었습니다. 이 페이지에 아무리 코딩에 관심이 있는 사람이 많다고 하더라도, 믿기 힘든 수치였습니다. 같이 일본 여행을 가는 컴퓨터 관련 지식이 없는 제 친구들에게도 전에 제 아이디어를 말했을 때 아리송하게 생각했는데, 페이스북 조회수를 보고 놀라는 눈치였습니다. 이후 그래프는 2만명을 돌파하였고, 저는 이 아이디어의 수요를 느낄 수 있었습니다.

홍보 결과가 이렇게 나오다 보니 이제 이 일을 본격적으로 해야 되겠다는 생각이 들었습니다. 기존에 있던 구체적인 계획에 친목을 보완할 MT와 최종적인 결과물이 어느정도 나오는 시점에는 발표회도 가질 계획을 세웠습니다. 그리고 지속적으로 사람들이 관심을 가질 만한 게시물을 올리면서 페이지 좋아요 수도 늘여 나갔습니다.

동아리원 모집과 합격발표

동아리원을 모집하면서 단순하게 “대학생”이어야 한다는 조건을 걸고 모집하기 시작했습니다. 그 이유는 사실 단순하게 제가 경험한 조직은 대학생들의 동아리였기 때문이었습니다. 더 나이가 많으신 분들이 포함된 모임을 주도할 자신이 없었습니다.

두번째 조건은 프로그래밍 언어를 한가지 이상 할 줄 알아야한다는 조건이었습니다. 오픈소스에 기여를 하기 위해 프로그래밍부터 학습을 하는 것은 너무 오래 걸리는 일이라는 생각을 하였고, 이 모임이 완전 입문자부터 받아들이기에는 성격이 안 맞는다고 생각했습니다.

위와 같은 조건을 걸고 모집을 시작한 결과 많은 사람들이 홍보를 통해 관심을 가졌고, 관련해서 문의하는 메시지도 많이 받을 수 있었습니다. 대부분의 메시지는 자신의 나이를 알려주시면서 모집에 지원할 수 없냐는 질문이 많았고, 그 다음으로는 프로그래밍을 아예 할 줄 모르는 사람도 모집하느냐는 질문이었습니다. 아직도 일본 여행을 같이 준비하는 친구들과 같이 중국집에서 짬뽕을 먹고 있는데, 핸드폰이 불이 난 것처럼 울리던 기억이 납니다. 저에겐 이전에 경험하지 못한 관심이었고, 제 기획으로 인해 이렇게 쉽게 많은 사람이 관심을 가질 수 있다는 사실이 신기했습니다.

미리 작성했던 구글 폼을 공개한 이후부터 많은 사람들이 지원을 해 주셨는데, 다양한 지역, 다양한 학과, 다양한 프로그래밍 언어를 알고 계신 분들이 지원해 주셨습니다. 폼을 연지 조금 지나니까 30명이 지원해 주셨고, 시간이 지나 여행을 가게 되었을 때 마지막 마감을 하고 보니 101명이 지원해 주셨습니다. 수많은 사람들이 신청을 해주시다 보니 하나하나 지원자들의 지원 내용을 읽고 선발하는 것도 여간 어려운 일이 아니었습니다. 몇 명을 뽑을지도 많은 고민이 필요했고, 지역과 언어를 고려해서 뽑을 수 밖에 없었습니다.

OT 그리고 불참

사람들은 3배수인 30명을 어떤 언어를 사용하는지를 고려해서 각 팀별 인원이 균등하게 되도록 선발하였고, 오프라인 5팀 온라인 2팀으로 같은 언어를 사용하는 사람들끼리 묶어서 선발하였습니다. 지원서를 어느정도 분석하고 나서는 문자를 보내기 시작했습니다. 인터넷으로 대량 발송 기능을 이용해서 떨어지신 분과 붙으신 분께 문자를 발송하고 나니, 여러 번호로 답장이 오기 시작했습니다. 그 중에서 가장 많이 온 답장은 “어디에서 온 문자이죠?” 였습니다. 여기서 사실 문제를 직감했습니다. 단순하게 구글 설문지 단답형 답변을 받다 보니 관심이 많은 사람과 관심이 아예 없는 사람을 구분하기 쉽지 않았습니다. 선발 기준에 커뮤니스 활동에 대한 관심도는 고려되지 않고 선발하다 보니, 관심이 없는데 밑져야 본전이라는 생각으로 지원서를 작성하신 분들은 합격을 하더라도 본인이 지원한 사실조차 잊어버렸습니다. 불길한 느낌을 거둬들이고 우선 뽑힌 사람들을 카카오톡 방에 초대하여 OT에 대한 공지를 하고 OT 준비를 하기 시작했습니다.

그리고 커뮤니스 OT를 시작했습니다. 서울 지역에 살지 않는 사람을 위해서 온라인과 오프라인 두 회에 걸쳐서 OT를 진행했습니다. 먼저 오프라인 OT는 수요조사 이후 강남역의 스터디룸을 빌려서 진행하였습니다. 3월 18일 강남역 스터디룸 까페에서 오프라인 OT를 참석하겠다고 하신 분은 총 10명이었고, 카페를 대여해서 기다렸지만, 나타난 인원은 3명뿐 이었습니다. 나머지 7분중 일부는 일이 빨리 끝나지 않아서 참석할 수 없는 의사를 밝혀 주셨고, 일부는 연락을 하지 않고 참석하지 않았습니다. 정말 빈틈없이 준비하려고 하였지만 막상 상황이 닥치니 제 계획대로 되지 않았습니다.

그리고 다음날 오프라인 OT는 유튜브 라이브로 진행을 하였는데, 준비한 피피티와 설명 자료를 설명을 시작하는 시간에 절반정도의 인원만 참여해 주었습니다. 이전에 느꼈었던 대로 모집부터가 온라인이고, 활동도 온라인의 비중이 있다 보니, 열의가 있는 사람을 걸러내지 못하고 진행하는 것이 화근이었습니다.

OT의 내용은 먼저 아이스브레이킹용 소재로 저 자신에 대한 소개로 시작을 했습니다. 그러고 나서 커뮤니스라는 단체의 목표와 정의를 알려드리고, Communis는 오픈소스에 기여하는 모임이라는 것을 알려 드렸습니다. 이어지는 설명으로 커뮤니스의 계획에 대해 알려드렸습니다. 당시 계획상 앞으로 생성되게 될 4가지 언어인 Ruby, Python, Java, Javascript 각각의 언어에 대한 팀이 만들어지고 그 팀에 모두가 속하게 됩니다. 또한 8월 30일 커뮤니스 1기의 활동이 종료됩니다. 각 팀의 운영은 각 팀의 자율로 맡기며, 팀마다 팀장을 뽑아 전체 온라인 회의에 참석하는 방식으로 전체 운영을 하게 됩니다. 팀을 운영할 때는 가이드라인이 있는데 다음 다섯가지가 있습니다. -오픈소스 라이브러리 분석 - 생성/기여 목표 설정 및 기획 - 코드 작성 - 테스트/배포 - 피드백을 기반으로 업데이트 이렇게 총 5가지 단계가 그 가이드라인입니다. 그리고 제가 매 주마다 언어에 상관없이 도움이 될 법한 강의를 올려서 회원들이 자유롭게 강의를 참고할 수 있도록 운영합니다. 이런 계획을 소개한 후 첫 번째 단계인 오픈소스 라이브러리를 분석하기 위해서 깃허브에서 오픈소스를 찾아오는 것을 첫 번째 과제로 알려드렸습니다.

그 이후 지원서의 내용에 맞춰 프로그래밍 언어에 따라 나눈 팀을 회원분들에게 알려드렸습니다. 그랬더니 세 가지 문제가 생겨났습니다. 어떤 분은 이번 학기가 바빠서 참여하기 힘들 것 같다고 말해주시고 나갔고, 또 다른 분은 자신이 배정된 팀의 언어보다는 다른 언어로 오픈소스를 학습하고 싶다고 말했습니다. 일부 사람들은 오프라인 모임을 원치 않기도 했습니다. 팀의 이전을 원했던 겁니다. 이때부터 계획했던 일이 틀어지기 시작했습니다. 각 팀의 인원이 중구난방이 되면서 몇몇 팀은 아예 사라지는 수준으로 이탈이 되자, 팀을 재조정 할 수밖에 없게 되었습니다. 사용 언어와 오프라인을 가능케하는 활동 지역 두가지 변수 중 하나를 버릴 수 밖에 없었고, 결국 활동하는 지역을 포기하고 사용하는 언어별로 사람들을 묶었습니다. 그래서 처음 의도했던 대로 최대한 많은 팀을 오프라인으로 만든다는 계획이 실현되지 않으면서 온라인 팀이 다수 만들어졌고, 한주가 지나자 30명이었던 총 인원은 절반 이상이 나가면서 총 4팀만 남게 됩니다. 부산 Java팀, 온라인 Python 팀, 온라인 Ruby 팀, 온라인 JS 팀 이렇게 4팀이 결성되었습니다.

온라인과 오프라인 팀 활동 시작

저는 4개의 팀 중에서 Ruby 팀에 속하게 되면서, 본격적인 활동이 시작되었습니다. 첫 주차의 중앙 강의 영상은 “이 세상에는 어떠한 라이선스가 존재할까?”라는 주제로 오픈소스 라이선스에 대한 영상을 찍었습니다. 구체적으로 MIT 라이선스, BSD 라이선스, GPL 라이선스 세가지 오픈소스 라이선스의 특징과 그 라이선스를 가진 프로젝트를 사용하거나 기여할 때 주의점에 대해서 설명했습니다. 그리고 1주차에 선출된 팀장님들과 함께 통화로 회의를 진행했습니다. 4개의 팀이 대체로 처음에는 잘 돌아갔었는데, 그 중에서 Ruby와 Python 팀은 각각 하나의 라이브러리를 정해서 읽고 공부를 하는 계획을 세웠고, Java팀과 Javascript팀은 오픈소스를 정하지 못하고 우선 기본적인 사항들을 공부하기로 결정했다고 알려왔습니다.

문제는 2주차부터 드러났습니다. 팀장님들은 의욕이 있으셨지만 각 팀원들의 상황을 그러지 않았습니다. 주동자인 제가 참여하지 않아서인지 JS팀은 한 분이 나가서 3명이서 팀을 진행하게 되었고, Python팀은 오픈소스 분석보다도 바로 기여를 하고 싶어하는 눈치였습니다. 확실히 처음부터 일을 크게 만들어서인지 어수선한 분위기가 연출되었습니다. 2주차 영상에서는 본격적으로 “오픈소스에 기여해요”라는 주제로 전체강의를 찍었습니다. 오픈소스에 기여하기 위해서 초창기 아이디어였던, 오픈소스를 분석하는 작업을 돕기 위해서 제가 같이 속해있던 Ruby팀의 진행사항을 알려드리고 진행 가이드라인을 잡았습니다. 그리고 본격적으로 기여를 하기 위해서 알아야 할 지식인 버전 관리시스템 Git과 유명 원격저장소 Github를 소개해드리고 Fork, Commit & Push의 개념에 대해 소개를 해드렸습니다. 그리고 가장 중요한 마지막으로 기여를 하기 위해서 필수적인 Pull Request에 대해서도 소개를 해드렸습니다.

그리고 시험기간에 돌입하기 전인 3주차에는 확실히 안정된 모습을 보였습니다. 각 팀들의 구성원이 모두 100% 출석을 하며 어느정도 자리가 잡혔다는 생각을 했습니다. 각 팀의 구성원이 이제 대략 3명정도 되었지만 의지가 있는 분들만 남아서인지 분위기는 괜찮아 보였습니다. 대부분의 팀들은 아직 라이브러리를 분석하고 있었고, 제가 속해 있는 Ruby팀만이 어떤 새로운 라이브러리를 만들지 구상 중 이었습니다. 3주차 전체강의는 마크다운 문법에 대한 강의를 했습니다. Github 개발 문서를 작성할 때 마크다운 문법이 쓰였기 때문에 개발자가 쉽고 편하게 개발 계획 문서나 설명하는 문서를 작성할 수 있도록 마크다운 문법에 대한 영상을 찍어서 강의했습니다.

저는 이 활동이 대망의 4주차에 결론이 나리라 예상 했습니다. 왜냐하면 3주차 이후에는 중간 고사기간이 있었고 대부분이 대학생이었던 구성원들은 시험이 끝나고 다시 모일만큼의 매력을 이 모임에서 느끼지 못하면, 팀들이 와해될 것이라고 생각했기 때문입니다.

커뮤니스의 활동 중단 선언

그리고 3주차 이후 3주동안 커뮤니스 활동을 중단한 후, 4월 27일 회의를 한 결과 Ruby, Java 팀을 제외한 나머지 팀들이 모두 활동을 하지 못하게 되었다는 소식을 전했습니다. 그리고 다음주에는 Java팀마저 활동을 중단하게 됩니다. 제가 속해있는 Ruby 팀을 제외한 모든 팀이 활동을 멈추면서 사실상 공식적인 커뮤니스 활동은 중단되게 됩니다.

실패의 원인과 그 의미

커뮤니스 활동은 사실 처음의 기획에는 많은 분들께서 반응해 주셨지만, 구체적인 실행 계획에 있어서는 철저하지 못했습니다. 구체적인 실패 원인을 나열해보자면

  1. 오프라인 모임의 중요성을 간과했다. 멋쟁이 사자처럼의 성공 케이스를 보고 첫 시작을 너무 무모하게 끊었습니다. 모집도, 활동도 온라인인 분들이 대부분이게 되어버렸고 결국 전체로써의 영향력이 미치지 않게 되어 많은 사람들이 중간에 활동을 포기하게 되었습니다. 사람들은 커뮤니스의 실체에 대해서 의구심을 품었고, 모두가 처음이라는 사실이 그들을 떠나가게 만들었습니다.
  2. 활동을 정말 원하는 사람을 선발하지 못했다. 온라인 서류접수만으로 사람을 모집한 것이 큰 패착이었습니다. 아무리 페이스북 상에서 좋아요가 많이 있었더라도 그들은 그냥 쉬운 터치 한 번이었을 뿐, 그것이 곧 모든 지원자의 열의를 대변하는 것이 아니었습니다. 처음 시작하는 모임이라면 적어도 열의가 있는 정예 맴버로 꾸렸어야 했다는 생각을 했습니다. 열의라도 제대로 보기 위해서는 면접이 필요했고 저는 편의를 위해 지원자의 실력만을 본 것은 잘못이었습니다.
  3. 운영진이 없었다. 사실 모든 것을 저 혼자서 해결해보려고 했던 것이 잘못이었습니다. 처음부터 예상하고 있었지만 그래도 만일 개인적으로 알고있는 운영진이 존재했더라면 분명 결과가 달랐을 것이라고 생각합니다. 위의 세가지 원인 때문에 일반 회원들이 느꼈던 부담감은 곧 탈퇴로 이어졌고, 커뮤니스는 중간에 멈출 수밖에 없었습니다.

커뮤니스 차기 운영 구상

  1. 나이, 언어제한을 없애고 지역제한을 한다
  2. 서류심사 후 면접을 도입해서 임원을 임명한다.
  3. 회칙을 만들고 정기 모임장소를 정한다.
  4. 활동비를 미리 고지하여 책임감 있는 사람만 오게한다.
  5. 멘토를 구할 수 있다면 구한다.
  6. 한학기의 목표는 오픈소스를 읽는 것에 둔다.
  7. 문서 작업을 용이하게 하기 위해 서식을 미리 만들어 놓아서 지속적 학습을 다같이 공유하게 한다.


'CODE > My Project' 카테고리의 다른 글

Melting Talk  (0) 2020.05.13
데이터베이스 시스템 기말과제  (0) 2018.04.14
Mandalart 기획초안  (0) 2017.05.22
대학생 연합동아리 Communis를 소개합니다  (2) 2017.02.24
Universe War  (0) 2017.02.02
Comments