오픈 소스 소프트웨어 출시가 너무 빠름 [폐쇄]


37

오픈 소스 소프트웨어를 너무 빨리 출시하는 도덕적 책임은 무엇입니까? 예를 들어, 완전히 테스트되지 않은 완제품에 가깝습니다.

프로그래머의 기대는 무엇입니까? 완전히 테스트 될 때까지 기다리거나 오픈 소스로 릴리즈 한 다음 추가 개발, 테스트 및 발전을 계속 하시겠습니까?

문제는 소프트웨어가 오픈 소스이며 소비자에게 문제를 일으킬 수 있다는 것입니다.

이것이 근거없는 두려움입니까?


10
우려되는 경우 고지 사항을 추가하십시오. :)
Vaughan Hilts

18
릴리스가 너무 빠르다는 단점은 소프트웨어를 사용할 수없는 경우 릴리스 할 때 얻는 홍보 효과가 손실 될 수 있다는 것입니다. 그런 다음 후속 릴리스에서는 "예, 시도해 보았습니다." 그것은 물론 당신이 그것을 형성하는 데 필요한 정도와 목표 고객에 달려 있습니다.
Davidmh

@VaughanHilts 누군가 화를내는 것에 대해 걱정하지 않습니다. 문제는 전적으로 소프트웨어 배포 및 소비를 개선하려는 욕구에 있습니다. 릴리스를 너무 열망하여 고통 받고 싶지 않은 것은 후자입니다.
Thomas Stringer

@Davidmh : 저 역시 "한 번 불타고, 두 번 부끄러워"저의 주요 관심사가 될 것입니다.
Matthieu M.

8
소스를 공개하지만 바이너리는 공개하지 않는 것은 예상치 못한 사람들이 소프트웨어를 준비하기 전에 소프트웨어를 사용하지 못하게하는 좋은 방법입니다.
복원 Monica Monica

답변:


56

반대로 오픈 소스 소프트웨어를 최대한 빨리 릴리스해야한다고 생각합니다. 그것에 대해 "너무 빨리"는 없습니다 (그러나 컴파일해야합니다).

또는 최소한 공식적으로 릴리스 하지 않고 소스 코드를 매우 빠르고 지속적으로 게시하십시오 (예 : github 을 자주 푸시 ) .

그러나 알파 또는 베타 단계로 플래그를 지정하고 가능한 경우 (예 : README또는 TODO파일 및 일부 블로그 등) 누락되거나 테스트되지 않았거나 모양이 나쁜 것을 말할 수 있습니다 . 또한 그러한 정보를 전달 하기 위해 버전 번호 를 사용해야합니다 .

무료 소프트웨어를 사용하면 누군가가 소스 코드를 들여다보고 작은 패치를 제안하는 것이 가장 좋습니다. 이것이 소프트웨어를 무료로 만드는 이유입니다!

그러므로, 당신은 당신의 무료 소프트웨어에 대한 일상적인 작업을 보여 주어야합니다! 패치가 최신 소프트웨어 소스 코드와 함께 작동하지 않거나 복제 본인 경우 외부 기고자들이 화나게됩니다.

당신이 두려워해야 할 것은 아무도 당신의 소프트웨어에 관심을 가지지 않고 그것에 기여하지 않는다는 것입니다. 자유 소프트웨어에 대한 외부 관심을 끄는 것 (특히 외부 기고자를 유치하는 것)은 긴 여정입니다.


33

TL; DR :

조기 출시. 종종 출시.

개인 일화 :

작업중인 프로젝트에 정말 흥분했습니다. 정말 신나게. 나는 흥분된 밤에 잠을 잘 수 없었다. 그래서 나는 공동 개발자가 원하는 것보다 빨리 v1.0을 발표하도록 추진했습니다.

끔찍했다. 예상대로 작동하지 않았습니다. 모든 차례에 버그가 있었지만 우리는 버그를 기록하고 수정했습니다. 우리는 심지어 얼리 어답터가 발견하지 못한 버그를 제출하도록했습니다. 1-2 주 후에 많은 문제를 해결 한 새로운 릴리스를 출시 한 후 새로운 기능을 구축했습니다.

일찍 릴리스하는 것이 우리가 할 수있는 가장 좋은 일이었습니다. 실제 사용자 앞에 제품을 배치했습니다. 이 노출 된 버그를 수행하면 프로젝트를 발견하거나 개선 할 수 있습니다. 또한 얼리 어답터들에게 우리가이 프로젝트에 대해 진지하다는 것을 알 렸습니다. 더 많은 릴리스와 활발한 개발이있을 것입니다.

그래도 다른 방법으로는 쉽게 사라질 수 있습니다. 우리는 그 버그 보고서를 무시했을 수 있습니다. 또는 우리는 빨리 반응하지 못했습니다. 몇 주가 아닌 v1.1을 출시하는 데 3 개월이 걸렸다면 다른 이야기 였을 것입니다.


