2019년 3월 1일 금요일

2019년 2월 그놈 '비공개' 모임 회고

본 글에 들어가기 전 우선 갑작스러운 연락에 친절하게 대응해주시고
소규모 모임을 위해 물심양면 도움에 힘써주신 코스랩에 진심으로 감사드립니다.


갑작스럽게 그놈 3.32 릴리스 일정이 바뀌었습니다. 예정보다 1~2주 정도 당겨졌습니다[1].
3월 9일로 잡아 다소 느슨하게 진행하려고 하였으나 위의 사유로 모임 2주전에 급하게 취소하였고 공개 모임을 준비하기에는 시간이 너무나 촉박하고 일정상 마무리 시간도 지극히 적어 이번 모임은 저비용 진행을 모토로 2월 24일 오후 2시부터 6시까지 선릉 코스랩 회의실에서 비공개 소수 모임으로 진행했습니다.


이미 절차와 방안을 알고 계시는 고정 참여자 분들께서 참여하셨으므로, 별도의 발표 또는 브리핑없이 소수의 인원으로 바로 모임 행사를 시작했습니다. 참석하신 분들은 나름 자신이 하고자 하는 분야 영역이 있으셔서  해당 번역 분야를 가시화 하고 참여 번역 대상의 분야를 확보하고 더 많은 그놈 패키지를 번역할 수 있도록 참여 구성원들간 논의를 통해 추가 담당 항목을 배정했습니다.
 
온라인상으로 번역에 꾸준히 참여하시는 다른 몇몇분들도 계시지만 해외에 계시거나, 개인적인 사유 또는 신분상 사유로 당일 참석하지 못하였거나 원격으로 참여해주셨습니다. 매년 2월, 8월이면 늘상 찾아오는 시기이지만 변함없는 애정과 열정으로 단순하고 세련된 그놈 데스크톱의 한글화에 늘상 참여해주시는 모든 분들께 감사드립니다.

 [1] GNOME 3.32 Release : https://wiki.gnome.org/ThreePointThirtyone

2018년 11월 15일 목요일

[책소개] The Architecture of Open Source Applications

http://aosabook.org/en/index.html

4권의 시리즈가 드디어 완결되었군요.

* 500 Lines or Less
* The Performance of Open Source Applications
* The Architecture of Open Source Applications 1
* The Architecture of Open Source Applications 2

실제 오픈소스 메인테이너 직접 자신이 만든 프로젝트의 구조를 설명하는 책입니다. 500 Lines or Less는 짧은 코드로 구현한 것을 설명하는 책입니다. 두번째 책은 오픈소스 프로젝트에서 어떻게 성능 문제를 해결했는지를 소개합니다. 모든 책이 온라인으로 읽을 수 있고, ebook과 종이책으로도 판매되고 있습니다. 이런 종류의 책은 찾기 힘드므로 실제 소프트웨어 개발에 많은 도움이 되리라 생각합니다.

2018년 10월 29일 월요일

Rust로 하는 GTK+ 프로그래밍

아래 글에서 간단하게 Rust를 이용해서 Gtk+ 프로그래밍하는 방법이 나와있습니다.
https://medium.com/@alex285/quickly-set-your-gtk-rust-environment-start-coding-9cdfb18b7729

코드는 아래와 같습니다.

extern crate gtk;
use gtk::*;
mod components;
use components::App;
fn main() {
    let app = App::new();
    app.window.show_all();
    gtk::main();
}

그놈에서도 공식적으로 Rust를 지원하려고 하는 것 같습니다.

https://wiki.gnome.org/Hackfests/Rust2017
https://wiki.gnome.org/Hackfests/Rust2018

그리고 참고할 만한 글..
https://plus.google.com/+WorldofGnomeOrg/posts/YB6mfiHqtrp







2018년 8월 29일 수요일

2018년 8월 그놈 모임 회고

1. 그놈 3.30 번역 진행 소개

  이번 2018년 8월 25일에도 어김없이 그놈 3.30 출시일이 도래함에 따라 지역화 행사를 진행했습니다. 이전에는 단순히 오픈소스 소프트웨어에 관심을 가지시던 분들이 많이 찾아오셨는데, 이번에는 업계에서 전세계를 대상으로 론칭하는 프로그램의 지역화에 관심을 가지시고, 실제로 한국어 지역화 분야에 경험이 있으신 분들께서 (대부분) 페이스북의 공지를 보고 찾아오셨습니다.


  늘 그렇지만 코스랩에서 물심 양면으로 지원해주신 점을 미리 알려드렸습니다(감사합니다!). 그리고, 자주 오시는 분들은 아시겠지만 그놈 프로젝트에서 활용하는 번역 '통계' 플랫폼 Damned Lies[1]에 얽힌 설명을 시작으로 번역, 검토, 수정, 제출에 이르기까지의 전 과정을 요약하여 설명해드렸고, 번역에 어떤 기술을 사용하는지, 서수 번역의 경우 어떻게 처리하는지, 실제로 번역했을 때 어떤 모양새로 나타나는 지 등의 내용[2][3]을 예를 들어 설명해드렸습니다.



