# Plain - 파이썬용 웹 프레임워크

> Clean Markdown view of GeekNews topic #20036. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=20036](https://news.hada.io/topic?id=20036)
- GeekNews Markdown: [https://news.hada.io/topic/20036.md](https://news.hada.io/topic/20036.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2025-03-30T09:46:27+09:00
- Updated: 2025-03-30T09:46:27+09:00
- Original source: [plainframework.com](https://plainframework.com/)
- Points: 14
- Comments: 1

## Summary

Plain은 Python으로 빠르게 프로덕트를 구축할 수 있도록 설계된 웹 프레임워크로, Django를 포크하여 개발되었습니다. 이 프레임워크는 URL 패턴 연결, HTTP 요청 및 응답 처리, Jinja 템플릿을 사용한 HTML 렌더링 등 다양한 기능을 제공하며, 공식 확장 패키지를 통해 ORM, 캐싱, 이메일 전송, 세션 관리 등 추가 기능을 지원합니다. 또한, 관리자 대시보드, 기능 플래그, 로컬 개발 환경 시작, 테스트 작성 및 실행, 프론트엔드 통합 등 다양한 개발 및 관리 기능을 포함하고 있습니다.

## Topic Body

- 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 자산을 다운로드하고 자체 호스팅 가능

## Comments



### Comment 36509

- Author: neo
- Created: 2025-03-30T09:46:27+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=43512589) 
* 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를 발전시키지 못하고 있음
