mir.pe (일반/어두운 화면)
최근 수정 시각 : 2024-11-25 15:38:10

Rhymix

<colbgcolor=#34373a><colcolor=#fff> Rhymix
라이믹스
파일:Rhymix 로고.svg 파일:Rhymix 로고 화이트.svg
개발자 Poesis Inc.
기여자 기여자 명단
시작일 2015년 12월 18일
언어 PHP, JavaScript
라이선스 XE 1.0 ~ 1.3: GPL v2
XE 1.4 ~ 1.8: LGPL v2
Rhymix 1.8 ~ 현재: GPL v2
링크 파일:홈페이지 아이콘.svg | 파일:GitHub 아이콘.svg 파일:GitHub 아이콘 화이트.svg

1. 개요2. 역사3. 설치 환경4. 기능과 특징5. XE와의 비교6. 워드프레스와의 비교7. 라이선스 정책8. 확장 기능9. 여담10. 관련 문서

[clearfix]

1. 개요

XpressEngine를 포크[1]하여 시작한 PHP CMS이다. 사용자 커뮤니티를 중심으로 기존 사용자들의 목소리를 적극 반영하고 미래를 남의 손이 아닌 스스로의 손으로 결정해야 하겠다는 요구가 일어나 시작된 오픈소스 프로젝트로, 라이믹스(Rhymix)라고 부른다.[2]

2. 역사

XpressEngine을 개발하고 있던 팀이 사용자들의 의견에 귀를 기울이지 않는 빈도가 높아지더니, 2015년 말에는 급기야 기존 XE와는 호환이 전혀 안되는 XE3라는 CMS를 내놓자, 기존 사용자들을 중심으로 자구책을 마련하기 시작했다. 당시 네이버의 지원을 등에 업고 개발되던 XE를 포크하여 순수 오픈소스 프로젝트로 개발을 이어간다는 것은 쉬운 결정은 아니었으나, 6개월간의 논의 끝에 2015년 말에 XE를 포크하여 라이믹스(Rhymix)라는 새로운 프로젝트를 시작하기에 이른다.[3]

XE가 GitHub로 넘어오기 전에 사용하던 svn에서의 개발 이력은 아쉽게도 유실되었지만, GitHub로 넘어온 이후의 기록은 라이믹스의 GitHub에 모두 그대로 남아 있다. 일반적으로 포크를 할 때는 대부분 과거와 단절하고 새롭게 시작하지만, 개발자들의 자기 만족일 뿐 사용자들에게는 그다지 도움이 되지 않는다. 따라서, 라이믹스는 XE의 히스토리에 들어간 노력과 갈등의 역사를 그대로 모두 인정하고 계승하며, 잘못된 것은 고치고 큰 틀은 계속 유지하기로 했다.[4] 언젠가 XE 개발이 중단되는 시점에는 라이믹스가 XE의 유일한 적통 후계자가 될 것이기 때문이었다. 그리고 그 예상은 그대로 적중했다.

포크를 하면 버전을 0.1 또는 1.0부터 시작하는 것이 보통이지만 라이믹스는 XE를 계승하기 때문에 버전을 XE와 맞춰서 1.8부터 시작했고, XE가 1.9로 바뀔 때는 라이믹스도 같이 1.9로 변경했다. 현실적인 이유도 있었는데, 아직 정식버전이 아닌 베타테스트 중이기도 하고, 관리자 페이지에 업그레이드 버튼이 뜨는 것을 방지하기 위해서라도 버전을 맞추고 있었다.[5] 다만 XE가 1.11로 갔을 때는 라이믹스 개발이 성과를 거두고 있었기 때문에 1.9 버전을 계속 유지했다.[6] 라이믹스는 XE 1.8.15를 포크하여 시작했지만, 그 이후 추가된 XE의 기능들 중에서 필요한 것들은 모두 흡수했으며, XE의 마지막 버전인 XE 1.11.6의 내용까지도 필요한 것들은 포함되어 있다. 따라서, 라이믹스가 XE의 어느 특정 버전을 포크했다고 정의하기는 어렵고, 포괄적 표현으로 XE를 포크하여 시작했다고 하는 것이 올바른 표현이다.

