디자인이나 아키텍처에 대한 문서가없는 오픈 소스 프로젝트는 어떻게 성공할 수 있습니까?


11

유명한 오픈 소스 프로젝트를 연구하여 프로그래밍 기술을 향상시키고 싶지만 소스 코드를 뛰어 넘어 쉽게 길을 잃을 수 있습니다.

따라서 코드 구성에 대한 일반적인 아이디어를 얻기 위해 UML 다이어그램과 같은 설계 또는 아키텍처에 대한 설명서를 읽기로 결정했습니다. 그러나 놀랍게도 Hibernate, Spring, ASP.NET MVC, Rails 등과 같은 대규모 오픈 소스 프로젝트에 대한 아키텍처 문서를 찾을 수 없습니다.

그래서 궁금해지기 시작했습니다. 새로운 개발자가 읽을 아키텍처 / 디자인 문서가 없거나 프로젝트 관리자가 소스 코드를 열었지만 문서를 닫은 경우 어떻게 오픈 소스 프로젝트가 성공할 수 있습니까?


3
"대부분"? 구체적인 통계로이를 백업 할 수 있습니까? 당신은 몇 개를 읽었습니까? 몇 개나 있습니까? 적절한 문서가 부족한 사람은 몇 명입니까? 숫자가 없으면 "most"와 같은 단어를 제거하고 실제로 찾은 내용에 따라 실제 사실로 바꾸십시오. 또한 자신을 언급 할 때 "I"를 대문자로 사용하십시오.
S.Lott

@ S.Lott 주관적인 "most"에 대해 죄송합니다. 저는 소프트웨어 산업의 초보자입니다. 대학 웹 사이트 (UML 다이어그램, 플로우 차트, 간단한 디자인 문서, Detaled 디자인 문서 등)에서 프로젝트 웹 사이트 또는 코드 저장소에서 언급 한 프로젝트에 대해 들었지만 운이없는 문서를 검색하려고합니다. 일부 사용자 안내서 만 찾을 수 있습니다. desgin / archiecture 문서를 검색하는 일반적인 방법을 가르쳐 주시겠습니까?
TomCaps 2016 년

1
"많은"을 제거하십시오. 그것은 대부분의 틀린 것입니다. 제발 업데이트 특별히 특별히보고 싶은 특정 문서를 부족 특정 오픈 소스 프로젝트를 나열 질문을. 정확하고 구체적으로 작성하십시오. 주관적이고 모호하지 마십시오.
S.Lott

ASP.NET MVC에 UML 다이어그램이 포함되지 않은 이유는 Visual Studio가 소스 코드에서 다이어그램을 만들 수 있기 때문입니다.
user16764

5
"엔터프라이즈"가 좋은 것이라는 잘못된 가정하에 운영하고 있습니다. 대학에서 디자인에 관해 배운 것은 모두 거짓말입니다. UML은 절대 가치가 없습니다. 프로젝트를 만들 때 필요한 것은 무엇을해야하는지에 대한 일반적인 아이디어와 처음 잘못했을 경우 버릴 의사가 있습니다. 기존 프로젝트의 경우 기본 헤더를 감추는 것만으로도 프로젝트 레이아웃에 대한 좋은 아이디어를 얻을 수 있습니다.
o11c

답변:


10

새로운 개발자가 읽을 아키텍처 / 디자인 문서가 없다면 오픈 소스 프로젝트가 성공할 수있는 이유는 무엇입니까?

당신이하고있는 일을 알고 있고, 당신이보고있는 것 (및 기대하는 것)에 대해 합리적으로 친밀한 이해를 가지고 있다고 가정합니다.

예를 들어 Symfony 프레임 워크의 PHP 코드를 살펴보면 종속성 주입, 이벤트, 모델 / 뷰 / 컨트롤러 패턴 등에 대해 이미 알고있을 것입니다.

마찬가지로, 리눅스 커널의 C 코드로 뛰어들었다면, 모듈성, 신호, 프로세스, 스레드 등에서 실제로 경쟁력이 있다고 가정합니다. 또한 하루 종일 16 진수를 먹고 거대한 삽으로 코어 덤프를 발굴 할 수 있습니다.

관리자는 사실상 문서이기 때문에 아키텍처를 문서화하는 데 어려움을 겪지 않을 것입니다. 간혹 소스 트리에서 어디에 있는지에 대한 개요를 찾을 수 있습니다. 보다 일반적으로 소스 트리가 구성되는 방식은 설명이 필요하지 않습니다.

요컨대, 코드를 들여다 볼 때까지 관리자가 알 것으로 기대하는 기술이 부족하면 급여 등급보다 훨씬 높은 것을 파고들 것입니다. 먼저 개념을 숙지하십시오. MVC 모델이란 무엇입니까? 의존성 주입이란 무엇입니까? 기타 다이빙


1
메일 링리스트를 보면 리눅스 커널은 누군가 문제가 있거나 무언가를 바꾸고 싶을 때마다 아키텍처에 대한 광범위한 토론을한다. 커널 소스 트리 자체에는 없지만 문서에 대한 문서도 많이 있습니다.
edA-qa mort-ora-y

