회사의 도서관에서 특정 분야에 대한 책을 다른 분들에게 추천해주는 북셀렉터 활동을 완료했다.
1년동안 북셀렉터들과 도서관 담당자와 한달에 한번씩 모여서 책에 대한 후기를 서로 공유했다.
내가 맡은 부분은 운영체제였고, 운영체제 관련한 책에 대해서 보고 공유하면서 들었던 생각들을 정리차 작성한다.

운영체제라는 주제를 서비스개발자, 디자이너, 기획자에게 설명하는 것이 너무 어려웠다. 커널이나 알고리즘을 얘기하는 것은 피드백을 주거니 받기 어려운 부분이었다. 게다가 책을 추천하는 것은 그보다 더 어려운 것이었다.  왜 운영체제라는 것이 필요한지 조차도 모르는 분들을 설명하기란 굉장히 어려웠다. 초반에 기술 서적을 설명할 때 'Hard core'라는 단어를 쓰면서 나를 위안했다. 그러나, 시간이 지나면서 상대방을 이해시키려 하지 말고 좋은 마음으로 볼 수 있도록 하는 방법이 생각이 났다. 

PPT와 유투브 동영상을 이용해서 리눅스OS에 대해서 어떤 것인지 보여주었지만, 디자이너, 기획자, 서비스개발자의 표정들이 동감대가 이루어지지 못했다. 어려운 개념을 설명하려고 쉬운 개념이 필요하다는 생각이 들었다. 즉, 눈에 들어오는 제품을 직접 만들어 가지고 가서 왜 운영체제가 필요한지를 설명하였다. 특히 나는 리눅스 OS와 C/Java언어 계통을 좋아하는 까닭에 내가 잘 할 수 있는 것들을 찾아보았다.

처음에는 안드로이드 폰이었다. 안드로이드폰을 직접 들고 가서, 북셀렉터 모임에서 안드로이드 OS에 대한 개괄적인 설명과 아키텍처를 설명하였다.


