대안언어축제를 마치고

사진 중 일부는 박영창씨가 촬영한 것입니다.

2달 전쯤에 블로그에 그냥 버스타고 왔다갔다 하던 꿈을 올렸던
“기민한 언어의 날”
행사가 드디어 현실이 되었습니다.
“대안언어축제”라는 이름으로
8월 20일,21일 양일간 강원도 홍천에 있는 대명비발디파크에서
열렸습니다. “뭔가 하긴 했구나!” 생각이 들어서 참 다행입니다. 🙂

기획/준비 단계

대안언어축제의 첫준비는 6월 23일 강남역에서 있었습니다.
당시에 관심을 보여주신 10분이 모여서 행사의 이름을 정하고,
어떤 형식의 행사가 될지, 내용은 어떤 것을 다룰지, 목적은
어떤 것인지, 행사날짜 등을 정했습니다. (놀랍게도 첫번째
모임에서 날짜가 확정이 되어버렸지요!)

그 이후로는 초기의 “통사” 그룹 분들이 다들 바쁘신데다, 리더격을
정하지 않다보니 제대로 굴러가지 않아서 몇번 만남이 띄엄띄엄
있었습니다. 그래서 결국은 7월말까지 거의 결정된 것 없이
시간이 지나가게 되었는데, 그때
자원봉사자들을 뽑기 시작하면서
자봉분들의 활발한 준비로 장소와 준비물 등이 진행되기 시작하였습니다.
그러나 장소는 여러가지 문제때문에
행사 11일 전에서야 결정이 되었고, 아무래도 이런 형식의 행사가
처음이다보니 시간이 많이 걸려서 행사 직전까지 자봉들은
거의 매일 회의를 해야 할 정도로 바쁘게 준비되었습니다.

행사 전날 선발대 활동

행사 전날인 8월 19일에 미리 가서 행사 준비를 하는 선발대A팀과
진흥원지원부분인 간식과 문구류를 사서 가는 선발대B팀이
출발했습니다. 자봉, 통사, 발표자와 진흥원에서 지원해주시는
이재경씨를 합해서 모두 12명이었습니다.

비발디파크에 도착해보니 참 바깥 경관이 좋아서, 뭔가 컨퍼런스만 하고 있기에는 아깝다는 생각이 좀 들더군요. 크.. 하여간, 얼른 준비 숙소가 있던 오크동 8층에 짐을 풀고, 준비를 시작했습니다. 불과 하루밖에 남지 않았는데 준비가 안 된 것이 많아서 여러모로 불안했는데, 작은 인덱스 카드에 작업을 나눠서 하다보니 사람이 많아서 생각보다 금방금방 끝나더군요. 🙂

저녁엔 본 행사장인 에메럴드룸으로 옮겨서 다음날 개회식에서 쓸
대안언어 도미노를 만들었습니다. 많은 분들이 여러개의 언어로 열심히 만드셔서, 저는 그냥 awk만 만들었습니다. 너무 짧아서 뻘쭘;; _-_

행사 첫날 13:40 – 개회식

드디어 행사 첫날이 되었고, 막판 개회식 준비로 다들 여념이 없었습니다. 역시 바쁘면 안 되는게 많아서.. 도미노는 제대로 안 굴러가는데 막 서울에서는 차가 하나도 안 막혀서 30분 일찍 도착한다고 하니 참 애가 타더군요. 므흐..

막상 주자분들은 일찍 오시는데, 네트워크 설치하는 업체에서는 팔당댐에서 차가 막혀서 3시간째 못오고 있다고 하고.. 그런데 세션이 있는 작은 방들에서는 네트워크 필요한 세션들이 다들 첫번째 세션으로 잡혀있고.. 거의 패닉 상태에 갈 무렵, 30분 정도 지체가 돼서 네트워크 업체가 드디어 도착해서 세팅을 하고 간신히 시작을 했습니다. 원래 주자분들을 도착하자마자 숙소로 안내할 예정이었지만 그마저도 비발디파크측에서 이전 체크아웃 시간이 늦어서 3시는 돼야 들어갈 수 있다고 그러고.. 행사 초기에는 일정 변경이 굉장히 심각했지만, 그래도 별 탈없이 지나갔습니다. ^^;

행사 첫날 15:00 – 첫 번째 멀티트랙 세션

제가 맡은 발표세션인 “동적 네임스페이스”는 별로 이름부터 크게 재미있어 보이지 않는 주제로, 아무래도 썰렁하지 않을까 생각하고 조마조마 세팅을 마치고 기다리고 있었습니다. 흐흐. 처음에 딱 2분이 들어오시고 한 5분동안 썰렁~해서 으하하하 웃으며 있었는데, 알고보니 일정이 쭉 밀려서 늦게 시작한다고 하더군요. 흐흐 그래서 작은 방이 꽉 차게 많은 분들이 오셔서 조금 부담이 되었습니다. ^^; 그런데, 준비를 크게 많이 못해서 그런지 참 설명이 여러모로 꼬여서 고생을 많이 했습니다. 전에도 몇번 리허설을 꼭 해야지 생각을 했는데 이번에도 리허설 안하고 그냥 했다가 낭패를 –;

