앱이 파일을 아무 데나 뿌리면 생기는 일
리눅스나 맥을 쓰다 보면 홈 디렉토리(~, 사용자의 기본 폴더)에 내가 만들지 않은 폴더와 점(.)으로 시작하는 숨김 파일이 잔뜩 생기는 걸 보게 돼요. 한 개발자가 모질라(Mozilla)의 이메일 클라이언트 썬더버드(Thunderbird)가 자기 홈을 어지럽힌다며 정리한 글이 이번 이야기의 출발점이에요. 사소해 보이지만, 사실 "앱이 사용자의 파일 공간을 어떻게 존중하느냐"라는 꽤 중요한 주제거든요.
XDG Base Directory, 이게 핵심이에요
리눅스 진영에는 XDG Base Directory Specification이라는 약속이 있어요. 쉽게 말하면 "앱이 파일을 종류별로 정해진 곳에 두자"는 정리 규칙이에요. 설정 파일은 ~/.config에, 캐시(임시 데이터)는 ~/.cache에, 다운로드받거나 공유하는 데이터는 ~/.local/share에 넣자는 거죠. 이렇게 하면 홈 디렉토리 최상단이 깔끔하게 유지되고, 백업할 때도 "설정만 백업하고 캐시는 빼자" 같은 구분이 쉬워져요.
문제는 오래된 앱들이 이 규칙을 안 지키고 옛날 방식 그대로 ~/.thunderbird처럼 자기 폴더를 홈 최상단에 통째로 만들어버린다는 거예요. 한두 개면 모르겠는데, 수십 개 앱이 다 이러면 홈 디렉토리가 점 파일들의 쓰레기장이 되는 거죠. 글쓴이의 불만은 바로 이 지점이에요 — 표준이 멀쩡히 있는데 왜 안 따르냐는 거죠.
이게 단순 미관 문제만은 아니에요. 캐시와 설정이 한 폴더에 뒤섞여 있으면 백업 전략을 짜기 어렵고, dotfiles(설정 파일들을 git으로 관리하는 방식)로 환경을 깔끔하게 버전 관리하려는 사람에게는 큰 걸림돌이 돼요. 같은 데이터를 여러 머신에서 동기화할 때도 "뭘 옮기고 뭘 버릴지" 경계가 흐려지고요.
왜 앱들은 이걸 안 고칠까
이유는 대부분 하위 호환성이에요. 수백만 사용자가 이미 ~/.thunderbird에 데이터를 두고 쓰는데, 경로를 갑자기 바꾸면 기존 설정을 못 찾거나 마이그레이션 과정에서 데이터가 깨질 위험이 있거든요. 그래서 개발팀 입장에선 "굳이 건드려서 욕먹느니 그냥 두자"가 되기 쉬워요. 모질라의 다른 제품인 파이어폭스도 비슷한 비판을 오래 받아왔죠.
임시방편으로 사용자가 직접 해볼 수 있는 것도 있어요. HOME 환경 변수를 다르게 잡아주거나, 일부 앱이 지원하는 전용 환경 변수(예: 프로필 경로 지정)를 활용하는 방법, 혹은 심볼릭 링크(바로가기 같은 것)로 실제 데이터는 정리된 위치에 두고 홈에는 링크만 남기는 트릭 등이 있죠. 다만 이건 앱이 알아서 해줘야 할 일을 사용자가 떠안는 거라 근본 해결은 아니에요.
한국 개발자에게 주는 교훈
이건 "남의 앱" 얘기로 끝나지 않아요. 여러분이 CLI 도구나 데스크톱 앱을 만든다면, 처음부터 XDG 규칙을 지키세요. 설정은 XDG_CONFIG_HOME, 캐시는 XDG_CACHE_HOME을 읽고, 없으면 표준 기본값으로 떨어지게 짜두는 거죠. 파이썬이라면 platformdirs, Rust라면 directories 같은 라이브러리가 이 경로를 알아서 잡아줘요. 처음에 5분 더 쓰면 사용자 수천 명의 홈 디렉토리를 깨끗하게 지켜주는 셈이에요.
한 줄 정리: 사용자의 홈 디렉토리는 공용 공간이고, 좋은 앱은 자기 물건을 정해진 서랍(XDG 경로)에 넣을 줄 알아야 해요.
여러분이 만든 도구는 설정 파일을 어디에 두나요? 혹시 홈 최상단에 점 파일을 뿌리고 있진 않은지 한 번 확인해보면 어떨까요?
🔗 출처: Hacker News
"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"
실제 수강생 후기- 비전공자도 6개월이면 첫 수익
- 20년 경력 개발자 직강
- 자동화 프로그램 + 소스코드 제공