GN⁺: Suckless.org - 덜 짜증나는 소프트웨어들
(suckless.org)철학(Philosophy)
- 우리는 dwm, dmenu, st 등 고품질 소프트웨어를 개발하는 커뮤니티로, 단순성, 명확성, 절제(Simplicity, Clarity, Frugality) 를 핵심 가치로 하고 있음
- IT 산업 전반에서 불필요하게 복잡하고, 오류가 많으며, 느린 소프트웨어가 만연한 현실에 반대함
- 우리 프로젝트는 이러한 흐름을 거스르고, 단순하고 최소한으로 유지하고 사용하기 쉽게 유지하는 것을 목표로 함
- 우리 프로젝트의 대상은 숙련된 컴퓨터 사용자 및 전문가임
- 대부분의 상용 소프트웨어 및 대다수의 오픈소스 프로젝트는 비전문가와 일반 사용자를 대상으로 개발되어 숙련된 사용자가 무시된다고 생각함
- 반면, 우리는 숙련된 사용자 시장이 지속적으로 성장하고 있으며, 고급 사용자가 자신의 작업 방식에 맞는 최적의 솔루션을 찾을 수 있다고 믿음
-
간단하고 우아한 소프트웨어를 설계하는 것은 훨씬 어려움
- 그러나, 신뢰성과 유지 관리를 위해서는 이러한 대가를 치뤄야 함
- 최소주의(minimalism) 를 유지하면 합리적이고 달성 가능한 목표를 가질수 있음
- 우리는 미니멀리즘과 명확성을 유지하기 위해 노력함
선언문(Manifest)
- 많은 개발자가 코드를 길게 작성하는 것을 성취로 착각함
- 그러나 코드의 양이 많다고 해서 반드시 소프트웨어의 품질이 향상되는 것은 아님
- 더 진전할 수록 더 스킬이 느는 것 같지만, 그건 착각일뿐
- 많은 개발자가 코드 품질에 신경쓰지 않고, 문제를 해결하는 것처럼 보이는 동작하는 것 자체에 만족
- 이러한 방식이 유지되면 시간이 흐를수록 방대한 양의 코드, 완전히 망가진 코드 구조, 결함 투성이의 시스템 설계가 남게 됨
- 이는 개발 프로세스에서 개념적 명확성과 무결성이 부족하기 때문
- 코드의 복잡성은 비효율적이고 일관성 없는 소프트웨어를 낳는 근본 원인
- 복잡한 코드로 인해 성능 저하, 리소스 낭비, 보안 취약점이 발생
- 유일한 해결책은 전체 프로젝트를 폐기하고 처음부터 다시 작성하는 것
- 문제는 고품질의 코드 재작성은 거의 이루어지지 않는다는 것
- 많은 개발자는 코드의 양을 자랑스럽게 여기며, 복잡성을 이해했다고 착각해 재작성할 필요가 없다고 생각
- 그들은 자신을 천재라 여기며, 복잡한 소프트웨어를 이상적인 목표로 착각
- 뛰어난 아이디어는 단순함. 훌륭한 소프트웨어도 단순함
- 단순함은 Unix 철학의 핵심
- 제거한 코드의 줄 수가 많을수록 더 큰 진전을 이룬 것이며, 코드가 줄어들수록 개발자는 더 숙련되고 소프트웨어는 더 나아짐
Hacker News 의견
-
Suckless의 Stali Linux FAQ는 나에게 큰 영향을 주었음. 그들은 Linux를 위한 완전히 정적으로 연결된 사용자 공간을 구축했음
- 이전에는 Linux의 "모든 것을 위한 공유 라이브러리" 접근 방식을 당연하게 여겼음
- 작은 CLI 도구를 만들 때, 배포 패키지를 만들거나 tarball을 사용해 라이브러리를 설정했음
- 이런 방식이 꼭 필요하지 않다는 것을 깨달았음
- 이후로는 가능한 한 정적 링크를 사용하고, 그렇지 않으면 AppImages를 사용함
- 동적 링크도 필요하지만, 기본적으로 소프트웨어 배포가 복잡할 필요는 없다고 생각함
-
dwm과 dmenu 덕분에 10년 동안 데스크톱이 거의 변하지 않았음. 최소주의가 가져다주는 안정성을 사랑함
-
for 루프 초기 선언을 사용하지 말라는 것이 이해되지 않음. variadic 매크로는 괜찮다고 하면서 for(int i = 0...)가 너무 복잡하다는 것이 이해되지 않음
-
최소주의를 받아들일 수 있지만, 모든 것이 필요하지는 않음
-
Suckless의 코딩 철학은 아름다움. 모든 소프트웨어가 이런 철학으로 작성되었으면 좋겠음. 하지만 창 관리자와 X-menu가 최고의 사례는 아님
-
커뮤니티의 드라마는 어리석음. 소프트웨어 철학을 사랑해서 이 도구들을 사용함. 저자의 개인적인 신념이나 정치적 성향은 신경 쓰지 않음
-
다양한 터미널을 평가한 후, st 포크로 돌아왔음. 몇 년 동안 사용해왔고, 안정적이고 버그가 없음
-
이 철학이 완벽하지는 않지만, 신뢰할 수 있는 소프트웨어를 만드는 데 가장 가까운 접근 방식임. 복잡성을 억제하는 것이 가장 어렵고 중요한 일임
-
surf는 WebKit2/GTK+ 기반의 간단한 웹 브라우저임. 웹사이트를 표시하고 링크를 따를 수 있음
-
dwm은 소스 코드를 편집하여 사용자 정의되므로, 이진 패키지를 만드는 것은 무의미함. 사용자 기반이 작고 엘리트적임
-
Suckless이지만 비동기적이고 모든 것을 위한 소프트웨어를 원함. 많은 앱이 단일 스레드로 협력하는 방식으로 작동하는 앱을 찾고 있음
-
이들이 존재하는 것이 좋음. 그들이 하는 일을 감사하게 생각함. 하지만 약간의 불편함이 있는 소프트웨어를 선호함. BSPWM의 설정은 적당하지만, C 코드를 다시 컴파일하는 것은 과함