如何开源我的软件项目并保持控制?

时间:2010-01-08 21:58:57

标签: open-source

正如我们许多人所做的那样,我有很多软件想法,一些非常好的想法,没有足够的时间来做所有事情。 (我是开发人员,但只有一个)。我想开源一些软件和想法,但保留项目的方向和愿景。到目前为止,我只使用非免费的啤酒软件,它让我无法理解开源如何满足我需要控制它

让我明确一点,我不打算将开源项目商业化。我知道的那么多。我只是想控制自己的视力,我开始了。

为了控制我自己的开源项目,我需要通过提供指导来管理它,但这个方面也让我感到厌烦,关于如何管理有效免费的东西。

我是在咆哮错误的树吗?

9 个答案:

答案 0 :(得分:12)

我自己经历了这个循环,并且可以告诉你,你带着推车走出了马。不要听起来很苛刻,但你必须有一个参考框架。

首先,“控制我自己的开源项目” - 是冲突的。开源涉及到一些东西,在这种情况下给社区。因此,考虑控制和拥有你所赠送的东西是你需要跨越的心理障碍。

其次,你需要一个非自己的人愿意参与你的项目。没有他们,你就不会有任何人转移你可能拥有的任何方向和愿景。

第三,任何开源项目都可以获得项目指导方面的控制权。如果你是最初想法的原始开发者并不重要;如果社区愿意遵循您的指导,他们会。如果没有,他们就不会参与。

足够的肥皂盒。在项目管理方面,将角色分为两个功能: 1)让开发人员参与,承担任务,代码审查,指导和指导等。相信我,这是一个销售工作,因为它是基于可信度的。自上而下,层次化,基于资历的I-is-here-first类型的期望是让志愿者远离您的项目的可靠方法。 2)存储库物流。最后,你可以控制谁是/不是提交者,他们的权限等。如果你做得好#1,这将自己照顾。

作为最后一点评论,开源项目并不容易实现。有更多的项目比人们愿意提出必要的持续努力来为你的项目提供支持。

祝你好运!

答案 1 :(得分:6)

嗯,布莱船长,这一切都取决于你如何分发提交权限,现在,不是吗?如果你打开源,但严格控制提交,那么愿景就是你的。当然,假设您可以找到任何其他关心提交补丁以供您审核和评估的人。

答案 2 :(得分:3)

Linus Torvalds在google talk上发表了关于他如何使用(以及其他主题)git以避免必须包含来自开源社区的所有代码的精彩演讲!这是值得一试的!

答案 3 :(得分:3)

你可能不能吃蛋糕也不能吃。如果您在“真正的”开源许可下打开源,那么任何想要的人都可以开始自己的项目。您可以保持对“真实”项目的控制。然后,这是一个等待和查看用户更喜欢哪个版本以及哪个版本吸引大多数社区的问题。您将始终可以控制项目的“您的”分支。您必须接受的是,其他人可能会使您的原始代码比您更成功,因此也可以控制。

总的来说,有更多的想法,而不是开发人员等待他们的工作。因此,您真正的问题可能是让任何人关心您的项目,足以提供补丁,更不用说关心篡夺控制权了。

答案 4 :(得分:2)

即使您在存储库中提供了可供任何人使用的源,您仍然可以控制存储库:您决定谁有权访问,您决定提交哪些补丁(或者至少,您决定由谁来决定修补程序已提交)。

然而,这并不能阻止人们分叉你的项目并将他们的叉子朝不同的方向移动。没有任何简单的方法可以防止这种情况:有些人是ornery并会分叉他们触摸的每个项目,而其他人可能对你的代码如何有用有不同的想法。

最小化分支的最佳方法是与社区互动:参与项目方向的讨论,接受添加人们想要的功能的补丁(同时保持自己的编码风格和标准)。如果人们更容易与社区和你一起工作而不是维持自己的分叉,那么大多数人都不会费心去做。

当然,这意味着你已经放弃了对社区的控制权,因为如果你顽固地拒绝给他们他们想要的东西,他们就会做一个分叉......

答案 5 :(得分:1)

听起来缺少的成分是一些热爱开发人员,他们喜欢你的想法,并准备免费工作。

我认为他们不会脱离互联网;你需要找到它们。

一旦你找到它们,你需要让它们感兴趣,这可能意味着放弃部分或全部控制......

问问自己这里的目标是什么 - 向世界提供软件创新,或者有宠物项目?

答案 6 :(得分:1)

嗯,这取决于你是什么类型的项目开源。

您是在一个小型库(如Ruby Gem或PHP PEAR Package)中开源一个严格定义的核心功能,还是打算创建下一个数百万用户有意见的Wordpress?

我建议从小开始。使用之前写过的东西,可以被其他人使用:

  1. 一个jQuery插件。
  2. 一个Wordpress插件。
  3. PHP PEAR包或Zend Framework的提案。
  4. 一个Ruby Gem,它创建一个可以在Rails中使用的行为。
  5. 一个模块,或添加到某个开源CMS。
  6. 创建所需的特定功能。把它放在其他用户可以分叉或分支代码的地方,但不要让它们合并回代码的主分支或主干。

    这样人们可以使用您的代码,但最终,您可以控制返回官方项目的内容。

答案 7 :(得分:1)

基本上,你不能。

您无法阻止其他人分叉代码并启动新项目。

您最多可以选择一个许可证,说明源代码不能用于同一产品(我不知道这是哪个许可证,但它存在)

其次,您可以做的是对现有基础进行非常好的控制,并列出您想要包含的功能。

如果您的项目是分叉的,那么您的新功能对其他功能的吸引力会降低。

最后,如果你不对它进行操作并且让它死掉,你的项目将被分叉。否则当你正在做所有艰苦的工作时,没有人会来你的项目?

以下是关于此主题的几个有趣视频:

http://www.youtube.com/watch?v=-F-3E8pyjFo

http://www.youtube.com/watch?v=0SARbwvhupQ

答案 8 :(得分:0)

如果它是开源的,那么在一天结束时你无法控制它 - 任何人都可以自由地分叉它并以自己的方式继续前进。防止这种情况发生的方法是成为一个“仁慈的暴君”,并接受其他人对项目方向的看法。当然,这假设其他人对你正在做的事感兴趣。