(이미지는 구글 검색후 찾아낸 것음. 내용과 무관함. 출처 : http://ss.textcube.com/blog/3/31048/attach/XaBhtFDQSb.jpg)


다들 스마트폰을 쓰고 있어서 그런지 안드로이드 OS에 대해서 그렇구나 정도로 설명을 진행했다. 반응이 미비했지만, 마음이 움직일 수 있겠다하는 생각이 들었다.

누구나 쉽게 운영체제를 좀 더 이해할 수 있는 방법이 없을까 하는 생각이 들었다. 운영체제를 깊게 이해하기 보다는 기존의 펌웨어 방식의 특징을 얘기하고 운영체제가 필요하게 되었나를 설명하면 좋겠다는 생각이 들었다. 사실 나도 책으로만 공부했지, 왜 운영체제가 필요한 것인지에 대해서 깊이 생각해본 적은 없었던 부분도 있었다.

중고 레고 마인드스톰을 35만원을 주고 구매했다. 비싸게 주고 샀지만 이런 기기를 언제 만져볼까 싶기도 하면서도 누군가에서 재미있는 설명을 해준다면 좋을 것 같아서 구매했다.


(이미지 출처 : http://ecx.images-amazon.com/images/I/618DwmMkOQL._SL500_AA300_.jpg)


( 펌웨어의 의미는 상당히 고급스러운 데, 이 문서에서는 단순히 어플리케이션처럼 바이너리를 넣은 개념으로 이해하면 좋을 듯)

북셀렉터 모임 때 마인드스톰 로봇에 프로그래밍을 하고 업로드 한후, 안드로이드 OS의 블루투쓰 콘트롤 어플을 이용해서 자유자재로 움직이는 로봇을 시연했더니 반응이 아주 좋았다. 그 다음 달에도 레고 마인드스톰을 이용하여 겉표면에 나와있는 로봇을 만들어서 혼자 흔들어대도록 만들어서 보여주었더니 역시 반응이 좋았다. 
이것저것 시연을 하면서 프로그래밍한 바이너를 저장한 펌웨어의 특징과 펌웨어 형태로 개발하는 것의 한계를 얘기할 수 있었다. 

"펌웨어는 한번에 한가지만 할 수 있다. 바로 마인드 스톰의 특징이라고 할 수 있다. 동작하게 하는 CPU와 작은 메모리로 센서를 인풋으로 삼아 다양한 동작을 가능케 한다.
그러나 동시에 여러개를 할 수 있으려면 운영체제의 개념이 필요하다. 즉 프로세스(일) 관리가 필요한 것이고, 프로세스를 관리하려면 메모리를 침범하지 않도록 보호를 해야 한다. 또한 어느 한 프로세스가 소홀히 되지 않도록 다양한 방법(알고리즘)이 필요한 것이라고 얘기했다. 또한 무엇을 하면서도 언제든지 내가 원하는 일을 바로 처리해 줄 수 있도록 하는 큰 개념을 운영체제라고 얘기했다. "



사람들이 조금씩 운영체제를 이해할 수 있었다. 눈에 보이는 레고 마인드스톰을 가지고 깊이 이해할 수 없었지만, 왜 운영체제가 필요한 것인지를 이해시키는 부분을 설명을 했다. 디자이너, 기획자들이 바로 반응이 왔다.

그 다음은 아두이노 였다. 아두이노는 마인드스톰과 달리 6-8만원 정도로 가격이 쌌고, digital input/output port가  많다보니 좀 살 것 같았다. 마인드 스톰은 레고 블럭으로 로봇 만드는 것은 바쁜 나에게 힘든 경험이었다.



(이미지 출처 : http://arduino.cc/en/uploads/Main/arduino_uno_test.jpg)


아두이노는 리눅스 운영체제를 탑재할 수 없다. 그러나 펌웨어 기반으로 동작할 수 있고, 조금만 할애하면 누구나 쉽게 멋진 예술작품을 만들 수 있기 때문에, 소개하면 좋겠다는 생각이 들었다. 또한 나는 ARM 에 대해서 깊이 알 수 있겠다는 생각이 들었다. 오픈 하드웨어, 오픈 소스를 표방하고 있기 때문에 코드를 볼 때마다 즐거웠다.

아두이노를 가지고 다양하게 시연를 해주었다. 센서. LED, MIDI 스피커, 화이트 캐릭터  LCD를 가지고 폭탄 만들기 시연, LED 방식으로 다양한 효과를 선보이니 역시 반응이 좋았다. 작은 기계에서 다양한 기능을 가지고 재미있는 일을 할 수 있는 것에 호기심을 내비쳤다.

1기 활동을 끝마치고 나서 그들에게 더 좋은 것을 보여줄 수는 없었다. 그러나 소통하는 것이 무엇인지를 조금씩 깨달았다. 기대감과 호기심을 자극시킴으로서 공감과 참여를 이끌어내는 것이 즐거웠던 것 같다. 다들 웃으면서 다양한 얘기를 해주실 때마다 고마움을 느꼈다. 그리고, 아래와 같은 솔직한 얘기를 했다.

운영체제는 항상 필요한 것은 아니다. 필요한 곳에 쓰일 수 있는 소프트웨어이지, 모든 것에 만능은 아니다.
또한  완벽한 운영체제를 만드는 것은 쉽지 않다. 어떤 곳은 펌웨어로, 어떤 곳은 운영체제로 쓰일 수 있을 것이다.



어려운 주제인 운영체제를 공감하기 위해서 사비을 지불했다. 사람들이 어려워하는 주제에 대해서 이해를 조금 높일 수 있도록 노력했다는 점은 잘했다고 생각이 든다. 그러나 눈에 보이지 않은 부분은 도외시 하지 않았나 하는 생각이 들었다. 공감대를 갖도록 하기 위해서 눈에 보이는 것 위주로 하지 않았나 생각을 한다.


기술서적에 대한 북셀렉터 활동을 하면서 배운 것을 정리해 본다.

첫번째, 어려운 주제라도 쉽게 설명할 수 있는 방법이 있다. 그것을 찾아내는 과정에서 많은 고민과 고통이 있을 수 밖에 없다. 상대방이 무지를 존중하자. 그것은 내가 설명할 수 있는 방법을 제공한다. 상대방을 쉽게 이해시키고 동감대를 만들어 낼라면 2배를 고민하고 노력하자.

두번째, 소통의 방법 중 하나는 눈으로 보여주는 것이다. 실제의 현상, 기술이 100%라면 책에서 보여주는 것은 30% 미만이다. 책의 한계를 인정하고 책에서 보여주고 싶었던 그림을 내가 소화하고 보여주자. 완벽하지 않더라도 개념을 현실로 만들어 놓자.

세번째, 쉬운 것부터 시작하자. 쉬운 것부터 시작하니 점차 어려운 것도 쉽게 해낼 수 있는 방법이 생긴다. 정말 시작은 반인 것 같다. 말만 하지 말고 정말 작은 발걸음부터 떼자.


마지막으로 책이란 무엇인가? 라는 하는 물음이 내안에 든다.
'책은 현상에 대한 아무 일부에 대한 모습을 보여주는 거울이다' 라는 생각이 든다.
언젠가 또 다시 바뀌겠지만.. ^^



Posted by '김용환'
,

<서론>

Webwork 개발자가 webwork를 떠나 struts2로 이동하면서 webwork, ognl, sitemesh가 좀 버려진(?) 상태로 있었습니다.그러나 Apache 진영또는 오픈 소스쪽에서 webwork, ognl, sitemesh가 다시 생명력을 가지고 다시 일어서려는 분위기가 있다는 Trend를 알리고자 합니다.

요즘 Webwork 진영은 어떻게 돌아가는지 트렌드를 잠깐 소개하고자 합니다. 내용의 레퍼런스는 apache common dev 메일링 리스트입니다.

 

 

<본론>

Webwork(struts2), OGNL, Sitemesh를 세부적으로 보도록 하겠습니다.

1. Webwork-Struts2

Webwork는 장렬히 전사했지만,  Struts2에서 webwork의 모든 개념을 포함하여 열심히 만들어주고 있습니다.

최신 버전에 잘  release 되고 있습니다.

 

2. Webwork의 core library OGNL

OGNL은 Webwork MVC의 core library 였으며, 지금도 Struts2의 중요 라이브러리입니다.

또한 이 OGNL은 Apache 프로젝트 중의 일부이며 Spring Webflow까지 영향을 주는 라이브러리입니다.

2011년 초 OGNL에 마지막 남은 commiter(Lukasz)가 Apache Common 개발자 리스트에 도움을 요청하였습니다. 원래 개발자들도 ASF로 소스 이전하는 것에 대해서 찬성했지요. Common쪽에서 이를 지원하기 위해서 투표를 했고,  통과하였습니다.

 

- Apache Struts

- Apache Tapestry

- Apache Camel

- Apache Tiles

- MyBatis (formerly Apache iBATIS)

- Spring WebFlow.

 

ONGL은 incubator에서 벗어나 당당히 4.0 snpahost 버전을 공개하며 일어서고 있습니다.

Last Published: 01 November 2011  | Version: 4.0-SNAPSHOT

http://commons.apache.org/ognl/

 

 

3. Sitemesh

Sitemesh는 2까지 나오고 그동안 활동이 없었는데, Sitemesh 3가 나오게 되었습니다. 아직은 alpha 버전이긴 하지만, 조만간에 beta 릴리즈 계획이 있다고 합니다.  하지만 올해 초까지만 활동하고 지금은 조용한 상태입니다.

http://www.sitemesh.org/

Sitemesh 3의 특징 중 중요하게 바뀐 것은 다음과 같습니다.
- sitemesh의 내부 구조를 바꿔 기존보다 3배 이상의 속도와 메모리를 반 정도로 적게 쓸 정도로 함
- jsp나 velocity 없이 바로 static html로 생성할 수 있다.
- 기존보다 간단한 설정
 

4. 구글 트렌드 조사

 

webwork가 죽는 것 같았지만, 다시 살아나고 있는 트렌드입니다.

 


 

그리고, 중국진영에서 열심히 쓰고 있습니다.

 

 

 

OGNL은 여전히 힘을 잃고 있기는 하지만, 중국에서 장난아니게 사용되고 있음을 볼 수 있습니다.

 

 

 

 

<결론>

Webwork, Sitemesh, OGNL 오픈소스를 지원했던 OpenSymphony 가 사라졌지만, 그의 후예들이 계속 노력해서 새롭게 변화하고 있다는 것을 조사하면서 기분이 좋았습니다. 좋은 프레임웍은 계속 살아남는구나 하는 생각이 들었습니다.

최근에는 중국 사용자들이 OGNL에 많이 참여하고 있으며, 중국어 페이지를 개설하려는 움직임이 있으며 활발하게 제안하며 활동하고 있습니다.

그것을 보면서 어쩌면.. 중국 또는 아시아권에 의해서 webwork(struts2)/ognl/sitemesh 개발 붐이 일어날 수 있겠구나 하는 생각이 들었습니다. 

 

 

 

참고자료

 

http://wiki.apache.org/incubator/OGNLProposal

http://www.opensymphony.com/ognl/

https://github.com/sitemesh/sitemesh3/wiki

http://www.sitemesh.org/overview.html

Posted by '김용환'
,