2. 한국어 지역화 문제점 토의

  한국어 지역화에서 모두가 문제를 인지하고 있는 부분은 조사 처리 부분입니다. 단순히 한국어 단어만 배열하는 경우 앞서 나온 단어에 따라 어떤 규칙을 기반으로 은(는), 을(를), 이(가), (으)로를 넣으면 되는데, 전세계에서 사용하는 지역화 처리 프로그램의 경우 key-value 기반으로 프로그램 실행 후 번역 문자열을 대응하며, 아직 조사를 자동으로 처리하는 부분이 없습니다. 전세계 언어를 고려하였을 때, 기술적으로 어떻게 해결할 수 있을지 등에 대해 토의했습니다.

3. 실습/기여 진행

  오픈소스 소프트웨어 역사의 기록으로 남을 그놈 3.30의 지역화를 진행했습니다. 이번의 경우 분량이 많지 않은 관계로 형식 지정자(%ul, %d, %s)가 문장에 들어가는 경우가 많지 않아 실습 과정에 큰 어려움은 없었으나, 번역 스크립트 편집기와 검사 프로그램의 기본 검사 결과의 대응이 낮설어 마무리에 시간이 조금 걸렸습니다. 그놈 한국에서 번역 과정을 진행할 때 활용하는 류창우님의 자료(설명 슬라이드와 ko-po-check 프로그램[4])가 나날이 진화(?)하는 덕택에 비교적 큰 문제 없이 잘 넘어갈 수 있었습니다.

4. Acknowledgement

2018년 8월 25일 강남 토즈 2호점 그놈 지역화 모임은 대한민국 정부의 재원(과학기술정보통신부)으로 정보통신산업진흥원에서 설립한 공개소프트웨어개발자센터의 지원을 받아 진행했습니다.

5. Reference

[1] Damned Lies 그놈 3.30 - 한국어: https://l10n.gnome.org/languages/ko/gnome-3-30/ui/
[2] 그놈 3.30 지역화:  https://docs.google.com/presentation/d/1pOeIwZBXlBnx1LlDwf8oBmWSjKBRGU_oTNh7aP62awU/edit?usp=sharing
[3] 오픈소스 번역 기여하기 v3:
https://docs.google.com/presentation/d/15VBZrcejnShf7n6_9dMaw4XtNUHboiMHBx1RDYrxrp8/edit?usp=sharing
[4] ko-po-check - 한국어 po 파일 검사 툴: https://github.com/changwoo/ko-po-check/

2018년 5월 19일 토요일

2018년 5월 그놈 모임 회고

지난 2월에 류창우님 주최로 그놈 상반기 번역 모임을 진행했었습니다. 당시 모임 후 뒷풀이 자리에서 제가 5월 모임을 제안했었는데요, 그 때 제안에는 5월 모임의 주제가 없었습니다.  단지 그놈 핵페스트처럼 모여서 소스 뜯고 놀(?)면서 자유롭게 소스 패치 커밋을 진행하는 그런 분위기를 원했었거든요. 자유 오픈소스 커뮤니티 답게 어떤 주제에 속박되지 않고 즉흥적으로 그날 주제를 잡고 진행을 했으면 좋겠다 해서 주제에 속박되지 않는 모임을 진행하려고 했습니다.

그런데, 4월 28일 우분투 한국 커뮤니티에서 우분투 18.04 LTS 릴리즈 파티 겸 세미나에 제가 우연히 참석을 해보면서 hanjp 프로젝트 내용을 듣고 약간 생각이 바뀌었습니다.

1) 그놈 환경에서 한글 입력기 관련해서 계속 문제가 나타나는 상황
2) 우분투 한국 커뮤니티쪽에서 진행하는 한글-가나 입력기(hanjp 프로젝트) 프로젝트가 몇가지 걸리는 문제로 지지부진한 상황