우려하던 것과는 달리 라이믹스 개발은 활발하고 꾸준히 진행되어 2020년 12월 18일에 라이믹스 5주년을 맞아 2.0 정식 버전이 발표되었다. 라이믹스 2.0은 PHP 8.0 지원을 비록하여 코어 내부적으로 기존 라이믹스와 XE에 비해 많은 부분이 변화 및 발전하였다.[7] 2023년 6월에는 2.1 버전이 발표되었다. 난이도가 높은 사용자 요구 기능들을 대폭 수용하고 미래 개발환경에 맞도록 개선하는데 초점이 맞춰졌다.[8] 소셜 로그인 기능은 코어에서 분리하여 별도의 서드파티 모듈로 만들었다.[9]

라이믹스 개발자들은 기존 XE를 획기적으로 바꾸는데 집중하면서도 사용자들과의 의사소통도 게을리 하지 않는 모습을 보였다. GitHub에 올라온 이슈는 빠르면 몇 분내에 처리되는 경우도 있고,[10] 주말이 낀다든지 하여 늦어지는 경우에도 며칠 내로는 처리가 된다. 일각에서는 자동응답 AI가 아니냐 하는 의혹을 보내기도 한다

버전 최초 배포일 마지막 배포일 주요 내용
XE 1.0 ~ 1.3 2008년 2월 28일 2009년 12월 21일 모듈,위젯,애드온 개념 도입
XE 1.4 2010년 1월 20일 2011년 9월 2일 안정화된 XE 시기
XE 1.5 2011년 10월 27일 2013년 3월 8일 UI 및 구조 변경
XE 1.7 2013년 2월 21일 2015년 3월 30일 메뉴 사이트맵 도입
XE 1.8 2015년 4월 8일 2017년 10월 19일 CKEditor 및 HTML5 적용
Rhymix 1.8 2015년 12월 18일 2017년 10월 19일 XE 1.8.15 포크. 사용자 요구 반영
Rhymix 1.9 2017년 11월 30일 2021년 10월 8일 라이믹스 구조 개발. XE 1.9~1.11 흡수
Rhymix 2.0 2020년 12월 18일 2023년 1월 2일 DB연동 등을 강화한 메이저 업그레이드
Rhymix 2.1 2023년 6월 21일 현재 사용자 요구 기능 및 미래 개발환경 대응

3. 설치 환경

Rhymix 2.1 이상을 설치하려면 다음과 같은 조건이 필요하다.[11]
리눅스 VPS 가상 서버 또는 클라우드 서버를 기준으로 라이믹스 홈페이지를 운영할 수 있는 최소 사양은, 한적한 블로그나 조용한 사이트는 1GB 메모리와 1 vCPU만 있어도 원활하게 돌아간다. 리눅스 시스템이 기본적으로 500MB 정도를 차지하므로 500MB의 여유 메모리만 있어도 운영이 가능한 셈이다. 라이믹스의 캐시 기능을 대폭 강화하고 최적화를 통해 가볍게 만들었기 때문에 가능한 일이다. 그렇더라도 동시 사용자가 있는 사이트의 경우에는 2GB 메모리는 있는 것이 좋고, 활발한 사이트의 경우에는 4GB 메모리와 2+ vCPU가 권장 사양이다. 라이믹스 개발자들이 모여 있는 XETown에서는 보통 8GB 이상을 권장한다.

4. 기능과 특징

5. XE와의 비교

포크된 소프트웨어지만, 라이믹스는 GPL 라이선스이고 XE는 LGPL 라이선스인데, LGPL 라이선스에서 GPL 라이선스로 변경하는 것을 허용하고 있어서 가능한 것이다. 따라서 Rhymix에서는 XpressEngine의 소스를 가져올 수 있지만, XpressEngine에서는 Rhymix의 소스를 가져갈 수 없는(라이선스 위반) 상황이 되어 버리는데, 일부 중요한 패치는 라이믹스 개발진에서 2중 라이선스를 적용하여 XE용으로도 공개했으며 일부 기능 및 개선사항은 XE에도 반영되었다.

