Open source 关于编写我的第一个开源软件的指南?

Open source 关于编写我的第一个开源软件的指南?,open-source,licensing,project,Open Source,Licensing,Project,自2009年8月以来,我一直致力于这个项目,但后来决定将其作为一个开源项目发布。本项目的目的是提供现有商业和昂贵解决方案的替代方案 所以我的问题是,我如何开始?原型从5月份就已经准备好了,现在正在用Java重写。我需要使用哪种许可证类型?LGPL?麻省理工学院 谢谢, 约翰。弄清楚你希望人们能用它做什么。 你希望人们能够将它用于任何事情,包括商业用途,还是希望它被锁定为开源疯狂的GNU? 这份清单应该是一个良好的开端。 接下来,选择一个项目的宿主位置。谷歌代码是一个伟大的一个,我相信他们要求你

自2009年8月以来,我一直致力于这个项目,但后来决定将其作为一个开源项目发布。本项目的目的是提供现有商业和昂贵解决方案的替代方案


所以我的问题是,我如何开始?原型从5月份就已经准备好了,现在正在用Java重写。我需要使用哪种许可证类型?LGPL?麻省理工学院

谢谢,


约翰。

弄清楚你希望人们能用它做什么。 你希望人们能够将它用于任何事情,包括商业用途,还是希望它被锁定为开源疯狂的GNU? 这份清单应该是一个良好的开端。

接下来,选择一个项目的宿主位置。谷歌代码是一个伟大的一个,我相信他们要求你的项目是一个特定的许可证。这就是你的决定


您可能需要考虑的另一件事是源代码管理。如果您喜欢SVN、Git或其他重要的东西。GitHub是git项目的好去处,几乎所有主机都将获得svn支持。

您可以使用任何主要的开源许可证,这取决于您希望从项目中获得什么

  • GPL
  • 伯克利(减去广告条款)
  • 麻省理工学院
  • 阿帕奇
除非您正在编写的是一个库,否则您可能不会使用LGPL


因此,我们需要有关可能的开源许可证的信息。不要试图发明你自己的。

如果你想保护你的软件,你可以

  • GPL
  • LGPL
但在许多情况下,更宽松的许可证会吸引更多的用户

  • 麻省理工学院
  • 阿帕奇
你很宽容

如果您想做双重许可,则考虑使用GPL和商业许可证。< /P> 在选择许可证之前,您必须回答自己:

  • 我要叉子吗
  • 我想要商业使用我的软件吗
  • 我是否希望我的软件包含在商业软件中
  • 我想在forks上强制执行任何许可证吗

从这里选择一个已经建立的许可证:

有许多开源许可证,但我推荐的是BSD风格或GPL。你得决定你喜欢哪一个。人们是否应该能够将您所做的事情打包成专有软件并进行销售,而不必归还他们所做的更改?由你决定。BSD类型的许可证可能会为您提供更多的用户,而GPL类型的许可证可能会为您提供更多的开发帮助

如果您考虑双重许可,使用开源和商业许可,那么您几乎肯定希望使用GPL获得开源许可,因为BSD风格不会给您留下足够的额外销售权限

你保留你所做的任何非雇佣的事情的版权,除非你明确地放弃它。如果你开始从别人那里得到帮助,你需要决定做什么。你可以要求将版权转让给你,这将保持你对版权的完全控制,代价是阻止外部开发者。你可以为你的软件注册商标,以保持品牌,这与谁拥有什么版权无关。我建议找个律师谈谈,因为商标法不像版权法那么干净,各州之间可能会有所不同。如果你住在美国,你可能会得到当地律师协会的律师推荐,而且初步咨询的费用应该不会太高


正如Jonathan所说,检查OSI以了解可能的许可证信息。从那里挑一个。它们或多或少都会起作用,不像你可能写的许可证(除非你知道自己在做什么)。有些站点,如Sourceforge,不允许未经OSI许可的项目,因此您可以使用OSI许可证获得更多选项。此外,许多人已经熟悉标准许可证,您不必向他们解释您的许可证。

如果您想设置项目,只需查看,我认为这是一个很好的模板,可以开始建立一个开源项目并重新升级许可证。正如其他人已经解释的那样,这取决于您希望从项目中获得什么。

允许您查找开源软件许可证,并用简单的英语总结您可以、不能和必须使用该软件做什么。它还允许您查看合并两个许可证的影响,尽管该选项被错误地称为“比较许可证”。

“我需要采用哪种许可证类型?”取决于您的目标。既然你没有提供任何有用的信息,我们只能掷硬币了。从长远来看,您希望实现什么?如果您没有项目的商业模式,那么使用许可证(如Apache软件许可证2.0)可能会吸引更多用户。但请提供更多信息。从长远来看,我的目标是建立一个强大的开源软件,与现有的专有软件解决方案竞争。@Timo我可能会销售定制版本、模块或服务。我想控制品牌、版权等。Google code&SourceForge是我唯一的选择吗?有可能在我自己的网站上托管和维护它吗?当然你可以自己托管,但你会失去一些社区方面的东西——你是沙皇,其他人不太可能贡献。那是你的选择。Github是在这种情况下您可能希望采取的另一种选择……我如何让其他人为这个项目做出贡献?例如,如果有人专门在某个领域中使用它(无论是否商业化),并且希望将此改进添加到原始项目中。您将如何处理允许哪些提交和拒绝哪些提交?我相信google code和source forge有一些设置方法,以便您可以在将更改提交到源代码管理之前对其进行审查。是的,我希望人们能够在商业上使用它。