9
당신의 유일한 큰 실수는 "v1.0"이라고 부르는 것 같습니다. 일반적으로 사용자는 명백한 버그 등없이 목적에 맞게 사용할 수 있다는 의미에서 "완성 된"제품을 표시 할 것으로 예상합니다. "출시 초기"는 좋지만 사용자에게는 기니피그라는 정보를 제공해야합니다.
R ..

3
예. 나는 뒷모습에 동의합니다. 공정하게, 나는 그것을 철저히 테스트했다고 생각했습니다. 나는 @R 당시에 1.0 이라고 생각했다 . 나는 틀렸다.
RubberDuck

12

폐쇄 소스 소프트웨어와 동일합니다. 의사 소통이 중요합니다.

사용자에게 소프트웨어 상태와 다운로드 가능한 이유를 알려줍니다.

소프트웨어는 전체 테스트 여부에 관계없이 항상 고객 문제를 유발합니다. 대부분의 고객은이 사실을 받아들이고 일부 고객은 절대 받아들이지 않습니다. 그러나 소프트웨어가 합리적으로 예상 할 수있는 것보다 더 많은 문제를 야기 할 경우 고객에게 위험을 알리는 도덕적 의무가 있습니다. 정보는 간단한 형식 ( "Alpha / Beta / EarlyAccess"레이블) *이어야하며 세부 정보 : 알려진 문제, 해결 방법 및 특별 고려 사항 (예 : 데이터가 손상 될 수있는 경우)의 목록입니다.

* 일부 대형 소프트웨어 회사는 사용자가 "베타"를 소프트웨어가 탄탄한 상태로 생각하도록 교육을 받았으므로 소프트웨어가 "베타"라고 알려주는 것만으로는 충분하지 않습니다.


3
"베타"가 단단 하지 않아야한다고 추론해야 하는가 ? "대규모 소프트웨어 회사"는 소프트웨어를 실제 데이터와 대면하기 위해 프로덕션 준비가 될 때 "베타"라고 부릅니다. 어쩌면 프로토 타입이라고 합니까?
Pierre Arlaud

2
"베타"레이블은 이제 사람들마다 다른 것을 의미하므로, 소프트웨어가 "어느 정도 사용 가능"과 "거의 완성 된 것"사이에 있다는 것 외에는 "베타"레이블에서 많이 추론 할 수 없습니다. 일부 고객은 무언가를 유추 할 수 있으며 모든 고객이 동일한 것을 유추하지는 않습니다. 그래서 내가 말을 했어요.
Peter

3
프로토 타입 빌드에 "알파 빌드"라는 용어를 사용하는 경향이 있습니다. 사람들에게 "이것은 아직 베타 버전이 아니라는 것입니다! 거의 끝날 것이라고 기대하지 마십시오."
RubberDuck

2
바이너리 패키지없이 소스 형식으로 만 다른 형태로 배포 할 수 있습니다.
el.pescado

3
게임 업계가 "베타"의 의미를 바꾸기 전에 @SteveJessop, 나는 당신과 동의했을 것입니다. =)
RubberDuck

7

도덕적 책임은 없습니다. 아무도 당신의 반 구운 소프트웨어를 사용하도록 강요 당하지 않습니다.

걱정해야 할 유일한 것은 당신의 신뢰성입니다.


2
설명이 없으면 다른 사람이 반대 의견을 게시 할 경우이 답변이 쓸모 없게 될 수 있습니다. 예를 들어, 누군가 가 "도덕적 책임이 있습니다. 누군가가 귀하의 반 베이크 소프트웨어를 사용하고 싶은 유혹을받을 수 있습니다. 귀하의 신뢰 만이 걱정되는 것은 아닙니다." ,이 답변이 독자가 두 가지 반대 의견을 선택하는 데 어떻게 도움이됩니까? 고려 편집 에 맞게, 더 나은 모양으로 그것을 보내고을 답변하는 방법 가이드 라인을.
gnat

6
@gnat :이 대답이 설명이 없다는 것은 사실이 아닙니다. 설명은 바로 다음 문장입니다 : "아무도 당신의 반 구운 소프트웨어를 사용하도록 강요받지 않았습니다". 그것은 짧은 설명이지만, 여전히 "도덕적 책임이 없다"고 말하는 이유가 있습니다
slebetman

@ gnat : 대부분의 답변에 대해 말할 수 있습니다. "[…] 릴리스해야한다고 생각하지 않습니다. […] 플래그를 지정하는 것은 그리 중요하지 않습니다." 이 답변에 대한 더 많은 외부 소스가 필요하십니까?
Pierre Arlaud

2
좋은 의견과 나쁜 의견이 있습니다. 나는 당신에게 동의하지만, 당신이 더 강력한 논쟁으로 그것을 뒷받침하는 것이 좋을 것입니다.
RubberDuck

6

내 경험은 달성해야 할 균형이 있다는 것입니다.