Rhymix의 DB 구조는 XE와는 차이가 커진 상태로 일단 XE에서 Rhymix로 업그레이드 하고 나면 다시 거꾸로 과거의 XE로 다운그레이드 하는 것은 불가능하다. 만약 돌아가고 싶다면 DB까지 복원해야 한다.

XE와 외부 구조는 동일하기 때문에, XE에서 지원되던 대부분의 서드파티 자료(레이아웃, 스킨, 애드온, 모듈, 위젯)들이 호환되지만, 내부 구조는 크게 달라져서 XE의 코어를 수정하는 자료는 정상 동작하지 않을 수도 있다.[19]

XE 1.0 ~ XE 1.7 에서 Rhymix로 업그레이드 할 때는, 먼저 XE 1.11을 설치한 후 관리자 화면의 대시보드에서 모듈 업데이트 버튼을 모두 클릭하여 DB를 XE 1.8+ 형식으로 변경하고, Rhymix를 덮어씌워야 한다.[20] Rhymix의 코드를 간소화 하기 위해서 아주 오래된 버전에서 업그레이드 하는 기능은 제거했기 때문이다. XE 1.8 ~ XE 1.11 사용자의 경우에는 Rhymix로 바로 업그레이드 할 수 있다.

XE는 2019년 10월 22일의 버전 1.11.6을 마지막으로 사실상 지원이 중단되었지만,[21] Rhymix는 사용자들의 활발한 참여와 개발자들의 꾸준한 노력으로 계속 발전하여 XE의 차기 CMS 버전으로 자리를 굳혔다.[22] 보안패치도 활발하게 진행되어, XSS 및 CSRF 공격과 관련된 RVE-2022-1 취약점 패치[23]와 외부페이지 템플릿 문법을 통한 치명적인 RCE 취약점인 RVE-2022-2,[24] 스킨 경로 조작을 통한 RCE 취약점인 RVE-2022-3,[25] 그리고 에디터 모듈의 XSS 취약점인 RVE-2023-1[26] 등도 패치 완료했다. 라이믹스 개발팀에서는 이들 취약점과 관련하여 XE용 패치도 공개하였는데, 최초의 XE 베타버전이 발표된 지[27] 15주년이 되는 2022년 8월 12일을 기점으로 XE용 보안패치는 더 이상 공식적으로는 제공하지 않기로 결정하였다.[28] XE 사용자들은 하루빨리 라이믹스로 업그레이드 해야 한다.

6. 워드프레스와의 비교

테마나 플러그인의 숫자에 있어서는 워드프레스가 압도적인 우위를 점하고 있다. 라이믹스도 레이아웃이나 스킨이 없는 것은 아니지만 숫자에 있어서는 워드프레스와 비교하기가 어렵다. 워드프레스에서는 판매중인 테마를 저렴하게 구입하여 글자만 바꿔도 될 일을 라이믹스로 하려면 외주제작으로 맡겨야 할 수도 있다.

라이믹스가 뚜렷하게 우위를 점하는 부분도 있는데, 라이믹스로 제작된 사이트는 워드프레스로 제작된 사이트에 비해 매우 빠르게 동작한다.[29] 특히 여러 명이 동시 접속하는 사이트에서는 차이가 피부에 확 와 닿는다. 라이믹스도 상당히 많은 기능이 들어가 있는 CMS라서 자칫 무겁게 느껴질 수도 있었는데,[30] 개발진이 최적화와 캐시 기능에 심혈을 기울인 덕분에 가볍게 된 것이다.

게시판 기능[31]에 있어는 라이믹스가 절대적인 우위를 점하고 있다. 워드프레스에도 한국형 게시판 플러그인 같은 것이 있기는 하지만, 라이믹스는 태생부터 제로보드라는 게시판에서 시작되어 확장된 CMS이고, 워드프레스는 다른 기능의 CMS인데 플러그인을 써서 게시판 기능을 끼워 넣는 것이기 때문에 당연한 결과이다.