다행히도 이번 축제에서는 발표 세션에서 발표의 비중을 크게 줄이고 대부분을 페어 실습으로 하는 방향으로 미리 발표자 논의에서 정해두었기 때문에 끝 30분정도를 그냥 실습으로 슬쩍.. 흐흐.. 주자분들이 생각했던 것보다 훨씬 파이썬을 많이 하고 계시고, 파이썬을 안 하는 분들도 쉽게 적응하시는 것 같아서 무척 즐거웠습니다. 🙂

행사 첫날 16:30 – 두 번째 멀티트랙 세션

그 다음에는 두 번째 멀티트랙 세션으로 Ajax와 Esoteric Langauge를 했습니다. 저는 퍼즐릿님이 진행하신 Esoteric쪽에
참가를 했는데, 처음으로 한글로 하는 난해한 프로그래밍 언어 “아희”로 프로그램을 하느라 아주 쏙 빠져서 한참을 “밯맣희”이런 코드를 입으로도 읽고 손으로도 치고 하면서 즐거워했습니다.
거의 20명 넘는 분들이 다같이 “아희”코드를 짜면서 으아아아~~
하고 있는 것을 옆에서 보고 있으려니 정말 재미있었습니다.;;

행사 첫날 20:00 – 코드레이스/코드챌린지/마인드스톰

저녁을 먹고 멀티트랙 놀이시간에 들어갔습니다. 코드레이스는
통사들이 해설과 진행을 맡고 4~5명으로 구성된 팀들이 계속
추가되는 요구조건을 만족시켜가며 순간 순간 점수를 받아서
최종적으로 점수를 많이 받는 팀이 이기는 게임이었습니다.
중간에 요구사항 변경을 팀들이 직접 발표할 수도 있고, 자기의
요구사항 변경을 10분안에 구현하지 못하는 경우의 감점 같은
여러가지 점수 제도 때문에 참가하는 팀이 재미있게 할 수
있었습니다. 또한, 스타리그 중계처럼 앞에 3명이 앉아서
각 팀의 순간순간 전황을 해설하며 얘기를 하고 있는 것도
재미있고, 앞으로도 많이 발전할 수 있는 게임이 확실합니다. 🙂
그런데, 아무래도 코드레이스를 좁은 방에서 참가자들만
있는 채로 해버려서 관중이 없어서 해설해도 공중에 하는
것이다보니 별로 말을 못해서 약간 그렇더군요. 크흐.

옆 방에서는 코드 챌린지와 마인드스톰을 했다고 합니다. 가 보지는 않아서 잘 모르겠지만.. ^^; 코드 챌린지는 여러 정보경시대회 스타일의 문제를 힌트로 해서 숨은 URL 찾기를 하는 놀이인데, 나중에 참가자들의 말을 전해 들으니, 재미있게 진행된 것 같았습니다. 🙂 상품도 좋고~ 마인드스톰에서는 원래 뭔가 만들기를 하려고 했는데, 자봉/통사 중에서도 아무도 마인드스톰을 해 본 사람도 없는데다가, CD를 빼먹고 오는 바람에 결국은 레고놀이로 했다고 합니다 흐흐;;

행사 첫날 22:00 – 양과 치타또는 늑대 놀이

밤 시간에 원래 하려고 했던 장기자랑이 아무래도 분위기를 식힐 것 같다는 판단에, 대신 치타와 양 (몇몇 팀은 늑대와 양) 놀이를 했습니다. “땀 안 흘리는 야외 놀이”를 할 예정입니다. 라는 말에 주자분들은 얼떨결에 밤에 밖에 맨손으로 나가셔서 어리둥절했지만, 규칙을 설명해 드리고 게임을 하고 있으니 막 재미있다고 계속 하자는 분도 계시고.. 🙂 프로그래머들 아니면 누가 이런 게임을 할까 싶지만 프로그래머들에게는 정말 재미있는 게임이었습니다!

행사 첫날 23:15 – OST (Open Space Technology)

첫날의 마지막으로 OST 시간을 가졌습니다. OST는 1200명까지 토론을 할 수 있는 집단 토론 기술로, 벌과 꽃의 메카니즘 같은 재미있는 것을 수용한 재미있는 방법이라고 합니다. 🙂 우선 발제자들 몇 명이 나와서 어느 자리에서 뭘 토론합니다. 하고 화이트보드에 적고 가면, 사람들이 자기가 토론하고 싶은 곳으로 가서 토론을 하다가 아무때나 다른 곳에 가고 싶을 때 여기저기 왔다갔다 하면서 토론을 하는데, 중간에도 계속 화이트보드에 새로운 주제를 낼 수 있기 때문에, 짧은 시간 안에 많은 사람들이 다양한 주제로 토론을 할 수 있습니다. 결국은 프로그래밍 언어와 기호학 , 대안언어 회사에서 쓸 수 있나 같은 주제 외에도 커피에 대한 모든 것, 한국 개발자들의 노동 조건 같은 주제까지도 재미있게 이뤄졌습니다. 🙂

행사 두째날 10:30 – 세번째 멀티트랙 세션

두째날 아침에는 세번째 멀티트랙 세션으로 김창준님의 EDSL, 승범이의 Squeak이 있었습니다. 저는 DSL(Domain Specific Langauge)가 적용이 가능한 부분에 요새 관심이 많은 터라 EDSL에 참가하였는데, Squeak도 옆에서 들려오는 승범이의 낭랑한 목소리에 아아 아쉽다 아쉽다 하면서 있었습니다. 🙂