17

가장 성공적인 오픈 소스 프로젝트는 무엇보다도 성공을 거두었습니다. 무엇보다도이 프로그램은 인상적 이었거나 당시에는 다른 프로그램으로는 할 수 없었던 일이었습니다. 프로젝트를 시작한 프로그래머가 코드를 잘 알지 못하기 때문에 소스가 잘 문서화되어있는 것은 아닙니다. 오픈 소스 프로젝트가 문서화 될 필요가 없다는 것은 불행한 현실입니다. 좋은 프로그램이거나 평범한 프로그램이어야하지만 프로그래머가 관심을 갖도록 잘 문서화되어 있어야합니다.


우리 회사에서는 개발자가 프로젝트에 코드를 작성하기 전에 상세 설계 문서를 제공해야하는 요구 사항 절차입니다. 이 절차가 오픈 소스 프로젝트에 비정상입니까?
TomCaps 2016 년

5
@TomCaps 나는 몇 FOSS 프로젝트는 광범위한 문서를 가지고 있도록 매우 간단하는 가장 큰 이유를 생각 : 당신이하는 필요 해결하기 위해 작은 프로그램을 작성하는 경우, 당신은 이를, 그것은 가능성이 개발자 있기 때문에 당신은 또한, 당신이 문서를 필요가 없다는 것을의 누구에게도 유용하지 않은 문서를 작성하는 대신 프로그램을 개선하는 데 시간을 투자하고 싶습니다 (개발자를 제외한 다른 사람이 프로젝트를 사용하지 않으면 어떻게 될까요?). 모범 사례는 아니지만 많은 FOSS 프로젝트가 개발자 시간이 부족합니다.
Jeff Welling 2016 년

5
@TomCaps :이 절차는 내가 아는 대부분의 회사에서 비정상적입니다.
Treb

1
대부분의 오픈 소스 프로젝트는 회사가 아닙니다. 마감 시한과 예산으로 내가 지불해야하는 프로젝트가있을 때 어떤 일이 발생하는지 생각하고 있습니다. 많은 사람들이 코딩하거나 재미를 위해 코딩을하고 예산이나 고객이없는 경우 그러한 종류의 물건이 없습니다.
Elin

1
@TomCaps-오픈 소스 소프트웨어를 작성하는 사람은 누구나 원하는 것을 정확하게 수행 할 수 있습니다. 일부 프로젝트 (예 : Apache 제품군)에는 코드를 커밋하는 모든 사람을위한 규칙과 지침이 있으며 때로는 여기에는 표준 표준 등이 포함됩니다. 또한 "세부 설계 문서"의 가치에 의문을 제기합니다. 내 개인적인 경험)은 일반적으로 차선책입니다. 프로그램이 무엇을해야하는지에 대한 자세한 설명은 개발자가 구현을 최적화하고 솔루션에 창의적인 전략을 적용 할 수있는 자유를줍니다.
James Anderson

12

오픈 소스 개발자는 일반적으로 재능이 있고 전문 분야에서 프로젝트를 선택하기 때문에 이미 두개골 안에 "문서"가 있습니다. 과장이 거의없이 다음 중 하나라도 부족한 경우에만 철저한 문서가 필요합니다.

솔직히 말해서, 알 수없는 코드베이스에 직면 할 때 실제로 "문서"를 읽지 않습니다. 간단한 소개, 몇 가지 개념적인 스케치와 코드로 직접! 실험, 작은 변화를 시도하십시오. 잘 설계된 코드에 완벽하게 작동합니다. 내가 끔찍한 혼란에 직면하면 그것들을 배우는 가장 좋은 방법은 비트 단위로 리팩터링하여 선명도를 향상시키는 것입니다 (이상적으로 단위 테스트의 도움으로).

추가적인 이유는이 프로젝트의 일반적인 유기적 디자인 루트 일 수 있습니다. 그러면 아키텍처는 "문서화 된"엔터티보다 개발자의 생각에서 진화 된 비전입니다.


8

이러한 문서가 종종 존재하지 않는 이유는 매우 간단합니다. 프로그래머는 문서를 작성하지 않고 프로그래밍을 좋아합니다. 특히 개발자가 자유 / 레저 시간 동안 종종 기여하는 오픈 소스 프로젝트의 경우.

기본적으로 문서 작성은 재미 있지 않습니다. 그리고 그들이 돈을받지 못하면 누가 자유 시간을 재미없는 일을하고 싶습니까?


일부 대규모 오픈 소스 프로젝트 (GCC, Linux 커널, Firefox, Qt, ....)는 기여자 중 대부분 (또는 상당 부분)이 프로젝트에서 일하기 위해 (풀 타임 또는 반 시간) 지불했습니다. 그래서 심지어는 무료 소프트웨어를 지불 할 때, 그들은 문서를 많이 쓰지 않는다
실레 Starynkevitch
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.