미디어위키 1.42 업그레이드

최근 편집: 2024년 7월 1일 (월) 03:24
.
낙엽1124

청남색 벽에 양각으로 새겨진 42라는 숫자.
© Till Westermayer from Freiburg, Germany.

현지 시각 6월 27일, 미디어위키 1.42가 정식 출시되었으며 페미위키는 이에 따라 6월 30일 이를 적용하였습니다.

미디어위키는 코어와 확장 기능들로 나뉘어 있고, 패치 목록을 볼 수 있을 뿐 사용자에게 다가오는 변화는 정리된 자료가 적습니다. 독일의 위키팜인 프로위키에서는 미디어위키 1.42의 새 기능들로 다음을 소개하였습니다.[1]

  1. 향상된 편집 복구
  2. 환경 설정 기본값
  3. 분류 정렬 개선
  4. CSS의 "filter" 프로퍼티

세세한 내용은 저도 파악이 되지 않았고 해당 포스트가 자세히 다루고 있으므로 아래에서는 이 업그레이드를 위해 저희가 거쳤던 과정에 대해 알아봅니다.

자체 확장 기능 업그레이드

미디어위키는 사용자가 미디어위키에 기능을 확장할 수 있도록 훅이나 커스텀 특수 문서 생성을 지원합니다.

페미위키는 페미위키의 이미지를 대표하는 스킨에 더불에 다양한 필요에 의해 작성된 여러 개의 확장 기능을 갖고 있습니다.

확장 기능들에서는 미디어위키 코어를 라이브러리처럼 사용하고 있으며, 위키미디어 재단은 미디어위키에서 제공하는 함수와 API들을 deprecation 과정을 거치며 계속해서 바꿔나가고 있습니다.

이번 페미위키 확장 기능에서 대응해야 했던 코어의 변화를 간단히 소개하면 다음과 같습니다.

위와 같은 미디어위키 생태계의 변화로 불특정 다수가 영향을 받을 경우 위키미디어 재단에서는 보통 메일링 리스트 wikitech-l@lists.wikimedia.org를 통해 공지를 하거나, 적극적인 경우 모든 서드 파티 확장 기능 코드 저장소에 직접 메시지를 남깁니다.

그래서 평소 변화를 주시하고 부지런히 대응한다면 미디어위키 업그레이드에 별다른 수고가 없어야 하는데 이번 같은 경우 업그레이드 출시 후 몰아서 작업을 하다 보니 시간이 소요된 점이 있습니다.

OOUI 테마 업그레이드

위키미디어 재단은 과거 미디어위키 프론트엔드를 위해 OOjs UI라는 라이브러리를 만들었으며 이 라이브러리에서는 테마를 지원합니다. 페미위키는 간단히 색깔만 바꾸는 차원에서 커스텀 테마를 만들어 사용하고 있습니다.

한편으로 위키미디어 재단은 프론트엔드 프레임워크로 Vue.js를 사용하기 위해 노력하고 있으며 이를 위해 Codex라는 이름의 라이브러리를 개발 중입니다. 벡터 2022 스킨이나 메타위키에서 볼 수 있는 전역 주시목록은 Codex를 사용합니다.

어찌되었든 그리하여 OOjs ui는 조금씩 업데이트되고 있으면서도 레거시이며, 커스텀 테마를 관리하는 방법도 제공되는 Grunt 스크립트들에 의존합니다.

미디어위키 1.42에서 OOjs ui는 0.48.1에서 0.49.1로 업그레이드되었으며 페미위키 테마도 그에 맞게 업그레이드 하였으나 의도치 않게 잘못 반영된 부분이 있습니다. 이에 대해서는 확인이 되는 대로 수정할 예정입니다.

소도구 변화

위키미디어 재단에서는 기존에 미디어위키:Gadgets-definition 한 문서에서 고유한 문법으로 정의하던 소도구를 여러 개의 JSON 문서로 나눌 수 있도록 하는 작업을 과거에 진행했던 바 있습니다. 이를 위해 소도구 이름 공간과 소도구 정의 이름 공간이 예약되어 있었습니다.

다만 실제로 이 두 이름 공간은 위키 프로젝트 위키에서는 사용된 적이 없고 서드 파티 위키에서만 필요에 따라 켜서 사용할 수 있었습니다. 이유는 구현이 되어 있지 않아서 둘을 양립할 수 없다는 점 때문이었는데요. 즉 JSON 정의를 사용하려면 미디어위키:Gadgets-definition에 정의한 모든 소도구가 무효화된다는 것입니다.

이랬던 것이 1.42에서는 중간 다리 역할을 하는 계층(MultiGadgetRepo 클래스)이 생기면서 소도구를 정의할 때 편의에 따라 둘 중 한 방법을 쓸 수 있어졌습니다. 이에 따라 JSON 정의 방식이 대중 공개가 되기 전에 그동안 방치 중이던 소도구 정의 이름 공간에도 개편이 있었던 듯합니다. 페미위키에서는 개편 전 방식으로 소도구 정의를 사용하고 있었기에 업그레이드 직후 모든 소도구가 비활성화되는 부작용이 있었습니다.

이전에 소도구 정의 이름 공간에 위치하던 정의 문서들은 고유한 이름 공간 대신 미디어위키 이름 공간의 Gadgets의 하위 문서에서 .json으로 끝나는 이름을 갖고 있으면 인식되도록 변경되었으며 콘텐츠 모델을 사용할 수 없어 문서들을 scriptsstyles를 나눠 적어야 했던 기존과 다르게 모든 소도구들을 pages라는 이름으로 전달할 수 있게 되었습니다.

서드 파티 확장 기능 호환성

페미위키에서 사용 중이던 S3 미디어위키 확장 기능이 1.42 지원 버전을 릴리즈하지 않고 있어 master 브랜치를 사용하게 됐습니다. 페미위키는 S3를 연결하는 테스트 환경을 구축해 놓지 않고 있어서 이전에도 배포 후 문제가 생긴 경우가 많았습니다.

또 페미위키는 사용하는 확장 기능을 미리 다운받아 도커 이미지로 빌드하여 사용하고 있기에 확장 기능에 문제가 발견되어도 런타임에서 빠르게 이를 교체하기가 어렵습니다.

다행이 이번에는 확장 기능에 패치가 이미 있었고 그 패치가 파일 하나였기에 미디어위키 실행 커맨드 직전에 수정된 파일을 다운 받아 덮어 씌우게 하여 문제가 해결됨을 확인할 수 있었습니다.

맺음말

업그레이드를 통해 다음과 같이 개선이 필요한 부분들을 확인할 수 있었습니다.

자체 확장 기능의 테스트를 주시하여야 한다. 미디어위키에서 제공하는 Quibble과 Phan 등의 도구를 이용하면 업스트림 호환성 문제는 충분히 평소에도 확인이 가능합니다. 페미위키 확장 기능들은 이것이 잘 관리되지 않았기에 업그레이드 직전에 할 일이 많은 문제가 있었습니다.

블루 그린 배포를 가능하게 하여야 한다. 업그레이드 직후 네, 다섯 번 이상의 길고 짧은 점검 시간이 있었습니다. 현재 페미위키는 도커 이미지를 교체할 때 다운 타임이 발생하는 구조로 되어 있어 오히려 활발한 패치를 하기 저어되는 형편입니다. 이를 개선해 자잘한 버그들도 수정할 때마다 바로바로 확인이 가능하도록 할 필요가 있습니다.

출처

  1. ProWiki. “Discover MediaWiki 1.42 Features | ProWiki Blog” (영어). 2024년 6월 30일에 확인함.