EDSL 세션에서는 기존 언어 문법을 거의 그대로 활용하면서도 DSL의 장점을 그대로 쓸 수 있는 방법을 배웠습니다. 실습시간에는 저는 C 선행처리자를 이용한 EDSL을 해 봤는데, CJKCodecs의 ISO2022 코덱이나 multibytecodec 구현에서도 C 선행처리자로 이것저것 지저분하게 많이 해 뒀는데, EDSL 개념을 알고 구현했으면 좀 더 보기 좋은 코드가 나왔을 것 같은 생각이 들더군요~

행사 두째날 12:00 – 폐회식

폐회식도 뭔가 대안적인 방법을 찾아보다가, 자봉단이 장시간 보리차를 마시면서 토의한 결과, 회고를 전지를 놓고 마음껏 그리고 쓰는 것으로 했습니다.
우선 테이블에 앉은 사람들이 글자로 좋았던 점과 개선되었으면 하는 점을 쓴 다음에, 다른 전지를 하나 받아서 크레파스로 말을 전혀 하지 않고 문자도 안 쓰고 그림만 가지고, 느꼈던 점과 다음 행사에 바라는 점 같은 것을 쓰는 것으로 했습니다. 그런데, 그림이 아주 기상천외한 것이 많아서, 다른 테이블 사람은 커녕 옆사람이 봐도 못알아보는 것이 많아서.. 무지 재미있었습니다. 크흐~

행사 두째날 12:30 – 점심식사, 기념촬영

토요일 점심부터 일요일 점심까지 모두 4끼를 먹은 곳은 메이플동 지하의 오리엔탈 익스프레스라는 곳이었습니다. 여기가 제법 비싸기는 하지만, 보통 게를 안 넣는 음식에다가 게를 계속 넣어줘서 인상이 깊었습니다. -ㅇ-; 마지막 점심에는 장어덮밥! 꺅~~;

되돌아보며

이번 행사는 국내에서는 전례가 없던 실험적인 포맷으로 가득 채운 행사이니 만큼 성공할 수 있을지에 대해서 무척 기대가 많았습니다. 특히, 계속 일정이 지연되면서 정작 추진은 안 하면서도 조바심나고 그랬었는데, 여러 자봉분들과 김창준님, 승범군의 헌신적인 준비로 얼마되지 않은 시간동안 큰 일을 이뤄낸 것 같아서 무척 기쁩니다.

코드레이스, 치타와 양 같이 이번에 특히 재미있었던 새로운 형식들은 앞으로 좀 더 재미있게 할 수 있을 것 같다는 확신이 들었고, 일반 세션들도 페어 실습의 비율을 계속 높이는 것으로 하품나는 지루한 발표에서 탈출할 수 있다는 것도 느꼈습니다.

로제타 카드를 이용한 활동이라던지 사람들끼리의 활동을 촉진하는 활동이 뒤에 나오기 시작해서, 앞에서 활발하게 활동하기가 힘든 분위기 였다는 점은 다음에 개선하면 좀 더 흥분되는 행사가 될 것 같습니다.

이번 축제 준비로 정말 수많은 시간과 노력을 한 통사, 자봉 여러분 정말 진심으로 감사하고 있습니다. 그리고, 주자 여러분들도 지금까지 가 본 어떤 행사보다도 열린 마음으로 능동적으로 참여해 주셔서 준비가 미흡했음에도 불구하고 축제가 성공할 수 있었던 점 한동안 잊지 못할 것 같습니다. 🙂

또한 참가비만으로는 도저히 꾸릴 수 없는 행사였기에, 재정적으로 대부분을 지원해 주셨던 한국소프트웨어진흥원과 진행에 많은 도움을 주신 이재경씨께도 참 고맙게 생각합니다. 다음에도 많은 지원 부탁드립니다.;; _-_

살다보면 늘 겪게되는 시스템 질문의 일반해

IRC나 메신저나 회사나 여러군데서 컴퓨터를 할 줄 안다는
이유로 워드 질문, 윈도우 세팅 질문, 인터넷이 왜 안되느냐 질문,
메일이 왜 도착 안 하느냐 질문, 다음넷에 왜 로그인이 안 되느냐 질문 등.. 별의 별 질문을 다 받습니다.
“내가 만든 것 아니라 몰라요” 라고 대답할 수도 없고.. -_-;;

