이 문서 내용은 좀 낡았습니다.
60일이나 편집 안된 오래된 망한 문서니 개발 문서인 경우 참고할 때 조심하세요. 최신 정보를 알고 싶으면 게시판에 글 써주세요


목차

1. 개요
2. Node.js
2.1. JSON 시절
2.2. 파일 시절
2.3. MySQL 시절 (OWNET)
3. PHP
4. 파이썬
4.1. 파일 시절 (PyNAMU)
4.2. MySQL 시절
4.3. SQLite 시절
4.3.1. Flask 시즌 1
4.3.2. Bottle
4.3.3. Flask 시즌 2
4.4. DB 2개 지원 시대
4.5. 그 뒤
5. 기타

1. 개요

오픈나무 역사에 대해 주저리 주저리 써 놓은 곳임다.

2. Node.js

2.1. JSON 시절

JSON을 파일 저장 방식으로 쓰던 시절이다. 사실상 극초창기답게 매우 불안정 했으며 JSON은 실시간 파일 저장용으로 쓸만하지 않다는 결론을 내렸다.

2.2. 파일 시절

모니위키나 도쿠위키처럼 TXT 파일을 저장 방식으로 쓰던 시절이다. 속도는 꽤나 빨랐으나 음... 사실상 DB 알고리즘을 직접 짜야한다등의 문제가 많았다. 특히 서치를 구현할 방법이 도통 생각나지 않아서 포기하고 DB를 사용하는 방식으로 바꾸기로 다짐했다.

여기서 파이나무가 파생되게 된다

2.3. MySQL 시절 (OWNET)

원래 개발자가 개발하던 deesle이라는 위키 엔진이 망해서 오픈나무에 MySQL을 사용해서 위키 엔진을 만들어보기로 했으나 처음으로 콜백 지옥이라는 것을 경험하고 도저히 답이 없는 것 같아서 때려치고 다른 언어나 배우기로 마음을 먹는다.

3. PHP

중간에 자바스크립트 대안 언어로 개발해보았으나... 때려쳤다. 후에 이건 큐위키 프로젝트로 정신적 계승된다. 문제는 저것도 만들어질 기미가 없다

4. 파이썬

4.1. 파일 시절 (PyNAMU)

사실 오픈나무 주도권을 이전 받기 이전에 과도기적 시점이 있었다. 그 때 파이썬 + 파일 버전을 따로 만들어서 배포했는 데 그 때 이름은 파이나무였다. 그러나 주도권을 이전 받으면서 이 시기는 금방 사라지고 JS 버전 폐기와 함께 다음 시기로 넘어가게 된다

참고로 파이나무로 접속해도 오픈나무로 연결 된다 즉 현재의 오픈나무는 파이나무의 후손이다

4.2. MySQL 시절

파이썬을 배우기 시작했고 다시 MySQL을 이용해서 오픈나무를 만들기 시작했다. 그러나 음... MySQL은 이상하게 커넥션이 24시간 안에 누가 들어오지 않으면 커넥션이 끊어지는 사실을 발견했고 그걸 극복하지 못해서 망했다.(1)(2)(3)

4.3. SQLite 시절

4.3.1. Flask 시즌 1
맨 처음에는 플라스크를 사용해서 개발했으나 동작하는 속도가 영 맘에 들지 않아서(4) 나중에 bottle이란 것으로 갈아탄다.
4.3.2. Bottle
속도는 빨라서 좋았으나 영 기능이... 그냥 꾸역꾸역 쓰다가 나중에 내부 엔진을 바꿀 수 있다는 사실을 알게 되었고 Flask + Tornado라는 지금도 쓰는 조합으로 갈아탔다.
4.3.3. Flask 시즌 2
지금 보고 있는 이 상태이다. v2.0부터 나무마크를 어느정도 꾸역꾸역 지원했으며 v3.0부터 거의 완성형이 되었다.(5)

4.4. DB 2개 지원 시대

언젠가부터 은근슬쩍 MySQL을 다시 지원을 시작했다.

아주 느리긴 한데 그래도 뭔가 발전이 있다... 퇴화일지도

언젠간 포스그레도 지원할 것이다. 예정은 다음 세기 정도에

4.5. 그 뒤

5. 기타

사실 벌써 개발한지도 2년 반인데 크게 기능적 향상이 있는 것 같지가 않다. 솔직히 위키가 어느정도 기능만 만들면 그 이상으로 뭔가 기능을 추가하긴 아주 힘들다(6) 노드 시절까지 합치면 벌써 5년째다. 징하게 우려먹은 것 같다.
(1) 소규모 위키 엔진은 아무도 안 들어올 가능성이 있으니까
(2) 나중에 SQLite 시절이 되서야 리퀘스트 날리면 커넥션이 안 끊어진다는 걸 발견했다... 이런
(3) 사실 그냥 근원적인 것은 필요할 때만 DB에 연결하고 커넥션 끊는 게 제일 안전하다 (이건 나중에 v3.4.6 가서 해결된다.)
(4) 나중에 내부 엔진은 다른 걸로 바꿀 수 있다는 걸 발견했다... 이런
(5) 참고로 v3.0 이전에는 개발할 때마다 버전을 0.0.1씩 올렸다.
(6) 아주 주관적인 말이다. 근데 사실 미디어위키나 도쿠위키만 봐도 어느정도 기능이 추가된 이후로 변화가 크게 없다