1. Search는 어떤 원리로 이루어지는가?
현재 내 컴퓨터에 등록된 remote를 확인하기 위해 flatpak remotes를 실행해주면 아래와 같이 fedora와 flathub이 등록되어 있는 것을 알 수 있다.

flatpak search gimp를 통해 fedora, flathub에서 gimp와 관련된 어플을 찾아볼 수 있다.

결과는 Name, Description, Application ID, Version, Branch, Remotes로 구성되어 있다. 우리가 흔히 GIMP로 생각하는 “그누 이미지 처리 프로그램 (org.gimp.GIMP)” 외에도 org.gimp.GIMP 계열의 여러 프로그램들, 그리고 Swatch, Photocrea 등 얼핏 보면 전혀 관련 없어 보이는 프로그램들도 검색된다.
그렇다면 Search는 어떤 기준으로 검색을 진행하는 걸까?
Flatpak 공식 문서에서는 다음과 같이 설명한다.
Searches for applications and runtimes matching TEXT . Note that this uses appstream data that can be updated with the flatpak update command. The appstream data is updated automatically only if it’s at least a day old.1
즉, Flatpak search는 Application ID만을 기준으로 검색하는 것이 아니라, 등록된 remote 내부의 AppStream metadata를 대상으로 검색한다.
AppStream metadata에는 application ID뿐 아니라 이름(Name), 요약(Summary), 설명(Description), 키워드(Keyword) 등 어플리케이션을 설명하는 다양한 정보가 포함되어 있다. 따라서 검색어가 application 이름에 직접 포함되어 있지 않더라도, 설명이나 키워드에 해당 단어가 포함되어 있으면 검색 결과에 표시될 수 있다.
검색 결과에 나타난 Photocrea를 통해 설명해보자.
해당 application ID인 com.github.vikdevelop.photopea_app 자체에는 gimp라는 문자열이 존재하지 않는다. 어플 자체도 GIMP와는 별 관계가 없어 보인다. 검색에 나오는 원인을 찾기 위해 AppStream metadata를 직접 살펴보자.
AppStream metadata는 기본적으로 Flatpak이 설치되는 /var/lib/flatpak 아래에 위치한다. 아래 명령어로 flathub의 appstream.xml 경로를 찾고, 그 안에서 Photocrea의 항목을 확인할 수 있다.
grep -A 50 "com.github.vikdevelop.photopea_app" $(find /var/lib/flatpak -name appstream.xml | grep flathub)
find /var/lib/flatpak -name appstream.xml | grep flathub 부분이 flathub의 appstream.xml 경로를 찾아주고, grep -A 50이 그 파일 안에서 com.github.vikdevelop.photopea_app이 처음 등장하는 줄부터 50줄을 출력한다. 경로는 보통 /var/lib/flatpak/appstream/flathub/x86_64/숫자/appstream.xml 형식이다.

위와 같이 Photocrea의 metadata가 출력되고, description 안에 아래와 같은 내용이 포함되어 있다.
It supports formats from Adobe Photoshop i.e. .PSD, but also .XCF from GIMP…
description에 GIMP가 포함되어 있기 때문에 검색 결과에 나오는 것이다.
결과적으로 Flatpak search는 단순히 설치 가능한 application ID 목록을 찾는 기능이 아니라, remote가 제공하는 AppStream metadata 전체를 대상으로 하는 검색 기능이라고 이해하면 된다.
다만 대소문자 구분에 관해서는 의아한 부분이 있다.
다시 Photocrea로 돌아가면, description에 포함된 부분은 GIMP로 gimp가 아닌 대문자로 구성되어 있다.
만일 대소문자를 구분하지 않는다면 flatpak search GImp에도 Photocrea가 나와야 할 텐데,

위와 같이 Photocrea가 온데간데 없다.
flatpak search GIMP는 더 이상하다. 오히려 여기에선 Photocrea가 무조건 나와야 할 거 같은데,

마찬가지로 없다.
이 부분에 대해서는 원인을 찾지 못했다.