7. 라이선스 정책

Rhymix는 사용자의 권리를 더욱 보호하고 자유 소프트웨어 본연의 정신에 충실하기 위해 XE의 LGPL 라이선스를 GPL로 되돌렸다. LGPL v2.1 제3조에서 GPL로의 라이선스 변환을 허용하고 있기 때문에 가능하다.

웹사이트에 Rhymix를 사용하는 것만으로는 소스코드를 공개할 의무가 없으며, Rhymix의 소스코드를 수정하거나 확장 기능을 직접 개발하여 사용하더라도 마찬가지이다. 즉, 타인에게 배포하지 않고 혼자서 쓴다면 고친 부분을 공개하지 않아도 된다. 상업용 홈페이지를 만든다해도 소스코드를 공개할 필요가 전혀 없다.[32]

그러나 직접 개발한 확장기능[33]을 제3자에게 배포 또는 판매할 경우에는 구매자에게 반드시 소스코드를 제공해야 하며, 이 소스코드의 라이선스는 GPL이어야 한다. LGPL 라이선스하에서는 이들 확장기능 제품의 라이선스를 개발자가 임의로 선택할 수 있고 심지어 암호화하여 숨길 수도 있지만, GPL 라이선스하에서는 이들 확장기능 제품은 GPL만 가능하고 소스코드도 함께 제공해야 한다는 점이 다르다.

라이믹스 확장기능의 소스코드를 구입 혹은 제공받은 사용자는 개발자의 허락이 없더라도 그 제품의 소스코드를 제 3자에게 공개, 수정, 재배포 할 수 있다. 설사 개발자와 사용자간의 1:1 계약에 따라 개발한 소스코드라고 하더라도, 확장기능을 사용한 경우에는 GPL 라이선스이어야 하기 때문에, 계약과는 무관하게 사용자가 소스코드를 공개하는 것을 개발자가 막을 수가 없다. 단기적으로는 개발자들에게 불리한 조항이 될 수도 있지만, 사용자들에게 이익이 되어 수요가 늘어나므로, 장기적으로는 개발자들에게도 결국은 이익이 된다. Wordpress, Drupal, Joomla 등 세계적인 CMS들이 GPL을 선택하는 이유이다.

LGPL 라이선스하에서는 판매하는 모듈이나 애드온의 소소코드를 난독화해서 제공할 수도 있는데, 세월이 흘러 개발자와 연락이 끊기거나 일방적으로 사후 지원을 종료하면 사용자는 큰 난관에 처하게 된다. PHP 특성상 소스코드 자체는 제공되지만 난독화 된 경우 이를 수정하기 곤란할수 있으며, 난독화가 되어 있지 않아도 라이선스상 수정을 제한하는 경우가 흔하기 때문에 개발자가 사후지원을 중단하더라도 사용자는 가지고 있던 소스코드를 다른 개발자에게 보여주고 개선해달라고 위탁할 수도 없게 된다.

그러나 라이믹스처럼 GPL 라이선스를 채택하면, 라이믹스의 확장기능을 사용하는 모듈이나 애드온들도 GPL이어야 하기 때문에, 개발자는 사용자에게 소스코드를 반드시 제공해야 하고,[34] 추후 개발자와 사용자간의 연락이 끊기더라도 사용자는 자유롭게 다른 개발자에게 해당 프로그램의 유지보수 및 개선을 위탁할 수 있다.

GPL 라이선스에도 한계는 있는데, 라이믹스의 확장기능을 사용하지 않는 경우에는 GPL 라이선스이어야 할 의무가 없다는 점이다. HTML, CSS, JS, 이미지, 아이콘, 폰트 같은 것들이다. 즉, 레이아웃이나 스킨 같은 것은 GPL이 아니어도 된다는 뜻이다. 물론 이것들도 라이믹스의 내부함수를 호출하는 경우가 있으면 GPL이어야 하지만, 아니라면 다른 라이선스를 선택할 수 있다. 모듈이나 애드온에도 스킨이 들어있을 수가 있는데, 이 부분에만 다른 라이선스를 적용하는 경우도 있다.