하여간.. 그래서 지금까지 했던 답변 중 시스템과 관련된 질문 대부분을 커버할 수 있는
일반해를 하나 고안하였습니다. 시스템 질문 중의 한 80% 정도는 이 일반해
공식으로 해결이 될 것 같군요.. 🙂 물론 워드질문이나 웹사이트 왜 안되느냐 하는 질문에 대한 일반해는 너무 어려워서 아직 만들지 못했습니다. –;;

  • A: XXX가 안 돼요.
    B: XXX가 어떻게 안 되나요?

  • A: 잘 모르겠어요. 그냥 XXX가 안 돼요.
    B: 에러 메시지 없나요?

  • A: 안 보여요 하여간 안 돼요.
    B: 로그에 뭐 안 남나요?

  • A: YYY라고 나와 있어요. (YYY는 단정적인 최종 에러 메시지)
    B: 그 위에는 뭔가 없나요?

  • A: ZZZ라고 나와 있어요. (ZZZ는 에러의 이유 또는 상황)
    B: ZZZ를 따옴표로 감싸서 구글에 쳐 보세요.

  • A: 뭔가 나오긴 하는데 읽기 귀찮아요. 하여간 고쳐줘요.
    B: 첫번째 것에 마우스를 가져간 다음에 왼쪽 버튼을 클릭해 보세요.

  • A: 뭔가 나오긴 하는데 읽기 귀찮아요. 하여간 고쳐줘요.
    B: 그 밑에 써 있는 명령 (또는 환경설정 예시)을 따라 쳐 보세요.

  • A: 오.. 뭔가 되는 것 같긴 한데 그래도 안 돼요.
    B: 그냥 무작정 붙여넣지 말고, 자기 설정에 맞게 바꿔서 쳐보세요.

  • A: 오.. 뭔가 되긴 되네요. 감사합니다. B씨는 역시 천재예요. 다음에도 또 물어볼께요.
    B: 다음부터는 저한테 물어보지 말고 구글한테 물어보세요.

  • A: 몰라요 구글 싫어요.
    B: -_-…

몰라요 구글 싫어요. 라는 말을 들었을 때, 대상별 반응..

  • 자주보는 친구가 “구글 싫어요” 했을 때 => 다음에 밥 사달라고 한다.
  • 띄엄띄엄보는 친구가 “구글 싫어요” 했을 때 => 다음에 내가 부탁할 것이 있는 일도 있겠지 하면서 분을 삭인다;;
  • 친한 친구가 컴퓨터 잘 아는 사람이라고 자기가 아는 사람을 소개시켜 줬다 => 친구한테 내가 낯가림이 많다고 얘기한다.
  • 모르는 사람이 “구글 싫어요” 했을 때 => 모르는 사람이라 다행이라고 생각하고 참는다 -.-;
  • 후배가 “구글 싫어요” 했을 때 => 아직 세상을 잘 모르는구나 생각하고 구글쓰는 법을 가르쳐 준다.
  • 선배가 “구글 싫어요” 했을 때 => 큰일이다. 앞으로 무슨 일이 있을 것 같으면 막 밥먹으러 가려던 참이라고 한다.
  • 부모님이 “구글 싫어요” 했을 때 => 가족애를 생각하고 세대차이를 생각하면 그래도 계속 열심히 가르쳐 드려야겠다는 생각이 든다.
  • 여자친구가 “구글싫어 으아앙T-T 웩” 했을 때 => 귀엽다. 안아준다.

(먼산)

StrokeIt 한국어 번역

으흐흐~ 요새 불여우 플러그인인 All in One Gesture를 써 보면서 음청나게 좋구나! 하고 막 감동하고 쓰고 있었습니다. 물론 프비에서는 gtk2의 영향으로 뼈저리게 느리게 드륵드륵 거리지만;;;

제가 할 줄 아는 GUI 툴킷이 윈도우밖에 없다보니까, 윈도우에서 이런 것 있으면 무척 편리하겠다 하고 생각해 봤는데, 역시나 검색을 해 보니 벌써 굉장한 것이 있군요;; StrokeIt이라고 하는 것인데 꽤 오랫동안 관리된 프로그램이고 최근까지도 업데이트가 활발히 되고 있습니다. 물론 가볍고 커스터마이즈도 무척 잘 되어있네요. 게다가 이벤트를 직접 프로그램해서 넣을 수 있게 SDK까지 제공하고.. 긱스럽기가 아주 X용 오픈소스 프로그램들 수준이군요.. (라이선스는 비상업적 목적에 한해 바이너리 사용 가능이고, 소스는 공개되어 있지 않습니다.)

흐흐.. 그런데, 상당히 많은 언어로 번역이 되어 있는데 한국어 번역이 없길래 그냥 한번 번역해 보았습니다.


번역 파일 다운로드

흐흐 저자에게 보내줬으니 곧 공식 사이트에서도 받을 수 있겠지용 ‘ㅇ’

인터넷 뱅킹 보안에 대한 오해

오늘자 시사 매거진 2580에서는 얼마 전에 있었던, 스파이웨어를 통한 비밀번호 추출로 남의 계좌를 이체해버린 사건을 문제 삼아서, 국내 전자상거래/은행 보안의 문제점을 조명했습니다. 중간에 phpBB도 나오고 한텀도 나오고, 주변에서 보인 재미있는 것들이 많이 나오네요. 🙂

그렇지만, 데이터 전송 경로를 하드웨어에서 어디서 어디로 전송한다고 그림을 보여주거나 막 신비롭게 껌껌한데서 불꺼놓고 로그 보고 있다거나.. 뻔한 해커 영화의 시각이나 똑같이 표현을 했는데.. 정말 볼 때마다 새로워요. -_-;; 나도 불 끄고 코딩할까? -O-;

