Pocketbase가 FLOSS 펀드의 자금을 잃었다
죄송합니다. 번역하려는 전체 텍스트를 제공해 주시겠어요? 현재는 소스 링크만 포함되어 있어 번역할 내용이 없습니다. 텍스트를 알려주시면 한국어로 번역해 드리겠습니다.
Unfortunate update
FLOSS/fund가 다시 연락을 해왔지만, 예기치 않은 규제 제약으로 인해 그들의 GitHub와의 파트너십이 성사되지 못했습니다. 대신 그들은 인도에서 전신 송금을 진행하려고 하는데, 이는 여러 관할 구역을 넘는 서류 작업을 필요로 합니다. 저는 개인 민감 데이터를 처리·저장하는 과정에서 그들—또는 인도 정부—을 신뢰하지 못하기 때문에(특히 보안이 취약한 공유 메일함 채널을 통해) 이를 진행하는 것이 불편합니다.
그래서 결국 FLOSS/fund 신청을 철회하고 자금을 거절해야 했습니다.
큰 발표와 결정을 내리기 전에 더 신중히 조사하지 않았고, 자금이 실제로 지급되기를 기다리지 않은 것이 제 실수였지만, 어쩔 수 없는 상황이었습니다.
그럼에도 불구하고 주요 목표는 여전히 남아 있으며, 올해 안정적인 PocketBase 버전을 공개하려고 합니다 (하지만 확실한 약속은 아닙니다; 새로운 UI 기능 대부분은 이미 구현됐지만, 남은 작업에 대한 보다 구체적인 계획을 세우기 전에 다른 것을 찾아봐야 할 것 같습니다).
커뮤니티 피드백을 요청할 준비가 더 명확해지고 준비가 되면 새로운 공지를 올리겠습니다.
참여자와 저장소 구독자를 더 이상 스팸하지 않도록 이 토론을 잠급니다.
좋은 소식
어제 FLOSS/fund 가 PocketBase를 두 번째 펀딩 트랜치를 통해 후원하기로 결정했다는 소식을 전하게 되어 기쁩니다. 그들이 지원하기로 선택한 다른 멋진 프로젝트들에 대한 자세한 내용은 다음에서 확인할 수 있습니다:
Note: FLOSS/fund와 Zerodha는 내년에 프로그램을 계속 진행할 예정이므로, 오픈소스 프로젝트에 조건 없는 후원을 원하신다면 지원을 권장합니다.
이 자금을 통해 12월부터 최소 1년 동안 오직 PocketBase에만 전념하여 작업할 수 있게 되었습니다. 목표는 내년 말까지 안정적인 PocketBase 릴리스를 제공하는 것입니다. 현재 단기 목표는 UI 재작성에 집중하는 것입니다.
Source: …
UI Rewrite
PocketBase의 현재 가장 큰 제한 사항 중 하나는 대시보드 커스터마이징이 부족하다는 점입니다.
기존 앱 이벤트 훅을 이용해 서버‑사이드 플러그인을 만들 수는 있지만 (예: JS pb_hooks는 여기에서 구현되어 있습니다; 최근 커뮤니티 프로젝트는 #7273에서도 확인할 수 있습니다), UI를 확장할 수 있는 메커니즘은 현재 없습니다. 예를 들어 다음과 같은 작업을 할 수 없습니다:
- 기존 필드에 사용자 정의 옵션 추가
- 새로운 필드 등록
- 설정을 커스터마이징하고 “프로덕션” 모드에서 표시되는 내용 제어
- 새로운 OAuth2 제공자 등록
- 새로운 시스템 섹션 등록 (see #7232)
대시보드가 완전히 브라우저에서 실행되고 HTML/JS/CSS를 동적으로 로드하는 것이 브라우저의 강점이기 때문에 보통은 큰 어려움 없이 구현할 수 있을 것 같습니다. 하지만 목표는 단순히 페이지에 추가 자산을 주입하는 것이 아니라 위에서 언급한 여러 문제를 해결하고, 제가 만들 UI 플러그인에 맞는 방식을 제공하는 것입니다.
이상적으로는 외부 스크립트에서 SPA 라우터와 대시보드의 다양한 반응형 상태에 접근할 수 있어야 합니다. Svelte와 같은 컴파일 기반 프레임워크를 사용할 경우, PocketBase를 확장할 때마다 모든 사용자가 추가 UI Node.js 빌드 단계를 거쳐야 하는 상황이 발생할 수 있어 이를 피하고 싶습니다.
다른 런타임 친화적인 프레임워크(Vue, Preact, Lit, Solid, Alpine, Mithril)를 살펴보았습니다. 어느 것이든 작업을 수행할 수 있지만 Vue 또는 Lit가 가장 선호됩니다. 이들 자체 DSL이 다른 프레임워크와 충돌할 수 있고, 큰 리팩터링이나 방향 전환, 혹은 프로젝트가 중단될 경우 유지 보수가 어려울 것이라고 생각합니다.
PocketBase와 함께하는 저의 주요 목표는 안정적인 릴리스를 달성하면 프로젝트를 “완료” 상태로 표시하는 것입니다. 이후 새로운 변경이나 기능은 아주 드물게 추가될 것이며, 연 2회 진행되는 Go 릴리스 사이클을 따를 가능성이 높습니다 — 의존성이 적을수록 좋습니다.
최소 프레임워크로 실험하기
이를 염두에 두고, 지난 주말 몇 차례에 걸쳐 PocketBase에 필요한 최소 기능만을 제공하도록 설계된 새로운 프론트엔드 프레임워크를 실험해 왔습니다.
그 이름은 Shablon 입니다. 0개의 의존성을 가지고 순수 JavaScript로 작성되었습니다. 가능한 한 단순하게 유지하려고 하며, 컴포넌트 개념을 배제합니다; 모든 요소는 선택적인 반응성을 갖는 순수 DOM 요소가 될 것입니다. “컴포넌트”는 t.[tag](attrs, …children) 헬퍼나 document.createElement(tag)를 사용해 DOM 요소를 반환하는 함수일 뿐입니다.
Shablon은 Svelte만큼 인체공학적이거나 아름답지는 않지만, 우리의 목적에는 더 적합하다고 생각합니다. 만약 너무 못생기거나 비효율적이라고 판단되면 Vue나 Lit로 다시 전환할 것이며, 현재는 실험을 계속 진행할 예정입니다.
또한 필드, 버튼, 팝업, 드롭다운, 알림 등 재사용 가능한 요소들을 포함하는 새로운 PocketBase UI 키트를 개발 중에 있습니다.
다음은?
아마도 다음 주(또는 그다음 주) 중에 실험적인 relation‑filter 해석을 서브쿼리로 사용하는 최소한의 파괴적 변경에 대한 또 다른 발표가 있을 것입니다. 그 외에는 UI와 관련해 더 구체적인 것을 보여줄 때까지 프로젝트가 일시적인 “feature freeze” 상태에 들어갑니다. 시간을 충분히 가지고 서두르지 않으려 하니, 인내해 주세요.
다시 한 번 프로젝트를 지원해 주신 FLOSS/fund와 @zerodha에게 감사드립니다!