다양한 플랫폼 앱 개발 경험, 개발 환경의 현실을 파헤치다!
저자는 C, POSIX, GTK/GNOME, Qt/KDE, WinUI 3, SwiftUI, Jetpack Compose 등 다양한 플랫폼에서 앱 개발을 시도함
각 플랫폼의 툴링 설정, UI 구축, 플랫폼 통합 경험을 상세히 분석하고, 개발 환경의 장단점을 평가함
GNOME, WinUI 3, Jetpack Compose 등은 부족한 문서화, 복잡한 빌드 과정 등으로 인해 부정적 평가를 받음
SwiftUI는 개발 편의성을 제공하지만, Apple 생태계의 제한적인 접근성에 대한 비판이 존재함
표준 C(Standard C)와 POSIX의 한계
저자는 표준 C(Standard C)를 사용하여 간단한 앱을 구현하며, 표준화된 언어의 장점을 강조한다. 하지만, POSIX 표준의 경우, c99 컴파일러 지정과 같은 성공적인 측면에도 불구하고, 표준화 지연(Slow Standardization)으로 인해 getrandom(2)과 같은 최신 기술을 포함하지 못하는 문제를 지적한다. 이는 POSIX의 관련성 감소(Decreasing Relevance)로 이어질 수 있으며, 개발자들에게 어려움을 초래할 수 있다.
GNOME/GTK 개발 환경의 문제점
GNOME/GTK 환경은 부족한 문서화(Incomplete Documentation)와 개념적 이해 부족(Lack of Conceptual Understanding)으로 인해 개발 경험을 저해한다. 특히, GObject 시스템에 대한 설명 부족은 개발자들이 이벤트 처리(Event Handling)와 디버깅(Debugging) 과정에서 어려움을 겪게 만든다. 또한, Flatpak SDK에서의 번역 문제와 GSettings 통합 문제 등은 GNOME 개발 환경의 복잡성(Complexity)을 보여준다.
Qt/KDE 개발의 CMake 문제
KDE/Qt 환경은 Qt 프레임워크의 편리함(Convenience)에도 불구하고, CMake의 불친절한 오류 메시지(Unhelpful Error Messages)로 인해 개발 과정에서 많은 어려움을 겪는다. 특히, ECM을 찾을 수 없다는 오류, 번역 관련 오류 등은 개발자들의 시간 낭비(Time Waste)를 유발한다. 하지만, KDE는 Qt의 상업적 관심(Commercial Interest) 덕분에 풍부한 문서화와 지원을 제공하며, 오류 발생 시 명확한 메시지를 제공하여 디버깅을 돕는다.
WinUI 3, SwiftUI, Jetpack Compose의 비교
WinUI 3는 XAML 기반의 자동 레이아웃(Automatic Layout)을 지원하지만, Microsoft 생태계의 혼란스러운 브랜드(Brand Confusion)와 느린 빌드 속도(Slow Build Speed)로 인해 개발 매력을 잃는다. SwiftUI는 개발 편의성(Ease of Development)을 제공하지만, Apple 생태계의 제한적인 접근성(Restrictive Ecosystem)과 호환성 부족이 단점으로 지적된다. Jetpack Compose는 부족한 문서화(Poor Documentation)와 비표준적인 개발 방식(Unpolished Framework)으로 인해 개발자들의 불만을 산다.