그런데, 여전히 2580에서는 마치 패스워드 보안은 정상적인 상황에서도 마구 남의 것을 볼 수 있고, 스파이웨어가 설치된 후에도 은행 솔루션 업체들이 어떻게 잘 노력을 하면 막을 수 있는데도 안 막고 있는 냥 얘기를 하고 있습니다. 그렇지만, 사실상 대부분의 윈도우 사용자가 커널레벨까지 조작을 할 수 있는 관리자 권한으로 사용한다는 점을 고려하면, 은행 프로그램들이 무슨 발악을 하더라도 소프트웨어적으로는 패스워드가 노출되지 않을 수가 없는 당연한 상황이라, 역사적으로 보더라도 항상 공격자가 이기는데 뭐 어떻게 막을 방법이 있겠어요? 흐흐..

결국, 이런 상황을 해결하려면, 외부 하드웨어의 도움을 빌거나, 역순해시를 사용한 일회용 패스워드를 사용해야 한다는 결론에 도달합니다. 즉, USB로 연결된 외부 카드 리더에서, 카드의 인증서를 읽어서 컴퓨터 측에서 요청한 자료를 싸인한 뒤에 결과 패킷을 보내준다던지.. 일회용 패스워드를 100개 은행에서 발급해 와서, 그걸 순서대로 하나씩 사용한다던지.. 흐흐.. 하여간, 얼른 소프트웨어적으로도 뭔가 해결할 수 있다는 환상을 버리고, 사회적인 방법이나 외부 하드웨어 장치의 도움을 법적으로 모든 금융/전자상거래에 의무화를 한다고 주장합니다! 물론, 스펙은 공개해서 독립적 구현도 충분히 진입할 수 있게.. 🙂

사내 상용 솔루션을 위한 빌드

제가 다니고 있는 회사에서는 조엘식 분류에서 “사내 소프트웨어”에 들어가는, 중규모 솔루션을 주로 만듭니다. 고객사에서 원하는 대로 플랫폼도 바뀌고, 소스 1줄을 수정하려고 해도 고객사에 작업내역서를 보내고 승인받은 뒤에 직접 들어가서 작업을 해야하는데다가 일요일 새벽에만 작업이 가능한 곳도 있고, 문제가 생기면 손해배상도 들어오고 그러다보니, 아무래도 디펜던시가 우찌됐건간에 시스템 기본 라이브러리를 빼고는 모두 직접 옵션 조절해서 컴파일한 것을 깔게 됩니다. 리눅스에서만 돌던 소프트웨어를 갑자기 AIX에서 돌려보자고 하루 전에 연락이 오기도 하고 -_-; 하여간~ 흐흐

그냥 빌드해 놓고 그냥 tar을 들고 댕기던 시절에는, 빌드도 다 손으로 해야하다보니, 밤마다 자동빌드는 커녕, 업그레이드 한번 하려고 해도, 수시간씩 걸리고, 새 플랫폼이 나와도 포팅하는데 하루종일 별의 별 삽질을 다 하게 됩니다. 그래서, 상태를 좀 개선해 보고자 새로 하는 프로젝트에서는, POSIX 플랫폼이면 무난하게 돌아가는 형태의 빌드를 구성해 봤습니다. 흐흐흐.

처음엔 GNU make 기반의 makefile 문법으로 하려고 했었는데, GNU make에서는 for루프와, target 함수 같은 것을 제공하지 않아서, 아무래도 m4같은 것의 도움 없이는 10개 이상의 디펜던시가 있는 패키지를 모두 한꺼번에 빌드하는 게 꽤 힘들었습니다. 그래서 결국은 NetBSD pkgsrc에서 BSD make를 가져다가 자동 빌드하고 그걸로 프로젝트를 빌드하는 방식으로 바꿨는데.. 이러쿵 저러쿵 만들다 보니까 결국은 포트같이 돼 버렸습니다. 그러니까.. 으흐흐. 예를 들면 이렇게~

# Berkeley DB build
# $Id: dep.bsddb.mk 864 2005-06-17 07:22:34Z perky $

NAME=           bsddb
FANCYNAME=      BerkeleyDB
VERSION=        4.3.28
SITE=           http://downloads.sleepycat.com/
DISTFILE=       db-${VERSION}.tar.gz
SRCDIR=         ${WRKDIR}/db-${VERSION}/build_unix

CONFIGURE_SCRIPT=../dist/configure
CONFIGURE_ARGS= \
        --prefix=${PREFIX} \
        --disable-cxx \
        --disable-debug \
        --disable-java --disable-mingw \
        --disable-tcl --enable-static \
        --disable-shared

NO_INSTALL=     yes

.include "submodule.mk"

요걸로 프로젝트를 매일 밤과 점심시간에 자동으로 빌드해서 에러가 나면 메일로 알려주도록 세팅해 두었습니다. 이제 기능을 좀 추가해서, 바이너리 인스톨러 스냅샷 만드는 것과 인스톨 스크립트로 자동으로 인스톨해서 유닛테스트 돌리는 것도 해보려고 합니당. 지금까지 만든 것은 여기에 올려 두었습니다. 디펜던시도 많고 플랫폼도 많은 내부 프로젝트 관리하는 분은 써 보세요. 🙂

OpenSolaris CDDL의 개요

주의: 이 글은 개인적인 해석이며 법적인 정확성을 보증하지 않습니다. 구체적인 저작권, 특허, 상표권에 대한 문제는 원문을 참조하세요.

