배운 교훈 – Smashing Magazine
오픈 소스는 최신 소프트웨어 개발의 중추입니다. 커뮤니티 중심 및 회사 중심의 오픈 소스에 깊이 관여하는 사람으로서, 나는 다양한 접근 방식을 직접 경험할 수있는 특권을 가졌습니다. 이 기사는 TRESJS와 같은 프론트 엔드 JavaScript 라이브러리 및 내가 StoryBlok에서 기여한 도구에 중점을 둔 Modern OSS (오픈 소스) 작성자가 어떻게 보이는지에 도달합니다.
하지만 분명히하겠습니다.
OSS를위한 보편적 인 플레이 북은 없습니다. 모든 언어, 프레임 워크 및 프로젝트에는 고유 한 워크 플로, 규칙 및 문화가 있습니다. 괜찮습니다. 이러한 변형은 오픈 소스를 적응력 있고 다양하게 만드는 것입니다.
OSS 저작의 예술
오픈 소스 프로젝트 작성은 종종 자신의 가려움증을 긁는 것으로 시작됩니다. 개발자로서 직면 한 문제를 해결합니다. 그러나 “실험”이 견인력을 얻음에 따라 도전은 원래 아이디어의 단순성과 초점을 유지하면서 다양한 사용 사례를 해결하는 데 변화가 있습니다.
TRESJ를 예로 들어 보겠습니다. 내가 원했던 것은 개인 NUXT 포트폴리오에 3D를 추가하는 것이었지만 당시 Vuejs에서 3 개의 섬유를 반응하기위한 기능이 풍부한 대안이 없었습니다. 그래서 나는 하나를 만들기로 결정했습니다. 도서관이 출시 된 지 2 년이 지난 후에도 내 포트폴리오는 여전히 완료되지 않은 채 남아 있습니다.
커뮤니티 중심의 OSS 프로젝트의 예로서 TRESJS를 계속하면서 커뮤니티는 성장의 필수 요소였으며 아이디어, 제출 문제 (총 531 개)를 제공하고 풀 요청 (약 936 PR)을 제출하여 결국 90%가 생산에이를 제출했습니다. 저자로서, 이것은 일어날 수있는 가장 좋은 일입니다. 아마도 내가 오픈 소스와 사랑에 빠진 가장 큰 이유 중 하나 일 것입니다. 지속적인 협업은 새로운 아이디어가 의미있는 기여로 진화 할 수있는 환경을 만듭니다.
그러나 그것은 또한 자체 도전과 관련이 있습니다. 아이디어가 많을수록 프로젝트의 원래 목적에 초점을 맞추기가 더 어려워집니다.
저자로서, 도서관의 비전을 명확하게 유지하는 것은 우리의 책임입니다.
시간이 지남에 따라 가장 일관된 공동 작업자 중 일부는 핵심 팀의 일원이되어 도서관을 유지하는 책임을 공유하고 원래 목표와 일치하는지 확인하는 데 도움을줍니다.
프로젝트 스케일링, 특히 패키지 생태계로 성장한 TRESJS와 같은 프로젝트를 스케일링하는 데있어 또 다른 중요한 측면은 다음과 같습니다. 위임 능력. 프로젝트가 더 많이 확장 될수록 기고자들 사이에 책임을 분배하는 것이 더욱 중요합니다. 대표단은 대규모 워크로드의 부담을 줄이는 데 도움이되고 기여자에게 권한을 부여합니다. 소유권을 가지십시오 특정 영역의. 핵심 저자로서 필요한 도구, CI 워크 플로 및 명확한 규칙을 제공하여 가능한 한 간단하고 효율적으로 기여하는 과정을 제공하는 것도 마찬가지로 중요합니다. 잘 준비된 재단은 신규 및 기존 공동 작업자가 프로젝트를 진정으로 추진하여 진정으로 중요한 것에 집중할 수 있도록합니다.
회사 중심의 OSS 저자 : 스토리 블록 관점
이제 우리는 커뮤니티 중심의 OSS의 밝은 장소와 도전을 탐구했습니다.
이전 회사에서 내부 소스 및 오픈 소스에 대한 경험이 있었기 때문에 회사 환경의 맥락에서 OSS가 어떻게 작동하는지에 대해 이미 이해했습니다. 그러나 가장 의미있는 경험은 Devrel에서 풀 타임 개발자 경험 엔지니어로 전환했을 때 올해 초반, 특히 올해 초반에 나올 것이며, 역할을 수행하기 전에 이미 StoryBlok의 SDK 생태계에 기여하고 있었기 때문에“풀 타임”이라고 말합니다.