입력기라는 주제가 겹쳐져 두 커뮤니티가 같이 모임을 하면 어떨까?  멘토-멘티 조인트 모임으로서의 의미도 있고 하여 모임에 오시겠다고 한 몇몇분께만 (...) 여쭤봤는데 다들 괜찮다고 해주셔서 5월 세미나 주제를 "한글 입력기"로  정하고 모였습니다.

그래서 5월 19일 그놈 한국과 우분투 한국 커뮤니티 공동으로 선릉역 5번 출구 아남타워 7층 과학기술정보통신부 정보통신산업진흥원 글로벌오픈프론티어 개발자 랩에서 모임을 진행했습니다(길다 OTL). 그놈 모임 관점에서는 오랜만에 고등학생분도 오시고 모임 참여자 평균 연령이 많이 낮아졌(?...) 습니다.

1. 한글 입력 동작 요약

이 부분은 제가 발표했습니다. 정말 핵심적인 부분에 있어서는 다들 알고 있을거라 짐작을 해서(실제로도 거의 대부분 이해하는 부분이었습니다) libhangul과 ibus, ibus-hangul 의 동작 관계에 대해 설명하고 간단하게 상태 전이 그래프를 보여드렸습니다. 이 모임에는 한국어를 모르는 분들이 없기 때문에 어쨌든 간단히 넘어갔습니다. 모임이 있기 전 메신저 대화방을 통해 들은 몇가지 고려사항도 언급했습니다.

Slide: https://www.slideshare.net/gnomekr/20180519-hangul-processing

2. 리눅스 데스크톱의 한국어 입출력

류창우님께서 과거에 XKB에 기여하신 내용을 바탕으로 구현 배경과 동작 흐름 등을 정리하여 발표해주셨습니다. 한글 입력기는 X.org 뿐만 아니라 Wayland에서의 동작도 고려해야 하는 상황인데, Wayland에서 자체적으로 입력을 처리하는 지원 함수를 구현하는 내용 일부를 정리하여 공유해주셨고, "한글 입력 동작 요약" 과정에서 빠뜨린 preedit와 commit 처리 과정의 알고리즘을 정리하여 보여주셨습니다.

Slide: https://www.slideshare.net/gnomekr/korean-input-overview-in-the-linux-desktop

3. hanjp

김광연 학생이 현재 작성중인 코드를 모두 보여주면서 빌드 및 테스트를 할 수 있도록 테스트 코드를 작성하였고, 현재 막히는 부분이 어디 부분인지, 빌드에 필요한 옵션은 무엇인지, 오류나는 부분이 어디인지 찾고 이를 해결할 방안에 대해 논의하였습니다. 류창우님과 문관경님께서 gcc 빌드 옵션, Makefile 작성, gdb 디버깅에 많은 도움을 주셨습니다. 결과와 참고자료는 항상 github.com 한국 우분투 커뮤니티 계정에 공유하고 있습니다.

참고: https://github.com/ubuntu-kr/hanjp-im

4. jhbuild를 활용한 그놈 개발 환경 구축, 빌드, 테스트, 이슈등록(문관경)

그놈 기반 프로그램은 단순한 앱 프로그램도 있지만, 시스템 전반적으로 영향을 주는 라이브러리나 시스템

*Note: 일반적으로 Javascript(gjs)로 작성하는 부분에 대해서는 진입장벽이 상대적으로 낮은데, gnome-shell에 익숙해질 필요가 있습니다. 이 분야 개발자들이 Inspector 대용으로 쓸 수 있는게 looking-glass라는 그놈 쉘 확장 기능이며, 객체의 속성, 값을 볼 수 있습니다. 이걸 쓰면 어느정도 익숙해지는데 도움을 받을 수 있습니다.

참고 1: https://docs.google.com/document/d/1F5Yf515SgZPimIujRmTgbtY78aVLWS3EpU_z5TRyIJs/edit
참고 2: https://wiki.gnome.org/Projects/GnomeShell/DebuggingJavaScript

5. 기타참고

(1) KDE 입력기 자료 링크 공유(성대현)

Complex text input in Plasma(KDE mailing list)
https://mail.kde.org/pipermail/plasma-devel/2017-April/068978.html

Complex text input in plasma
https://blogs.kde.org/2017/04/06/complex-text-input-plasma

Akademy 2017 Input Methods in Plasma 5
Modern and global text input
https://conf.kde.org/en/akademy2017/public/events/359

Input Methods in Plasma 5 - Eike Hein
https://www.youtube.com/watch?v=wE0KDabPfsQ

(2) Wayland 한글 입력 문제 해결 시도(문관경, 류창우)

