14P by GN⁺ 3일전 | ★ favorite | 댓글 1개
  • Python으로 프로덕트를 빠르게 구축할 수 있도록 설계된 웹 프레임워크 (Django를 포크)
  • 싱글 커맨드로 로컬 개발 시작 가능하며, 대시보드와 기능 플래그 등을 통해 프로덕션으로 이동할 수 있음
    • 스타터 킷을 클론 하여 빠르게 시작
  • 핵심 plain 패키지와 선택적으로 설치할 수 있는 공식 확장 패키지들로 구성

plain 패키지의 기능

  • URL 패턴을 Python 뷰 함수와 연결
  • HTTP 요청과 응답을 처리
  • Jinja 템플릿을 사용한 HTML 렌더링
  • 사용자 입력을 처리용 Form
  • 명령줄 인터페이스(CLI) 제공
  • CSS, JS, 이미지 등 정적 자산(Assets) 서빙 가능
  • Middleware를 통한 앱 기능 확장
  • 공식 및 서드파티 패키지를 쉽게 통합 가능
  • 앱 구동 전 사전 점검 기능(Preflight check system) 제공

퍼스트파티 패키지들을 통한 확장 기능들

  • plain.models: Postgres, MySQL, SQLite에 데이터를 저장할 수 있는 ORM 제공
  • plain.cache: 기존 데이터베이스와 함께 작동하는 캐싱 솔루션
  • plain.email: 앱 전반에 걸친 이메일 설정 및 전송 기능 제공
  • plain.sessions: 데이터베이스 기반 세션 읽기 및 쓰기 가능
  • plain.worker: 기존 데이터베이스를 지원하는 백그라운드 작업 솔루션
  • plain.api: 클래스 기반 뷰 아키텍처를 사용하여 JSON API 구축 가능

인증 관련

  • plain.auth: 사용자 추가, 요청 인증 및 뷰 제한을 위한 기반 제공
  • plain.oauth: 현대적인 소셜 로그인 및 API 접근을 지원하는 유연한 OAuth 솔루션
  • plain.passwords: 기존 방식의 비밀번호 기반 로그인 지원
  • plain.loginlink: 비밀번호 없이 로그인할 수 있는 일회성 로그인 링크 제공
  • plain.passkeys: 비밀번호 없는 로그인 기능 제공 예정

관리자

  • plain.admin: 완전히 커스터마이징 가능한 관리자 대시보드 제공
  • plain.flags: 데이터베이스 기반 기능 플래그로 사용자별 콘텐츠 제어 가능
  • plain.support: 타사 서비스 없이 고객 지원 제공
  • plain.redirection: 404 모니터링 및 데이터베이스에서 리디렉션 관리
  • plain.pageviews: 사용자가 보는 내용을 확인하고 더 나은 지원 제공

개발

  • plain.dev: 단일 명령어로 로컬 개발 환경 시작 가능
  • plain.pytest: 인기 있는 Python 테스트 라이브러리로 테스트 작성 및 실행 가능
  • plain.code: 기본 설정으로 Python 코드 포맷팅 및 린팅 가능
  • plain.tunnel: 웹훅 통합을 위해 로컬 앱을 인터넷에 노출 가능

프론트엔드

  • plain.tailwind: 인기 있는 CSS 프레임워크와의 일급 통합 제공
  • plain.htmx: 기존 도구를 사용하여 현대적인 사용자 경험 구축 가능
  • plain.elements: 앱의 템플릿에서 재사용 가능한 컴포넌트에 대한 새로운 패러다임 제공
  • plain.pages: HTML 및 Markdown을 사용한 파일 기반 라우팅 제공
  • plain.esbuild: JavaScript 컴파일을 위한 간소화된 빌드 프로세스 제공
  • plain.vendor: CDN에 의존하지 않고 JavaScript 및 CSS 자산을 다운로드하고 자체 호스팅 가능
Hacker News 의견
  • Django Rest Framework의 버그 트래커가 비공개로 전환되고 새로운 유지 관리자를 찾고 있다는 사실을 많은 사람들이 모를 수 있음

    • Django는 훌륭하지만 Angular의 르네상스와 같은 변화가 필요함
    • 기여하고 싶지만 대부분의 노력이 위원회에서 지연되고 있음
    • 포크는 해결책이 아닐 수 있지만 무언가 조치가 필요함
    • 기부가 필요하다면 기부를 받는 것도 방법임
    • Django 개발자 커뮤니티는 작고 밀접하게 연결되어 있음
    • 기여에 대한 열린 마음과 장기적인 관계를 중시하는 커뮤니티가 필요함
  • Django의 포크에 대해 혼합된 감정을 가짐

    • 유산 프로젝트 외부에서 실험하는 것은 가치가 있지만, 포크는 큰 선언임
    • Django의 집단적 노력이 무시되는 느낌을 받음
    • 상업적이거나 좁은 방향으로 나아갈 가능성을 우려함
    • Django에 대한 애정이 커지고 있음
  • Django의 강점은 ORM과 생태계/관용구임

    • 포크로 호환성을 깨는 이유를 이해하기 어려움
    • 더 나은 관리자 기능을 보고 싶지만, Django 프로젝트 템플릿으로 해결할 수 있음
  • Django의 몇 가지 단점이 있음

    • 작업자와 REST API가 1급 시민이 아님
    • Django 인증은 기본적이지만 유용함
    • Django에서의 어려움은 복잡성을 증가시킬 수 있음
  • Django에 대한 부정적인 감정에 놀람

    • Laravel과 Rails에 비해 Django가 뒤쳐져 있음
    • 생태계가 분열되어 있고 많은 패키지가 오래됨
    • Django의 정적 파일 파이프라인이 기본적으로 포함되지 않음
    • 사용자 모델 문제와 템플릿의 제한이 있음
    • Rails로 전환하여 웹 앱을 구축하기 시작함
  • Django에서 Supabase/Firebase로 전환함

    • 플러그인이 많고 자체 호스팅이 쉬움
    • Django 플러그인이 더 나을 것 같음
  • 설정이 클래스를 참조하는 문자열로 되어 있는 것이 싫음

    • 클래스나 객체를 참조할 때 쉽게 탐색할 수 있기를 원함
    • 나중에 플러그인으로 해결되지만, LSP가 무료로 지원함
  • Plain의 문서를 살펴봄

    • 모든 기능이 이미 Django에 있거나 잘 지원되는 패키지에 있음
    • Django의 폐기 정책이 프로젝트를 오래 유지할 수 있게 함
    • 위원회는 프로젝트의 상업화를 방지하고 대부분의 사용자에게 최선의 결정을 내림
    • Django는 신문을 위해 만들어졌지만 일반적인 목적의 프레임워크임
  • Plain이 성공할지는 모르겠지만 포크의 이유를 이해함

    • Django 리더십이 Django를 발전시키지 못하고 있음