어제 공개된 OpenSolaris
소스를 보다 보니, 생각보다 재미있고 뜯어 쓸만한 부분이 꽤 많이
있었습니다. 🙂 그래서, 이제 열심히 갖다가 썼는데 뒷통수 맞는
일이 없도록 라이선스인
CDDL (Common Development and Distribution License)
을 자세히
읽어보았습니다.

CDDL은 우선 전체적으로 GPL같이 아주 딱딱하게 조절된 무서운
어조로 써 있지 않고, 그냥 통상적이고 상식적인 수준의 문장으로
되어 있어서 읽기가 편하다는 면에서는 좋군요. 분량도 애플 것에
비해서 짧고.. 🙂 우선, 첫 부분의 용어 정의 부분에서는 대부분
상식적인 용어와 비슷한데, 몇가지 다른 것이 있다면 이 정도가..

  • “Executable”: 소프트웨어에서 소스를 제외한 모든 파일
  • “Larger Work”: CDDL하에 있는 작업외에 다른 라이선스로 된 큰 작업을
    조합한 작업

CDDL에서는 독특하게 최초 개발자(Initial Developer)와
기여자(Contributor)를 명시적으로 구분해서 권한을 따로 정의하고
있는데, 재라이선싱 권한 외에는 크게 다른 점은 없어보이는군요.
그리고, 다른 라이선스들 (특히 GPL)에서는 특허와 관련된 말들은
최대한 언급을 삼가하고 있는데, CDDL에서는 라이선스 하에 있는
소스를 작성한 모든 기여자들과 최초 개발자들 사이의 특허 문제까지도
명확하게 정의해서, 모호함을 없앴다는 점은 장점으로 꼽힐 수도
있겠습니다.

우선, BSDL과 GPL, Artistic License같은 오픈소스 라이선스 분파들을
서로 비교할 때 사용되는 여러가지 일반적인 특징은 배포, 수정, 판매
등의 다른 조건들은 비슷하지만 라이선스를 동의하는 조건이 조금씩 다른데,
CDDL에서는 이런 조건들을 걸고 있습니다.

  • 소스코드 같이 배포: “Executable” 상태 (즉, 소스 코드가
    아닌 모든 포맷)로 배포를 할 때에는 항상 소스 코드를 CDDL하에
    배포를 해야 한다는 강제 조건이 있습니다. 즉, 이 부분에 대해서는
    GPL과 여러모로 유사한 면이 있다고 볼 수 있습니다.
  • 변경: 원래 CDDL하에 있는 소스를 변경한 부분에 대해서는
    모두 CDDL의 영향 하에 가도록 되어 있으며, 변경자는 그 작업 부분이
    자기 고유 작업임을 밝혀야합니다.
  • 변경 고지: CDDL하에 있는 소스를 변경한 사람은 반드시
    자기가 변경했다고 기여자 목록에 표시를 해야합니다. 기존의 다른
    오픈소스 라이선스들은 이 부분에 대해서, 반드시 고지해야된다는
    얘기는 따로 안 써있는 것들이 대부분이었는데, 원래 소스에서 변경된
    것을 원 저자가 만든 것처럼 표시되는 것을 막기 위해서 넣은 부분인
    듯 합니다.
  • 추가적인 사항: 다른 오픈소스 라이선스들은 호환되는
    것들에 대해서는 추가적으로 다른 라이선스를 적용할 수도 있게 되어있는데
    CDDL에서도 품질보증이나 추가 제공같은 것들을 추가로 넣을 수는 있지만
    이것들이 원래 CDDL에서 보장되는 것들을 해쳐서는 안 되며, 원저자와
    원기여자들이 품질보증이나 추가 제공에 전혀 관련이 없다는 것을
    명시적으로 표시해야합니다.
  • 바이너리 배포: 소스코드가 아닌 형태로 배포하는 경우
    CDDL이 아닌 완전히 새로운 라이선스로 배포도 가능합니다. 즉,
    xchat처럼 소스는 GPL이고, 바이너리만 상용이고 이런 것도 충분히
    가능하다는 얘기겠죠. 단, 이 경우에도 라이선스를 받은 사람은
    소스를 요구해서 CDDL하의 소스를 받을 수 있습니다. 🙂
  • “Larger Work”: 다른 큰 소프트웨어와 섞이는 경우, 예를
    들면 openssl과 apr을 이용해서 mod_ssl같은 게 나오는 것 같은 경우가
    되겠죠. 이런 경우 섞임으로 인해서 최종 생산물이 CDDL을 침해해서는
    안 된다는 확인이 있어야 합니다.

그리고, 예전에 애플에서 한번 시도해서 문제가 되었던, 라이선스
개정시 조건도 같이 업그레이드라는 그런 것은 좀 더 자유롭게 되어서,
썬에서 라이선스를 개정하더라도, 처음 소프트웨어를 받을 당시의
CDDL 버전을 쓸 수 있습니다.

재배포를 하는 경우 반드시 소스코드를 배포해야 한다는 점에서,
BSD에서는 /usr/src/gnu/ 디렉토리에나 들어갈 만한 라이선스라
좀 섭섭하기는 하네요. 으흐흐. 그래도 뭐 썬도 먹고 살아야~ -O-

오픈솔라리스 공개

그동안 거의 베이퍼웨어 수준으로 뜸을 들이고 있던 OpenSolaris가 드디어 소스를 공개했군요. 타이틀 화면의 “열린”이 아주 멋있습니다. 🙂

