2026년 7월 Nimf, Clair, Guiyom 개발 진행 상황

최근 Nimf, Clair, Guiyom의 개발이 예상보다 오래 걸리고 있습니다. 겉으로 드러나는 기능을 추가하는 작업보다 프로젝트의 기반 구조를 정리하는 작업이 많아졌기 때문입니다.

세 프로젝트는 서로 독립되어 있지만 개발 방향은 긴밀하게 연결되어 있습니다. Clair은 여러 운영체제에서 공통으로 사용할 기반 기능을 제공하고, Guiyom은 Clair 위에서 동작하는 크로스 플랫폼 GUI 툴킷이며, 향후 Nimf는 Clair과 Guiyom을 활용할 예정입니다.

현재 개발 상황을 간략히 정리합니다.

Nimf

Nimf는 장기적으로 주요 구성 요소를 Ada로 포팅하고, 다양한 데스크톱과 애플리케이션 환경에서 안정적으로 입력할 수 있도록 고도화할 계획입니다.

기존 Nimf에는 GUI 툴킷과 입력기 서버의 메인 루프가 밀접하게 연결된 부분이 있습니다. 이 때문에 그래픽 환경에서 콘솔로 전환했을 때 GUI 관련 처리가 정지하면 Nimf 서버의 통신까지 영향을 받아 콘솔 입력기가 정상적으로 동작하지 않는 문제가 발생할 수 있었습니다.

GTK 처리를 별도의 스레드로 분리하고 이벤트 큐를 통해 Nimf의 메인 루프와 통신하도록 구성하는 방법도 시험했지만, 장시간 동작하면 결국 멈추는 문제가 있어 근본적인 해결책이 되지 못했습니다.

이 문제는 향후 Guiyom을 Nimf에 적용하여 해결할 계획입니다. GUI 계층의 상태가 입력기 서버의 핵심 동작을 차단하지 않도록 구조를 개선하는 것이 목표입니다.

또한 Wayland, Flatpak, Snap, SDL, Wine 등의 환경에서는 기존 입력기 인터페이스만으로 입력이 제대로 전달되지 않는 경우가 있습니다. 이러한 호환성 문제도 해결할 예정이며, 필요한 경우 IBus 호환 인터페이스를 구현하는 방안도 고려하고 있습니다.

현재는 첫 단계로 nimf-settings를 Ada와 Guiyom을 사용하는 구조로 전환하는 작업이 진행되고 있습니다. 이후 설정 프로그램에서 확립한 패턴을 바탕으로 Nimf의 핵심 상태 관리, IPC, 서비스 관리와 입력 엔진 공통 계층을 점진적으로 Ada로 이전할 계획입니다.

다만 Nimf의 본격적인 고도화에는 Guiyom과 Clair의 기반 기능이 필요하므로, 전체 일정은 두 프로젝트의 개발 상황에 영향을 받고 있습니다.

Guiyom

Guiyom은 Ada로 개발 중인 크로스 플랫폼 GUI 툴킷입니다.

기존 GUI 툴킷과는 다른 독특한 설계를 채택하고 있지만, 아직 P3 특허 출원 전이므로 구체적인 거시 설계와 세부 설계는 공개하지 않습니다.

Guiyom은 대규모 또는 극한 상황에서도 성능, 안전성, 신뢰성, 유지보수성을 확보하는 것을 주요 목표로 삼고 있습니다. 정상적인 실행 경로뿐 아니라 여러 실패 상황에서도 상태와 자원이 예측 가능하게 관리되도록 설계하고 구현하고 있습니다.

현재는 핵심 기반과 플랫폼별 구현을 다듬고, P3 특허 출원 전에 필요한 기술 구현과 검증 작업을 진행하고 있습니다.

Guiyom의 개발에는 Clair의 이벤트 루프와 여러 플랫폼 공통 기능이 필요합니다. 따라서 현재 Clair에서 진행 중인 Microsoft Windows 지원과 플랫폼 중립화 작업이 Guiyom의 전체 일정에도 영향을 주고 있습니다.

Clair

Clair은 크로스 플랫폼 애플리케이션 개발에 필요한 시스템 기능을 제공하기 위해 Ada로 개발 중인 라이브러리입니다.

이벤트 루프, 비동기 입출력, 신호, 프로세스 실행, 시간과 타이머, 파일, 동적 라이브러리, 로깅, 국제화, 정규식과 테스트 기반 기능 등을 제공하는 것을 목표로 하고 있습니다.

공개 저장소는 다음 주소에서 확인할 수 있습니다.

https://github.com/hodong-kim/clair

현재 Clair 개발의 중심은 Microsoft Windows 지원과 플랫폼 중립화입니다.

기존 Clair에는 Unix 계열 운영체제를 전제로 작성된 기능과 인터페이스가 일부 남아 있었습니다. Windows 지원을 추가하는 과정에서 단순히 Windows용 코드를 덧붙이는 것만으로는 충분하지 않았고, 플랫폼 공통 계약과 운영체제별 구현을 명확히 분리하는 작업이 필요해졌습니다.

이에 따라 Windows용 이벤트 루프와 시스템 기능을 구현하는 한편, Unix 전용 기능과 플랫폼 공통 기능을 분리하고 있습니다. 파일, 프로세스, 로그 등의 주요 기능도 여러 운영체제에서 일관되게 사용할 수 있도록 재검토하고 있으며, Windows용 의존성과 바이너리를 재현 가능하게 생성하고 검증할 수 있는 빌드 환경도 정비하고 있습니다.

Ada뿐 아니라 C와 외부 프로그램의 테스트까지 통합할 수 있도록 Clair.Test도 언어 중립적인 테스트 프레임워크로 확장하고 있습니다.

따라서 Clair은 개발이 중단되거나 단순히 지연된 상태라기보다, Windows 지원을 계기로 작업 범위가 확대된 상태에 가깝습니다.

단기적으로는 이 작업이 전체 프로젝트의 병목으로 작용하고 있지만, 장기적으로 Linux, FreeBSD, macOS, Windows 등 여러 환경에서 동일한 상위 API와 일관된 실패 처리 방식을 제공하기 위해 필요한 과정입니다.

전체 개발 상황

현재 세 프로젝트의 의존 관계는 대략 다음과 같습니다.

Clair
  ↓
Guiyom
  ↓
Nimf 고도화

Clair의 Microsoft Windows 지원과 플랫폼 중립화 작업이 진행되어야 Guiyom의 크로스 플랫폼 기반을 안정적으로 확장할 수 있고, Guiyom이 충분히 준비되어야 Nimf의 GUI 구조와 입력기 서버 구조를 본격적으로 개선할 수 있습니다.

이 때문에 Nimf와 Guiyom의 개발 속도가 느려진 것처럼 보일 수 있지만, 실제로는 Clair을 중심으로 공통 기반을 정비하는 작업이 계속 진행되고 있습니다.

당장 눈에 보이는 기능을 빠르게 추가하기보다는, 이후의 기능 개발이 특정 운영체제나 GUI 툴킷의 제약에 다시 묶이지 않도록 기반을 먼저 다지는 과정입니다.

정확한 완료 일정은 아직 정하기 어렵지만, 현재의 병목을 해소한 뒤에는 세 프로젝트의 개발을 보다 독립적이고 병렬적으로 진행할 수 있을 것으로 기대하고 있습니다.