8. 확장 기능

라이믹스에 모듈을 추가하면 기능을 무한대로 늘릴 수 있다. 기본 기능인 게시판, 문서, 알림 등도 모듈로 구현되어 있다. 쇼핑몰 기능도 모듈을 추가하여 구성할 수 있는데, 대표적인 것이 누리고 쇼핑몰 모듈이다. 누리고는 GPL v2 라이선스로 되어 있기 때문에 누구나 무료로 사용할 수 있고, 수정 및 재배포도 자유롭다.[35]

애드온은 간단한 기능을 추가하거나 기존 기능을 변화시킬 때 사용된다. 기존의 기능들 앞/뒤에 새로운 함수를 삽입하여 기존 기능의 동작 방법을 변화시키는 것이다. 글자 색을 변화시키거나 링크를 자동 생성하는 등의 간단한 애드온부터, 문서 편집시에 클립보드에 있는 이미지를 자동으로 붙여주거나 사진을 마우스로 끌어다 편집창 위에 놓으면 자동으로 첨부파일에 추가해주는 애드온[36]도 있다.

호출할 때만 작동해도 되는 수동적인 기능은 위젯으로 구현할수도 있다. 최신글이나 댓글만 모아서 보여주는 기능, 게시판에서 이미지만 뽑아서 보여주는 기능, 사용자 입력을 받아 API를 호출해주는 도구, 로그인 정보를 요약해 보여주는 창, 채팅 서비스 위젯 등이 대표적인 예이다. 위젯은 캐시를 적용할 수 있는데, 이를 잘 활용하면 서버의 부하를 크게 낮출 수 있다.[37]

9. 여담

10. 관련 문서