지금은 내가 작성한 코드를 사용하는 매우 흥미로운 FOSS 프로젝트로 보이는 것을 제작하는 개발자와 함께 (질문을 보지 않고 개발 제안을 제공한다는 의미에서) 작업하고 있습니다. 공개 릴리스는 설계 변경을 실현하여 프로젝트를 장기적으로 개선하는 데 반복적으로 지연되었지만 이미 작성되었으며 이미 "작동 중"인 코드를 상당 부분 다시 작성해야합니다. 내 견해로는, 보여줄만한 일이 생기 자마자 작동하지만 불완전한 릴리스가 이루어졌으며, 변화에 대한 아이디어 (및 실제 패치)는이 프로젝트에 관심이있는보다 광범위한 커뮤니티에서 나왔을 수 있기 때문에 오히려 가속화되었습니다. 문제는 한 번에 하나씩 천천히 개발자가 자신을 생각하고 자신과 커뮤니티의 다른 관심있는 멤버의 디자인 피드백을 요구할 때. 그래서이 관점에서 저는 "일찍 릴리스, 자주 릴리스"에 대한 옹호자입니다.

반면에 저품질 릴리스는 새로운 프로젝트가 시작되기 전에 나빠 보이게 만들 수 있습니다. 내가 본 몇 가지 함정은 다음과 같습니다.

  • 인터페이스 정의는 있지만 코드는없는 골격 트리.
  • 개발자 이외의 사람을 위해 성공적으로 컴파일되지 않는 코드.
  • 프로그램을 빌드 / 실행하는 방법에 대한 지침이 없습니다.
  • 작동 할 것으로 예상되는 측면에 대한 문서가 없습니다.
  • 프로그램의 기능에 대한 명확한 설명.
  • 유용성에 대한 설명이 부족합니다.

마지막으로, 나는 다음과 같은 것을 생각하고 있습니다.

  • hello-world 타입 프로그램을 컴파일 / 실행할 수없는 컴파일러 / 통역사.
  • 최소한 어떤 종류의 샘플 프로그램을 실행할 수 없거나 무언가를하고 있다는 것을 증명할 수없는 에뮬레이터.
  • 수정되지 않은 이미지를로드하고 다시 저장하는 것 외에는 아무것도 할 수없는 이미지 처리 도구입니다.
  • 타이틀 화면 만있는 게임.

이러한 종류의 문제는 작업 코드가 부족하다는 것에 대해 매우 개방적이지 않으면 흔들리지 않는 "증기 류"이미지에 적합합니다.

마지막으로, 버전 번호를 이해하십시오. 사용자가 충돌하지 않고 기대하는 것을 수행 할 때까지 프로젝트를 "1.0"이라고 부르지 마십시오. 나는 초기 공개 릴리스를 위해 "0.5"주위의 버전 번호를 사용하고 거기에서 나가는 것에 대해 항상 운이 좋았지 만 "0.1"또는 "0.10"과 같은 것들도 의미가 있습니다.


1

자유 소프트웨어를 공개하면 부정적인 결과를 초래할 수 있습니다. 일부 사양은 일반인에게 배포 된 모든 구현이 처음 게시 될 때 사양을 완전히 준수해야한다는 조건하에 일반인에게 라이센스가 부여됩니다. 게시자는 사양에 따라 진행중인 구현을 배포하는 것을 법적으로 금지합니다. 사양 게시자의 특정 협상 라이센스가 없으면 모든 테스트를 통과 할 때까지 다른 사람과 라이센스를 공유해야합니다. 이것은 스펙의 구현에 대해 "성당 모델"(Eric S. Raymond라고 함)을 강제합니다.

이러한 라이센스에 따른 한 가지 사양은 Java 언어 사양 입니다. 이 제한은 JVM과 호환되는 가상 머신 개발자에게는 적용되지만 다행히 JVM에서 실행되는 애플리케이션 개발자에게는 적용되지 않습니다.

Liu Qihao & Ciaran O'Riordan 의 기사 " Microsoft의 '오픈 소스'.NET에 대한 4 가지 교묘 한 세부 사항 " 에서는 CLR의 불완전한 구현을 유사한 방식으로 제외하기 위해 .NET 라이브러리 및 런타임 구성 요소대한 Microsoft 특허 약속을 해석 할 수 있다고 언급했습니다. . 그러나 다시 CLR에서 실행되는 응용 프로그램에는 적용되지 않습니다.


2
이는 AFAIK에서 실행되는 Java 프로그램이 아닌 JRE / JDK 구현을 작성하려는 경우에만 중요합니다.
sjas

@sjas 당신은 JLS가 "완전히 또는 자신에게 그것을 유지"라는 제한이있는 사람이 겪을 가능성이있는 유일한 스펙이라는 것을 암시하려고합니까?
Damian Yerrick 2016 년

당신은 내가 이것을 암시한다는 것을 암시하려고 노력하고 있습니다. ;)
sjas

감사합니다. 이 답변을 유용하게 만들 수있는 다른 방법이 있습니까?
Damian Yerrick

나는 btw를 downvote하지 않았다. 나는 이미 당신의 답을 읽을 때 겪었던 오해를 해결했습니다. 변경하려는 경우 게시물에 포함시킬 수 있습니다.
sjas
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.