wayland text input breaks Korean Hangul preedit (#152)
https://gitlab.gnome.org/GNOME/mutter/issues/152

input method: Use IbusIMContext "forward-key-event" signal (#275)
https://gitlab.gnome.org/GNOME/gnome-shell/issues/275

(3) 문제 확인

entry -> entry buffer 한글 입력이 마우스 커서 누를때 마다 바뀌는 문제
text view 한글 프리에디트 커서 위치가 잘못되는 문제
한글입력하다 다른 윈도우에 갈때 입력 포인트가 따라가는 문제?
ibus restart 하면 먹통. wayland.  한글말고도 마찬가지일것

6. 사진

우분투 한국 커뮤니티 회장 한영빈군과 문관경님께서 촬영해주셨습니다. 감사합니다 :)
아, 제가 찍은 것도 있군요.




*참고 : 이 후기는 과학기술정보통신부 산하 정보통신산업진흥원 공개소프트웨어개발자랩의 지원을 받아 작성했습니다.

2017년 12월 15일 금요일

GTK+의 에모지


GTK+에 관심이 없더라도 GTK+에 관련되었으면서도 모두가 관심있을 만한 주제에 대해 써 보겠습니다. 바로 그놈 3.26부터 추가된 에모지!

🌀🌁🤐🤑🤒🤔 <- 이런 겁니다.

일본어로 그림 문자라는 뜻인 에모지(絵文字, えもじ)는 일본의 통신사들이 다양한 감정 표현을 문자 메시지에서 보낼 수 있도록 이것 저것 커스텀 이모티콘을 추가하면서 시작됐습니다. 아스키 아트로 이루어졌던 이모티콘에 비해 컬러풀한 에모지는 커뮤니케이션을 풍부하게 만들었죠. 유니코드에 들어 있는 에모지는 이들 일본 통신사들이 사용하던 에모지를 표준화하는 과정에서 나왔습니다. 하지만 표준화 덕분에 갈라파고스로 유명한 일본 내부에서나 쓰이던 에모지가 이제 전세계에서 쓰이게 되었습니다.

유니코드 에모지 목록: https://unicode.org/emoji/charts/full-emoji-list.html

에모지가 트루타입 폰트에 어떻게 들어 있는 걸까요? 트루타입의 글꼴 데이터는 기본적으로 윤곽선 곡선(spline)의 조합이지 에모지에서 나오는 색과 그라데이션 등등을 넣을 만한 곳이 없어 보입니다. 그래서 사실 곡선 데이터에 있는 게 아니라 별도의 테이블에 에모지 데이터가 들어 있는데요. 몇 가지 타입이 있습니다. 예전에는 어도비 Type3 폰트 표준에 따라 PNG 이미지를 내장하는 방식을 썼고 애플에서는 아직도 쓰는 방식입니다. 최근의 파이어폭스나 안드로이드, 그리고 우리가 쓰는 GTK+는 OpenType 폰트에 SVG 포맷의 벡터 그래픽 데이터를 넣는 방식을 씁니다. 아직 에모지 글꼴이 없으면 Noto Color Emoji 글꼴을 설치해 보세요. 구글 픽셀 등에서 사용하는 안드로이드 기본 에모지 글꼴입니다.이렇게 에모지가 이쁘게 나옵니다.



이런 내부 방식을 생각해 보면 그놈 3.26에서 어떤 소프트웨어가 업데이트되었을지 예상해 볼 수 있습니다. SVG in OpenType 에모지 폰트를 제대로 표시하려면 cairo, fontconfig, pango, gtk가 모두 업데이트되어야 합니다. 여러분 눈 앞에 에모지를 보이게 하는 소프트웨어는 이들 여러 라이브러리의 조합의 결과입니다.

👏👏👏

(추가) 최근 GTK에서 에모지를 입력하려면 입력창에서 Ctrl+. (점) 또는 Ctrl+; (세미콜론) 키를 눌러보세요. 단 GTK 기본 위젯이 아닌 자체 제작한 입력 위젯에서는 동작하지 않을 수 있습니다.

2017년 11월 20일 월요일

Firefox Quantum 설치하기

오랜만에 글을 씁니다.
Debian기반의 GNOME Dekstop에서 쉽게 Firefox Quantum을 설치할 수 있습니다.

$ sudo add-apt-repository ppa:mozillateam/firefox-next
$ sudo apt-get update
$ sudo apt-get install firefox

https://launchpad.net/~mozillateam/+archive/ubuntu/firefox-next

위에 나온대로 하면 됩니다.

두배 빨라진 Firefox를 Linux Dekstop에서 즐기세요~