[1] 소프트웨어 개발(Software Development)에서 사용하는 용어로, 수정 및 재배포를 허용하는 오픈소스 소프트웨어의 소스코드를 가져와서 새로운 개발을 시작하는 행위를 포크(Fork)라고 한다. [2] 사용자 커뮤니티인 XETOWN과 개발자들이 이용하는 GitHub를 통해 의견이 수렴되었다. [3] XE의 미래가 불확실함을 느끼고 새로운 라이믹스 개발을 시작한다. 즉흥적으로 시작한 것이 아니고, 필요성과 지속 가능성에 대해 6개월간이 논의와 고민이 있었으며 장문의 사업 계획서도 작성했다고 한다. [4] 인용: 라이믹스는 XE와 단절하지 않고 XE를 계승 하기로 결정했다. [5] 라이믹스 베타테스트 중의 버전관리 개발자 노트 [6] 라이믹스만의 자체버전 부여 시작 [7] 라이믹스 2.0에서 달라진 점 [8] 라이믹스 2.1 릴리즈 노트 [9] 라이믹스 소셜 로그인 모듈 소스코드 [10] 라이믹스 이슈 GitHub 게시판 [11] 라이믹스 최소 설치 환경 라이믹스 설치환경 [12] 라이믹스는 php 8.x를 지원하지만 서드파티의 모듈, 스킨, 레이아웃, 위젯, 애드온 등에서는 아직 지원이 안되는 경우도 있을 수 있다. [13] MariaDB 10.3 이하 및 MySQL 5.0.7 ~ 5.6 버전도 사용은 가능하지만 End of Life가 지난 버전을 사용하는 것은 바람직하지 않다. 특히 MySQL 5.5.2 이하는 3바이트 문자(utf8mb3) 까지만 지원하기 때문에 4바이트(utf8mb4) 이모지는 사용할 수 없다. DB 스토리지 엔진은 InnoDB를 권장하고, 문자 인코딩은 utf8mb4를 권장한다. [14] common이나 mysql을 설치하면 pdo 모듈이 함께 설치되는데, 만약 설치되지 않으면 pdo 모듈을 추가로 설치해줘야 한다. 라이믹스 2.0 이상부터는 API로 MySQLi를 사용하지 않고 PDO_MySQL을 사용하기 때문에 pdo 모듈이 필요하다. [15] PHP 8.0 부터는 json이 php 자체에 내장되어 있기 때문에, 더 이상 별도의 extension은 설치할 필요가 없다. [16] 과거에는 mcrypt를 사용하기도 했으나 PHP 7.2 부터는 openssl을 사용한다. PHP 7.2에서 mcrypt 모듈이 제외되었기 때문이다. openssl은 PHP 자체에 내장되어 있기 때문에 별도의 extension은 설치할 필요가 없다. [17] exif 모듈은 이미지 자동회전 기능에 필요하다. [18] fileinfo 모듈은 첨부파일 보안검사를 할 경우에 필요하다. [19] 정상 동작하지 않는 것을 넘어 라이믹스 동작을 방해하는 자료는 블랙리스트 처리될 수 있다. [20] XE에서 라이믹스로 업그레이드 하는 방법 라이믹스로 업그레이드 [21] XE 버전별 날짜 [22] 라이믹스 버전별 날짜 및 릴리즈 노트 [23] 라이믹스 RVE-2022-1 취약점 패치 릴리즈 노트 [24] 라이믹스 RVE-2022-2 취약점 패치 릴리즈 노트 [25] 라이믹스 RVE-2022-3 취약점 패치 릴리스 노트 [26] 라이믹스 RVE-2023-1 취약점 패치 릴리스 노트 [27] 2007년 8월 12일에 XE 0.1.0이 최초로 발표되었다. [28] 이후의 비공식 패치는 XE 비공식 패치에서 찾을 수 있으나 부득이한 경우에만 사용하고, 라이믹스로 업그레이드 해야 한다. [29] 물론 라이믹스와 워드프레스는 서로 지향하는 바가 다르므로(CMS vs 블로깅 플랫폼) 1:1 비교는 올바르지 않지만, 적어도 같은 서버에서 기본 상태에서는 라이믹스가 훨씬 빠른 결과를 보여줬다. 속도 비교 자료 [30] 과거에는 XE를 무거운 CMS라고 여기는 사용자들이 있었다 [31] 특히 한국형 게시판으로 대표되는, 게시글과 댓글로 구성된 구조 [32] 라이믹스의 라이선스 [33] 확장기능이라함은 주로 모듈이나 애드온들을 뜻하고, 스킨이나 레이아웃은 해당이 안될 가능성이 높다. 라이믹스의 API만을 콜하는 경우에는 확장기능을 사용하는 것이 아니다. 그러나 설사 스킨이라고 하더라도 라이믹스의 내부 함수를 호출하여 라이믹스에 기능을 추가하는 것이라면 확장기능을 사용하는 것이다. 라이믹스의 확장기능을 사용하는 제품은 GPL 라이선스여야 한다. [34] 특히 GPL 라이선스상 최종 사용자가 해석할 수 있는 형태로 제공해야 하므로 난독화해서 배포할수 없다는 것도 큰 차이점 중 하나이다. [35] 여담으로 원래 XE와 마찬가지로 회사 주도로 개발이 되었던 자료이나 개발 중단시 오픈소스 라이선스로 배포되었고, 이를 라이믹스 개발진 중 한명이 이어받아 개발을 계속하고 있다. [36] 클립보드 이미지를 첨부파일로 추가해주는 바로 업로드 애드온 [37] 대표적으로 사이트 우측에 항시 띄우는 최근 글/댓글 위젯에 캐시를 적용하는 것이 일반적이다 [38] 특히 가상 사이트(멀티 도메인 기능으로 대체), 모듈 확장 기능 등 Rhymix에서 제거된 기능에 의존하는 자료는 동작하지 않는다. 대표적으로 카페XE 모듈이나 텍스타일, 업글타일 모듈 등이 있다.