bz2로 압축해서 44메가 정도되는 솔라리스 소스 중에서 가장 기대하고 있던 부분인 iconv소스를 얼른 쳐다 봤습니다. 🙂 솔라리스의 iconv는 다른 iconv와는 달리, 변환 루틴부분을 위한 별도의 언어를 정의한 뒤에, 그 소스를 C로 컴파일하는 구조로 되어있어서 확장에 매우 유리하게 되어있는데, 현재 아주 구리구리한 구조로 되어있는 FreeBSD iconv를 고치는데 이런 방향으로 해 보면 도움이 될 것 같습니다. 소스를 뒤져보니까 usr/src/cmd/geniconvtbl/ 안에 메타언어 컴파일러가 들어있고, libc 소스 안에 iconv가 들어있는 간단한 구조로 되어있는데, 소스 구성이나 레이아웃 등이 BSD와 크게 다르지 않은 편이라 앞으로 좋은 장난감이 될 것 같군요.

iconv외에도 gettext나 멀티바이트 API 같은 FreeBSD가 약한 부분들 뜯어다 쓰기에 요긴할 것 같은데.. 라이선스가 FreeBSD에서 섞일 수 있는 것으로 판단이 될지 좀 두고 봐야겠네요..

기민한 언어의 날 – 아직은 그냥 생각

일본에서 여러 해 이어오고 있는 LightWeight Languages Weekend를 보면서, 우리나라도 따로따로 하면 썰렁한 언어들을 묶어서 뭔가 시너지가 날 수 있는 것 해 보면 좋겠다! 하고 생각해 오고 있었습니다. 요새 다른 분들도 가끔 그런 것 있으면 좋겠다 말씀도 하시고, 한국소프트웨어진흥원에서도 일정 수준 지원이 가능하다고 의견을 주셔서 슬슬 준비해볼까 하고 버스에서 곰곰히 생각해 보고 있습니다. 🙂

아무래도, 한국에서는 PHP의 시장 점유가 엄청나게 높은 편이니, LightWeight 언어라고 하더라도 PHP는 규모가 맞지 않아 포함하지 않는 것이 좋을 것같고, 멋진 친구 승범군이 운영하는 Squeak모임도 생각나고 해서, LightWeight보다는 기민한 언어(Agile Language)로 하면 어떨까 하고 생각이 났습니다. 흐흐 그래서, 대략 Python, Perl6/Parrot, Ruby가 기간이 되고, Squeak이나 Lua, Groovy 같은 약간 다른 성격의 언어들도 가능하다면 포함이 될 수 있으면 좋을 것 같습니다.

일단, 여러 언어가 모여서 행사를 하는 것이 시너지를 내기 위해서는, 일부 언어는 알고 있지만, 아직 자세히는 모르는 다른 언어들의 특징을 느껴볼 수 있도록 주제가 너무 특정 기술에 치우치거나 기초 문법에 치중한 것은 안 될것 같다는 생각이 듭니다. 그리고, 서로의 의견을 자유롭게 교환할 수 있도록 분야별 BoF 세션 (예를 들면, TwistedWeb/Nevow와 Ruby on Rails등을 주제로한 WWW BoF나, 각 언어 간의 메타클래스 특성을 활용 아이디어들을 교환하는 세션같은..)도 공식적으로 시간을 잡거나 PyCon에서 하는 것처럼 아무데나 복도에 퍼질러 앉아서 시간 가는 줄 모르고 토론하는 것도 좋을 것 같구요. 🙂

파이썬마을의 순식간에 뚝딱하는 세미나들하고는 좀 다르게 미리 스티어링 그룹도 구성을 하고, 각 세션들에 대해서는 Call for Paper를 통해 공개적으로 발표하실 분을 모집해서 알차게 꾸몄으면 하는 생각이 있습니다. 아직은 그냥 저 혼자 출퇴근길에 버스에서 생각하는 아이디어에 불과한데, 앞으로 다른 여러분들께 연락을 드려서 진행을 해봐야겠습니다~

구글 한여름의 코드!

구글이 Summer of Code의 개최를 공식 발표하였습니다. PSF에서 내부적으로 얘기는 지난 주부터 있었는데, 대체로 다들 반기는 분위기 속에 잘 되어서, PSF가 지원 기관의 제일 첫번째로 올라갔군요. ^_^ (1주일동안 다른 데 소문 안 내느라 입이 어찌나 근질근질했는지 =3)

Summer of Code에서는 여름 동안에 학생들이 오픈소스에 기여도 하고 자기 능력도 계발하고 하는 의미에서 구글에서 오픈소스 기여를 지원해 주는 행사입니다. 그동안 다른 데서 있었던 Grants와는 달리 Python, Perl, Mono, Apache, Ubuntu, GNOME 등 기존의 대형 오픈소스 프로젝트 기관들이 심사와 멘터링을 맡고, 각 학생 프로젝트당 $4500, 기관에 $500를 지원하게 됩니다. 이렇게 총 200개 정도의 프로젝트를 지원하는데, 이번 기회에 학생들은 괜히 소모적인 알바로 힘만 빼고 뻘짓하는 것을 피할 수 있고, 오픈소스 프로젝트들은 열의 있는 참가자들이 할 수 있는 여러 노력형 작업들을 성취해 낼 수 있을 것 같아서 아주 결과가 기대 됩니다.

