代码之家  ›  专栏  ›  技术社区  ›  John K

我怎样才能开源我的软件项目并保持控制?[关闭]

  •  14
  • John K  · 技术社区  · 6 年前

    像我们很多人一样,我有很多软件想法,一些非常好的想法,而且没有足够的时间来做每件事。(我是开发人员,但只有一个)。我想开源一些正在开发中的软件和想法 保留项目的方向和愿景 . 到目前为止,我只在非免费的环境中工作,就像在啤酒软件中一样,它让我无法理解开源是如何满足我的需求的。 我需要控制它 .

    让我明确一点,我不打算为了钱而将开源项目商业化。我知道很多。我只想控制我开始时的视力。

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

    我找错树了吗?

    9 回复  |  直到 14 年前
        1
  •  12
  •   jro    15 年前

    我自己也经历过这个循环,我可以告诉你,你带着马车走在马的前面。听起来不刺耳,但有一个参照系你绝对应该得到。

    首先,“控制我自己的开源项目”--是冲突的。开放源码涉及到向社区提供一些东西,在本例中是这样的。所以,想一想你已经放弃的东西的控制权和所有权是你需要跨越的精神障碍。

    第二,你需要一个你以外的人愿意参与你的项目。没有他们,你就不会有任何人改变你可能拥有的任何方向和视野。

    第三,在项目指导方面的控制是在任何具有以下任何类型的开源项目中获得的。如果你是最初有想法的开发人员并不重要;如果社区愿意听从你的指导,他们会的。如果没有,他们就不会参与。

    足够的肥皂盒。在项目管理方面,将角色分为两个功能: 1)让开发人员参与进来,承担任务、代码审查、指导和指导等。相信我,这是一项销售工作,也是一项基于信誉的工作。自上而下的、分级的、基于资历的“我在这里”第一种期望是一种将志愿者从你的项目中赶走的绝对有效的方式。 2)仓库物流。最后,您可以控制谁是/不是提交者、他们的权限等。如果您做得足够好,这将自行解决。

    作为最后一点评论,开放源码项目不容易起步。有更多的项目比人们愿意提出的持续的努力,给你的项目腿所必需的。

    祝你好运!

        2
  •  6
  •   bmargulies    15 年前

    好吧,布莱上尉,这完全取决于你如何发放承诺许可,不是吗?如果您使源代码开放,但严格控制提交,那么远景就是您的了。当然,假设您可以找到其他足够关心提交补丁供您审查和评估的人。

        3
  •  3
  •   code-zoop    15 年前

    莱纳斯·托瓦尔兹在 google talk 关于他如何使用(以及其他主题)Git来避免包含来自开源社区的所有代码!值得一看!

        4
  •  3
  •   The Brawny Man    14 年前

    你可能吃不到蛋糕了。如果您在“真正的”开源许可证下打开您的源代码,那么任何想要启动自己项目的人都可以启动自己的项目。您可以保持对“真实”项目的控制。然后是等待,看看哪个版本的用户更喜欢哪个版本,哪个版本吸引了大部分社区。您将始终控制项目的“您的”分支。您必须接受的是,其他人可能会比您更成功地使用您的原始代码,从而也拥有控制权。

    总的来说,有更多的想法比开发人员在等待他们的工作。所以你真正的问题可能是 任何人 为了足够关心你的项目来贡献补丁,更不用说足够关心去篡夺控制权了。

        5
  •  2
  •   James Polley    15 年前

    即使您在存储库中让任何人都可以获取源,您仍然可以控制存储库:您可以决定谁有访问权,您可以决定提交哪些补丁(或者至少,您可以决定由谁来决定提交哪些补丁)。

    然而,这并不能阻止人们分岔你的项目,把他们的叉子向不同的方向。没有任何简单的方法可以防止这种情况发生:有些人很爱吹毛求疵,会把他们接触到的每一个项目都分给别人,而其他人可能只是对你的代码如何有用有不同的想法。

    减少分叉的最佳方法是与社区合作:参与项目方向的讨论,接受添加人们想要的功能的补丁(当然,同时保持自己的编码风格和标准)。如果人们更容易与社区和你一起工作,而不是维护自己的叉子,大多数人就不会费心去叉子了。

    当然,这意味着你已经将一些控制权割让给了社区,因为如果你顽固地拒绝给他们想要的东西,他们就会做出一把叉子。

        6
  •  1
  •   Alex Brown    15 年前

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

    我不认为它们只是从网络中弹出,你需要去找到它们。

    一旦你找到他们,你就需要保持他们的兴趣,这很可能意味着放弃一些或全部的控制…

    问问你自己,你在这里的目标是什么?向世界交付软件创新,还是拥有一个宠物项目?

        7
  •  1
  •   Travis    15 年前

    好吧,这取决于你正在开发的是哪种项目。

    你是在一个小的库中开发一个严格定义的核心功能,比如Ruby Gem,还是一个PHP Pear包,或者你是想创建下一个拥有数百万用户意见的WordPress?

    我建议从小处着手。使用你以前写过的,别人可以使用的东西:

    1. jquery插件。
    2. WordPress插件。
    3. php-pear包或Zend框架的建议。
    4. 一个Ruby gem,它创建了一个可以在Rails中使用的行为。
    5. 一个模块,或添加到一些开放源码CMS上。

    创建所需的特定功能。把它放在其他用户可以分叉或分支您的代码的地方,但不要让它们合并回您的代码的主分支或主干。

    这样人们就可以使用您的代码,但最终,您可以控制返回到正式项目中的内容。

        8
  •  1
  •   OscarRyz    15 年前

    基本上,你不能。

    你不能阻止别人用你的代码来启动一个新项目。

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

    其次,您可以做的是对现有的基础有一个非常好的控制,并列出您想要包括的特性。

    如果你的项目是分叉的,你的新特性将使另一个不那么吸引人。

    最后,如果你不去做你的项目,让它死掉,你的项目就会分岔。否则,当你努力工作的时候,没有人会来付你的项目,对吗?

    下面是一些关于这个主题的有趣视频:

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

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

        9
  •  0
  •   anon    15 年前

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