Storyblok에서 오픈 소스는 개발자와의 관계와 그들이 좋아하는 프레임 워크와 함께 제품을 원활하게 사용하는 방법에 중요한 역할을합니다. 우리의 목표는 풍미에 관계없이 동일한 개발자 경험을 제공하여 StoryBlok을 가능한 한 간단하고 효과적이며 즐겁게 사용하는 경험을 제공하는 것입니다.
이를 달성하려면 중요합니다 필요의 균형을 맞 춥니 다 회사의 더 넓은 목표와 함께 개발자 커뮤니티 (종종 고객의 요구를 반영하는). 내가 더 어려운 것 중 하나는입니다 기대치 관리. 예를 들어, 커뮤니티는 기능 요청 및 버그 수정이 빠르게 구현되기를 원할 수도 있지만 회사의 우선 순위는 안정성, 확장 성 및 종종 전략적 통합에 중점을 둘 수 있습니다. 명확한 의사 소통 그리고 우선 순위 양측 간의 건강한 정렬과 신뢰를 유지하는 데 중요합니다.
회사 중심의 오픈 소스의 고유 한 장점 중 하나는 리소스 가용성:
- 전용 엔지니어링 시간,
- 인프라 (많은 OSS 저자들이 자주 감당할 수없는),
- Design, QA 및 제품 관리와 같은 내부 팀의 지식에 대한 액세스.
그러나이 설정은 종종 레거시 코드베이스를 다루는 데 어려움을 겪습니다. 일반적으로 OSS 원칙에 익숙하지 않은 개발자가 작성했습니다. 이로 인해 프로젝트가 오픈 소스 모범 사례와 일치하기 전에 상당한 리팩토링이 필요한 구조, 테스트 및 문서의 불일치로 이어질 수 있습니다.
저는 커뮤니티 중심의 OSS를 재즈 음악과 같은 것으로 생각하고 있습니다. 대조적으로, 회사 중심의 OSS는 오케스트라와 비슷하며 지휘자가 공연을 안내하고 모든 조각이 완벽하게 맞도록 보장합니다.
진실은 대부분의 OSS 프로젝트 (대다수가 아닌 경우)는이 스펙트럼을 따라 어딘가에 존재한다는 것입니다. 예를 들어, TRESJS는 순전히 커뮤니티 중심의 프로젝트로 시작되었지만, 성숙하고 견인력을 얻었을 때, 회사 중심의 프로젝트의보다 전형적인 구조적 의사 결정의 요소는 초점과 확장 성을 유지하기 위해 필요 해졌습니다. 우리는 핵심 팀과 함께 프로젝트의 비전과 목표를 정의하여 원래 목적을 잃지 않고 계속 성장할 수 있도록 프로젝트의 목표를 정의했습니다.
흥미롭게도, 그 반대도 사실입니다. 회사 중심의 OSS는 지역 사회 중심 프로젝트에서 볼 수있는 빠르게 진행되는 혁신으로부터 크게 이익을 얻을 수 있습니다.
합류 이후 Storyblok 생태계를 소개 한 많은 개선 사항은 TRESJS에서 처음으로 탐구 한 아이디어에서 영감을 받았습니다. 예를 들어, TRESJS 생태계를 마이그레이션합니다 pnpm workspaces
간소화 된 종속성 관리가 Playground 및 E2E와 같은 개발 워크 플로우를 향상시킬 수있는 방법을 보여주었습니다.
마찬가지로, 성능과 개발자 경험이 향상 된 Jest에서 Vitest로 StoryBlok 테스트를 전환하는 것은 커뮤니티 중심 프로젝트에서 테스트가 어떻게 접근하는지에 영향을 받았습니다. 마찬가지로 Auto-Fix를 사용하여 Pretier에서 Eslint의 V9 Flat 구성으로 전환하면 Linting 및 서식을 단일 워크 플로우로 통합하여 개발자 생산성을 간소화하는 데 도움이되었습니다.
CI 워크 플로를 현대화하는 것과 같은 더 많은 세분화 된 프로세스가 Storyblok로 향했습니다. TRESJS의 단일 모 놀리 식 방출 동작에서 줄을, 테스트 및 빌드를위한 세분화 단계로의 진화는 StoryBlok에서 파이프 라인을 향상시키기위한 청사진을 제공했습니다. 우리는 또한 영감을 얻은 연속 릴리스 관행을 채택했습니다 pkg.pr.new
PRS를 병합하기 전에 실제 클라이언트 프로젝트에서 점진적인 변경 및 테스트 패키지 릴리스를보다 빠르게 전달할 수 있습니다.
즉, TRESJS는 특히 자동화 된 프로세스를 채택하는 데있어보다 성숙하고 전투 테스트 생태계를 가진 Storyblok에서의 경험을 통해 혜택을 받았습니다. 예를 들어, 우리는 종속성을 최신 상태로 유지하기 위해 의존적 인 부스러기를 통합하고 자동 머신을 사용하여 사소한 업데이트에 대한 수동 개입을 줄이고보다 의미있는 작업을위한 기고자의 시간을 확보했습니다. 또한 StoryBlok의 워크 플로에서 영감을 얻은 GitHub 액션을 사용하여 자동 릴리스 파이프 라인을 구현하여 TRESJS 생태계의 더 부드럽고 신뢰할 수있는 릴리스를 보장했습니다.
현대 오스 저작의 도전
이 기사를 통해 우리는 몇 가지 현대의 OSS 도전에 대해 다루었지만 크라운을받을 자격이 있다면 변화를 관리하고 호환성을 유지합니다. 우리는 특히 웹에서 기술 속도가 얼마나 빠른지 알고 있으며 사용자는 라이브러리와 도구가 최신 트렌드를 따라 잡을 것으로 기대합니다. 나는 과대 광고 중심의 개발이 재미있을 수 있다고 말한 최초의 사람은 아니지만, 특히 엔터프라이즈 상황에서 신뢰할 수있는 고성능 소프트웨어를 구축 할 때는 본질적으로 위험하고 최고의 동맹국이 아닙니다.
깨진 변화가 존재합니다. 그렇기 때문에 시맨틱 버전싱이 우리의 삶을 편하게하기 위해 작용합니다. 그러나 그것은 마찬가지로 중요합니다 안정성과 혁신의 균형. 이는 새로운 기능을 도입하거나 더 나은 성능을 위해 리팩토링하여 기존 API를 깨뜨릴 때 더욱 중요합니다. 내가 배운 한 가지 중요한 교훈 – 특히 Storyblok에서의 시간 동안 명확한 의사 소통. ChangeLogs, Migration Guide 및 Dowrecation 경고는 사용자의 전환을 매끄럽게하는 귀중한 도구입니다.
실용적인 예 :
개발자 경험 엔지니어로서의 첫 번째 프로젝트는
@storyblok/richtext
(글을 쓰는 시점에) Rich-Text 처리를위한 라이브러리는 한 달에 약 172k 다운로드를 볼 수 있습니다. 이 라이브러리는 내 시간 동안 Devrel로 제작되었지만 생태계 전반에 걸쳐 이전의 리치 텍스트 구현에서 사용자를 전환하려면 신중한 계획이 필요했습니다. 도서관은 기본 JS SDK의 의존성이 될 것이기 때문에 모든 프레임 워크 SDK로 전파 될 때 관리자와 함께 우리는 주요 릴리스 전에 레트로 호환 기간으로 여러 달 전환을 계획했습니다. 여기에는 커뮤니케이션 캠페인, 철저한 문서 및 중단을 최소화하기위한 점진적인 채택이 포함되었습니다.이러한 노력에도 불구하고 실수가 일어났습니다. 괜찮습니다. 리치 텍스트 전환 중에 업데이트가 제 시간에 도착하지 않았거나 통신 및 문서가 일시적으로 동기화되지 않은 경우가있었습니다. 이로 인해 커뮤니티 내에서 혼란이 생겼으며, Github 문제와 불화에 대한 적시에 지원을 제공함으로써 해결되었습니다. 이 순간들은 그것을 상기시키는 역할을했습니다 Semantic Versioning, Modular Architectures 및 세심한 계획을 사용하더라도 OSS 저작은 결코 완벽하지 않습니다.. 실수는 과정의 일부입니다.
그리고 그것은 우리를 다음과 같은 시점으로 데려갑니다.
결론
오픈 소스 저자는 지속적인 학습의 여정입니다. 각각의 실수는 개선 할 수있는 기회를 제공하며 각 성공은 협업 및 실험의 가치를 강화합니다.
오스를하는“완벽한”방법은 없으며, 그것이 그 아름다움입니다. 모든 프로젝트에는 커뮤니티와 그 기고자들이 형성 한 자체 워크 플로, 도전 및 퀴크 세트가 있습니다. 이러한 차이점은 오픈 소스가 적응 가능하고 역동적이며 재미 있으며 무엇보다도 영향을 미칩니다. 완전히 새롭게 만들거나 기존 프로젝트에 기여하더라도 완벽하지 않은 진보가 목표라는 것을 기억하십시오.
따라서 작업을 계속 기부하고 실험하고 공유하십시오. 모든 풀 요청, 문제 및 아이디어는 프로젝트뿐만 아니라 더 넓은 생태계에 가치와 mdashp를 가져옵니다.
행복한 코딩!

(YK)
Post Comment