한국에서도 많은 학생들이 참가해서, 한몫도 잡고 이름도 날리고 하면 좋겠군요. (450만원!) 크크 🙂

오픈소스가 그렇게 힘든가

회사에서 워크샵을 가면서, 상황 극복을 위한 발전 방향이나 내부의 커뮤니케이션 문제같은 여러가지 것들을 토론했습니다. 지난번 워크샵까지는 그냥 먹고 놀았는데, 이번엔 진지한 토론도 하고 역시 많이 발전을.. 🙂

명함이나 회사 양식지 같은 여러 곳에 있는 회사의 슬로건은 “Open Source Experts”입니다. 그런데, 뭐 사실 회사가 생긴지 만 6년이 다 되어가지만, 오픈소스회사가 할 만한 일은 하나도 한 일이 없다고 봐도 되겠지요.. 전문가라면 쏙쏙 빼먹기만 해도 되남? 흐흐. 하여간 이런게 상황이 매우 어려운 회사 실정에는 호사스러운 불평일 수도 있겠지만, 그래도 아무도 얘기하지 않으면 그냥 그래도 되는 것이 되기에 용기를 내어 한번 말해 보았습니다.

그렇지만, 뭐 역시 답변은 “회사가 망하고 나서 오픈소스를 해 봐야 무엇하나”, “우리나라 사정에는 오픈소스로 돈 벌 수가 없다”, “오픈소스를 해야지만 오픈소스 회사인 것은 아니다” 이런 식의 늘 들어왔던 말들이었지요. 사실 이런 생각을 갖고 있는 사람들을 설득하기란 쉽지 않습니다. 오픈소스를 전혀 처음 접한 것이 아니고 이미 오해를 단단히 하고 있기 때문에 거부감을 이미 충분히 가지고 있는 상황이라 생각을 바꾸기가 쉽지가 않지요.

사실 자신이 오픈소스를 잘 알고 있다고 생각하면서 거부감을 가지고 있는 경영자들의 오해는, 회사가 오픈소스를 하면 처음부터 무조건 레드햇같이 회사의 모든 제품을 오픈소스해야 하는 줄 아는 것이 주가 됩니다. 사실 제품 전체를 통짜로 오픈소스로 만드는 지미안이나 레드햇, IBM같은 곳도 있을 수는 있겠지만, 그런 비즈니스 모델을 적용해도 회사 재정에 문제가 없을 경우에나 그렇겠지요. 반면에 Google CodeYahoo Search Developer Network처럼 프러덕트 전체를 오픈소스화하는 것은 아니고, 회사의 이익은 유지할 수 있으면서도 세계 개발자원의 절약에 큰 도움을 줄 수 있는 이런 오픈소스화를 할 수도 있습니다. 회사 주력 제품을 개발하면서 부산물로 나오는 것은 사실 구글이나 야후만 하는 것이 아니라 FreeBSD 소스만 보더라도 수십개의 비-오픈소스 회사가 소스를 기부해 왔고, Python 소스에서도 10여개의 회사가 자신들의 목적에 맞춰서 일정부분의 소스를 기부해 온 것을 볼 수 있습니다.

즉, 오픈소스라고 해서 굳이 목숨걸고 할 필요는 없다는 것입니다. 만약 대용량 메일 솔루션을 만든다면, 그 안에 들어간 서버 프로세스들을 위한 IPC 프레임워크를 공개한다고 해서 메일 솔루션 팔아 먹고 사는데 과연 지장이 있을까요. 오픈소스는 사실 그냥 회사의 도의적 정당성만 형식적으로 주는 것은 아닙니다. 회사의 코드들을 오픈소스화 함으로써, 회사 자체의 관리 부담이 줄어들고, 오히려 외부에서 새로운 기능을 추가해 준다던지 버그를 잡아줄 수도 있는 효과도 노려볼 수 있습니다. 또한, 해당 오픈소스 부분을 사용하는 곳이 많아지면, 비슷한 라이브러리나 모듈을 사용하는 프로그램들끼리의 호환성도 쉽게 올라가서, 오픈소스에 기여하는 회사들끼리 상호운용성이 크게 향상됩니다. 그리고, 오픈소스를 함으로써 개발자들에게는 “내가 이 회사를 다닌다. 우리 회사 라이브러리 써 봤어?” 하고 자부심을 가질 수 있어서 사기충전에도 큰 도움을 주며 새로운 개발자들을 유혹하는 긍정적인 요소가 될 수 있습니다. 개발자들 대부분은 자기 소스를 마음대로 자랑할 수 있을 때에 코드 품질이 훨씬 올라간다는 점에서 품질의 향상에도 영향을 줍니다.

저희 회사에서 점진적인 오픈소스가 진행되지 못했던 점은 물론 개발자들이 능동적으로 릴리스를 하려는 의지가 부족했던 점도 있습니다. 그렇지만, 사실 그렇게 주장을 하더라도 오픈소스 개발자들의 개발 방식과 생활 방법이나 의식은 회사 생활에는 안 맞다는 생각이 이미 마음 속 깊이 있는 관리자들에게 말이 받아들여질 수 있을 지는 의문이군요.. 그냥 며칠 안 남은 병역특례가 얼른 끝나기를.. 🙂