blob: bb12d85d8c1eb34e22a7215ab2529eeaae249895 [file] [log] [blame]
<HTML>
<HEAD>
<TITLE>贡献 - 新模块</TITLE>
<META NAME="description" CONTENT="How to contribute a new module to netbeans.org">
<link rel="stylesheet" type="text/css" HREF="../../netbeans.css">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
</HEAD>
<body>
<P><h1>贡献模块</h1></p>
<p>
如果你对贡献模块感兴趣的话,我们推荐你从以下步骤开始。
</p>
<ul>
<li><a href="#initial">提交源代码</a></li>
<li><a href="#project">获取一个真正的项目</a></li>
<li><a href="#moderator">协调员的责任</a></li>
</ul>
<p><a name="initial"><h2>提交源代码</h2></a></p>
<OL>
<LI><p>查看这个站点的<A HREF="../projects/index.html">邮件列表</A>看一下是否已经有人写好了你正好需要的东西。</P></LI>
<LI><p><a href="http://plugins.netbeans.org/">插件入口</a>进行搜索并且通过 NetBeans 开发人员邮件列表询问(<A HREF="mailto:nbdev@netbeans.org">nbdev@netbeans.org</A> - 参见<A HREF="../lists/index.html">邮件列表</A>获取订阅的详细信息)或者搜索<a href="http://plugins.netbeans.org/PluginPortal">我们的插件入口</a>查看是否已经有人开始了类似模块的工作,或者一些想法,或者测试代码等等。</P></LI>
<LI><p>
假设还没有其他人开始这项工作,请编写一个至少经过编译和可识别的模块草案初稿。您有可能对这一阶段之前的工作不太感兴趣。
</P></LI>
<LI><p>
为你的源文件创建某种类型的存档,可以是二进制源码的构建或者 <a href="https://netbeans.org/projects/platform/">NBM</a> 这样可以使其他人快速的试用你的新模块。ZIP(或者 JAR)文件是你创建存档的传统格式,因为这种格式可以在所有的系统中被读取。
</p>
<p>
记得在任何你引用他人的文本里注明许可声明或者至少要加上版权信息;如果你打算将你模块设置在 CVS ,那么只有遵循 CDDL 协议才可以,请看下面。
</p></li>
<li><p>
如果你要将你的可用的模块快速交付人们试用,请将其提交到<a href="http://plugins.netbeans.org/PluginPortal">我们的插件入口</a>,然后跳过这一页的其余部分。</p></li>
<LI><p>
如果你拥有一个已经存在的模块资源 CVS(或者 RCS)库,并且希望保留历史信息,请将 <samp>*,v</samp> 这样的一个文件加入你的空白资源里。
</P></LI>
<LI><p>
请确保你在这个网站拥有一个账户,只要你有一个 email 地址,任何人都可以<a href="https://netbeans.org/people/new">注册</a>
</P></LI>
<LI><P>
如果这是你第一次向 netbeans.org 提交代码,你必须要填写一个贡献协议。参见 <A HREF="http://www.oracle.com/technetwork/oca-faq-405384.pdf">CA 政策</A>获取更多信息。除非你的贡献协议是完整的,否则你的贡献不会被接受。
<P></LI>
<LI><p>
请到 contrib.netbeans.org 的<a href="https://netbeans.org/projects/contrib/downloads">文件提交区</a>提交你的模块,在这里你的模块至少将被暂时保存。点击<b>建议下载</b>。浏览你的贡献存档。提交一个对你的贡献的简单描述(一个句子)。确保<b>公开</b><em>选中</em> 的(这不是默认的),然后点击<b>上传文件</b>将模块传送的这个网站。</p>
<p>
只有在你的贡献与现存的项目明显不合适的情况下才能使用 <code>contrib.netbeans.org</code> 的各种项目。如果你真的想在已存在的项目的基础上进行工作 - 比如说,你要集成一个新版本的 Tomcat server,并且你已经看到一个存在的 <code>tomcatint.netbeans.org</code> 项目 - 用这个项目进行代替:推荐上传文件,要求该项目的许可等等。</p></li>
<LI><p>
当你看到你的贡献处于未决状态时,请使用上面文件上传区的 URL,开始的时候这个URL会对其他用户隐藏。因为上传的文件必须通过审查员的审查。等个一两天,就会被接受的;一般情况下,审查员会在认可你的贡献的时候告诉你。
</p></li>
<LI><p>给 NetBeans 开发者列表发送信息(<A HREF="../lists/index.html">nbdev@netbeans.org</A>),为了让别人知道你提交了什么,请注明从哪里可以下载。还要包括一个对你提交的目的的大概说明,并要求反馈。<STRONG>请不要给</STRONG> <CODE>nbdev</CODE> 发送你的源代码;因为那里就是你的文件所提交的地方。</p></li>
<li><p>
如果你喜欢的话,可以使用同样的方法提交你贡献的修订版或加强版本。
</p></li>
<li><p>
以这样的方式贡献是很短命的:你需要别人的关注和评论。你可能还需要别人在这个模块还处在试验阶段的时候参与工作。如果的确是这样的,你们可以通过 CVS 一起工作,请到<a href="https://netbeans.org/projects/help/pages/GettingInvolvedInProjects">成员要求</a>页面查看对 contrib.netbeans.org 成员和<b>开发者</b>的要求。再次提醒您,因为批准的缘故,你可能需要等上一两天。如获批准,你可以使用你的网站登陆账号,在 <code>contrib.netbeans.org</code> 签出你<code>贡献</code>的 CVS 模块;为你的源代码建造一个子目录;然后将你的源代码提交到这里。<strong>只有遵循 CDDL 许可证的代码才允许提交。</strong>小心不要干涉别人修改代码的地方,或者签入一个不合理的大文件,等等。其他人希望通过你的许可在你的代码上进行工作,可能也会要求申请开发者角色并通过使用CVS对代码进行修改。
</p></li>
<li><p>
contrib.netbeans.org 也可以被用来提交临时提案或其他不适用于现有项目的文档。在这些文件找到一个固定的“家”之前,请使用 <a href="https://netbeans.org/projects/contrib/downloads">contrib.netbeans.org 文档列表</a> servlet 来上传它们使之可见。如果你需要添加大量的文档,并且不想每次都等待批准,你可以要求为你的项目申请<b>内容开发者</b>角色。
</p></li>
<li><p>
作为一个 contrib.netbeans.org 项目的提交者,请放手使用 Issuezilla 来给自己分配任务。用户也可能会在这里提交 bug,但这需要你自己去寻找:从技术上来讲,为每个贡献添加子项目是不切实际的。可以订阅 <code>issues@contrib.netbeans.org</code> 来确认。
</p></li>
</ol>
<p><a name="project"><h2>获取一个真正的项目</h2></a></p>
<p>
<code>contrib.netbeans.org</code> 只适用于临时或者没有具体准备的提交:比如你是刚开始一个模块的工作而且还不确定能弄出什么东西来;或者你写了一些很酷的东西并且准备和其他人进行分享,苦于做出来的东西太小,并且没有永久保存的计划。<em>这些项目的代码</em>可能不会作为 NetBeans 的一部分进行发布,可能也不会被包括在开发版本在内,当然也不会放置在测试版本或者稳定版本的更新中心内!如果你希望你的代码得到更认真的对待的话,你需要将其放置在一个合适的项目里。
</p>
<p>
能存放你的代码的地方一般已经存在。看一下 netbeans.org 内已经存在的项目,寻找合适的匹配。你的模块或许可以放在一个项目 CVS 的子目录下,并可随着项目的进展变得更稳定。
</p>
<p>
但是,如果你的代码的确是全新的,你可能希望获取一个新的项目,下面将告诉你如何获取。
</p>
<ol>
<li><p>
给 nbdev@netbeans.org 发送一份在这个网站建立新项目的请求。确保提出一个你希望的项目名字 - 具有典型性的简短的描述,不包含标点符号和大写字母,比如 <samp>javadoc</samp> 或者 <samp>debuggerjpda</samp> 或者 <samp>archivesupport</samp> - 这些名字将用于网页域名,CVS 目录等。
</p>
<li><p>
假如没有什么拒绝的特殊原因,CVS/网站的管理员会为你建立一个新的项目,并且让你成为这个项目的拥有者。准备好至少等待一天,以让列表成员有机会提出反对或者对这个模块提出一些不同的看法。
</p></li>
<LI><p>
新项目建立后,随之而来的是项目拥有者的 CVS 模块目录,邮件列表,bug 目录,页面空间,等等。你将成为这个地方的主人,可以按你喜欢的方式进行管理,包括授权其他人的进入。登录到管理页面
按你所想的进行设置,使用像 <b>Admin</b><b>Members</b> 这样的链接,等。你应该会在页面的顶部找到这些链接。
</p></li>
<LI><p>
为了能够在放在 netbeans.org 上,一个项目应该获得 <A HREF="../../about/legal/license.html">Common Development and Distribution License</A>。如果你认为有什么不合理或者不应该的地方,请询问 <A HREF="../lists/index.html">nbdiscuss@netbeans.org</A>。像 GPL 这样的非 CDDL 许可证不可以放置在 netbeans.org,但是可以放在其他地方,然后链接到 netbeans.org。像 CDDL 加 GPL 或者 CDDL 加 BSD 这样的双许可证的源代码是不会被允许的,仅仅 CDDL 才可以。所有的源文件,包括 <samp>*.java</samp>,以及像 <samp>*.properties</samp>这样的文本源文件,在放入 CVS 之前应该标上 CDDL。在 netbeans.org 的 CVS 上存放除了遵循 CDDL 许可证以外的都是不允许的。甚至包括看起来没什么事的 Apache 二进制库或者原文件。记住,你无权许可那些不是你自己写的东西,除非你取得了原作者的明确许可。
</p></li>
<LI><P>
如果这是你第一次给 netbeans.org 提交源代码,你必须填写一个贡献者协议 - 参见 <A HREF="http://www.oracle.com/technetwork/oca-faq-405384.pdf">CA 政策</A>获取更多信息。只有你的 CA 完成后你的贡献才会被接受。
<P></LI>
<LI><p>
在文件提交区确定你的代码提交到 CVS 后,你就可以继续工作也可以邀请替他人的帮助!
</p></li>
<LI><p>
你可以使用 CVS 创建或者修改你的项目页面。请查看<A HREF="../guidelines/web-guide.html">模块页面指导</A>来获取一些建立你的模块页面的建议。
</p></li>
<LI><p>
在你的页面上提供构建和安装的说明。在大多数情况下这些应该是<a href="https://netbeans.org/projects/ide/ant.html">标准 Ant 脚本</a>。你可能想要将模块的稳定二进制文件提供下载,以便于人们更容易进行试用(参见你的模块主页面上的<b>文件</b>链接)。
</p></li>
<LI><p>
你可以将你的模块放置在自动更新中心,如果你的代码满足<a href="http://qa.netbeans.org/processes/stabe_module_criteria_process.html">公共需求</a>,甚至可以作为 Netbeans 正式发布版本的一部分。
</p></li>
<LI><p>
如果你的模块提供的功能里使用了其他模块的 API,你应该遵循<a href="http://openide.netbeans.org/versioning-policy.html#2">版本政策</a>
</p></li>
</OL>
<P>
记住,不管是不是存放在这个网站,任何人都可以编写 Netbeans 模块,所以请使用 <A HREF="http://openide.netbeans.org/">Open APIs</A>。建立模块 JAR 文件之后,这些 JAR 文件随便怎么发布都可以,不管是以原文件形式还是二进制形式;任何使用这一 IDE 的人都可以通过右键点击<b>模块</b>节点然后选择 JAR 或者 NBM 进行安装。
</p>
<P><a name="moderator"><h2>协调员的责任</h2></a></p>
<p>
网站会有一些负协调员,他们负责保证贡献进程的顺利推进,并且帮助新的贡献者理解他们所需要做的事。下面的一些事是协调员应该寻找贡献者并帮助他们完成的。
</p>
<P><h3>接受 contrib.netbeans.org 的上传</h3></p>
<ol>
<li><p>
观察 nbdev@netbeans.org 和其他列表上的那些有可能成为贡献者的人 - 给他们一些鼓励和一些指导性意见。
</P></LI>
<li><p>
确保你被<a href="https://netbeans.org/projects/contrib/members"></a><code>contrib.netbeans.org</code> 上一个项目的拥有者。
</p></li>
<LI>
当你看到 <code>contrib.netbeans.org</code> 上合理的上传时尽快接受它们。
</P></LI>
<LI><p>
在接受 contrib.netbeans.org 文件下载建议时要小心知识产权方面的问题。这里的贡献资源不需要有 CDDL 许可;它们可以是 GPL 或者公共领域的资源,只要明确在信息中指明来源就行。但是那些缺少许可证的比如那些从不同地方而来又没有适当归属的文件应该被拒绝。例子:一个名为 <samp>dictionary.txt</samp> 的包含了大量词汇的文件,却没有什么说明,则有可能是从什么地方偷来的,因为一个模块的作者是不大可能完成这样的工作的;公共 DTDs 和其他标准代码格式的文件一般也不是模块作者写的,而且通常带有一些特殊的版权甚至使用条款。来源于 JDK 的资源或者其他二次发布的东西绝对不可以接受。拒绝它们是因为这些东西可能会带来法律上的危险,确保在管理界面包含一个给发送者的建议,让发送者明白怎样做才能让你接受贡献。
</P></LI>
<LI><P>
确保贡献者是否已经填写并提交了贡献者协议是你的责任。如果他们有的话,他们会被列在 <A HREF="../../about/legal/approved-contributors.html">https://netbeans.org/about/legal/approved-contributors.html</A>。只有做完这些事之后,他们的贡献才可以被接受 - 在 <A HREF="http://www.oracle.com/technetwork/oca-faq-405384.pdf">http://www.oracle.com/technetwork/oca-faq-405384.pdf</A> 有表格和一些更多的信息。
<P></LI>
<li><p>
如果文件被接受了,给贡献者提个醒让他们给 nbdev@netbeans.org 发送一条信息以表明他们的存在。
</p></li>
<li><p>
接受 contrib.netbeans.org 上开发者的请求,接受其他网站的开发者,或者那些比较严肃认真的,尤其是接受了要提交整个代码文件的那些人的请求。确保这些提交者明白怎样从 contrib.netbeans.org 的 CVS 上签出项目,知道怎样建立子目录并工作于上面,还要让他们明白提交的时候不要影响旁边的文件。
</p></li>
<li><p>
定期在 contrib.netbeans.org 上搜索未指派的主题,并将它们交给合适的人。
</p></li>
</ol>
<P><h3>接受新项目请求</h3></p>
<ol>
<LI><p>
如果 nbdev@netbeans.org 来了一封请求建立新项目的信息,合理的代码已经在 contrib.netbeans.orgs 上可用,并且这个消息包含了一个项目名请求,或者一个真实的 SourceCast 新项目请求,确保新项目在建立时没有什么技阻碍(比如没有解决许可证问题 - 只有 CDDL 才可以被接受 - 或者对项目的名字和范围感到迷惑)。如果有什么不清楚的地方,询问 nbdev@netbeans.org 并抄送上贡献者。如果一切 OK,就可以回复 nbdev@netbeans.org 说,如果没有反对意见,作为一个协调员,你将在一两天内建立这样一个项目。
</P></LI>
<LI><P>
在一个项目的拥有者给新项目提交代码之前,记得确认他们是否已经填写了贡献者协议。如果他们有的话,他们会被列在 <A HREF="../../about/legal/approved-contributors.html">http://www.oracle.com/technetwork/oca-faq-405384.pdf</A> 有表格和一些更多的信息。
<P></LI>
<LI><p>
有些贡献实际上最好的方式是添加到现有的项目里去。比如说,Jeff Keyser 的 HTTP Javadoc filesystem 就是一个相对较小的代码块,将其合成到现有 Javadoc 支持模块里是有一定意义的。即使就 IDE 来说在字面上区别开这些模块是个好注意,但是把几个模块放在一个 SourceCast 项目下更加直接了当 - 参见 <code>apisupport</code> 或者 <code>web</code> 项目的例子,这些项目就包含了好几种不同的模块 - 鉴于它们可以灵活地分开或共享 CVS,bug/issue,以及网页空间。不管怎样,尽量避免创建新的项目,鼓励现有项目的拥有者和新的贡献者一起合作。这个网站的协调员只负责建立这一平台并让这些已经存在的项目所有者和新的贡献者同意合作。然后,项目的所有者的责任是实质上接受代码,使新的贡献者成为这个项目的开发员之一,等等。
</P></LI>
<LI><p>
如果一个创建新项目的请求按照技术要求提交后经过至少24小时,而没有来自 nbdev@netbeans.org 的任何反对或者更改计划,网站的协调员应该批准这一新项目的建立。如果邮件列表的讨论对是否应该建立这一项目提出了疑问,协调员则不应急于建立新项目,而应该再等待一段时间直到社区出现一致的意见后才建立新项目。大多数的新项目如果没有出现辩论的话会在24小时内很快被接受(或是在 nbdev@netbeans.org 中有很少的反应,或是有积极以及好奇的反应)。
</P></LI>
<LI><p>
一个新项目可以由那些在这个网站有某些范围特权的人通过 SourceCast 管理界面创建或接受。创建项目时,协调员一般要注意以下细节:
</p>
<ul>
<LI><p>
给新项目的拥有者发送 email 通知他/她新项目已经建立。一般情况下这些拥有者会有他们在 SourceCast 上的账户,否则协调员应该为他/她创建一个账户,并将用户名/密码发送给他/她。
</P></LI>
<LI><p>
给 nbdev@netbeans.org 一个回应指明新项目已经被接受。
</P></LI>
<LI><p>
抄送 nbnews_contrib@netbeans.org 以确保这个贡献会出现在下一期的通讯(Newsletter)中。
</P></LI>
<LI><p>
在 netbeans.org 上提交一则<a href="https://netbeans.org/servlets/ProjectNewsAdd">待处理的新闻</a>
</P></LI>
<LI><p>
确保通知 Jack Cathpoole(或者 webmaster@netbeans.org)一个新项目已经建立,这样他们会建立一个以 <samp>www/</samp> 开头的文件并且有可能会将这个项目加入这个网站的重要项目列表。
</P></LI>
<LI><p>
也要通知 Jan Chalupa(或者其他 Issuezilla 管理员),确保相应的 Issuezilla 的设置。
</P></LI>
<LI><p>
给新项目的拥有者一些指示,让他们知道在管理模块时有哪些资源可以被利用: (举例)如何向准备好的 CVS 内签入项目;回答他们关于 nbdiscuss@nebeans.org 的一些基础问题;构建脚本的惯例编写方法;创建新项目页面的页面导航;登录后有哪些 SourceCast 管理功能可以使用;包含了各种混杂资源的<a href="../guidelines/dev-resources.html">开发资源</a>列表。(这里是一个<a href="https://netbeans.org/servlets/ReadMsg?msgId=81933&listName=nbnews_contrib">消息样例</a>,通过它你可得到一些提示。)
</P></LI>
<LI><p>
如果有上传 CVS 历史信息文件的请求,请和 CollabNet 一起工作保证请求的实现。向 www 发一个 Issuezilla 请求并指派给 <code>support@netbeans.org</code> 可能是最好的方法(抄送给相关人员)。
</p></li>
<LI><p>
如果你希望你的模块可以被其他人看见,那就请求将你的模块加入 <code>CVSROOT/modules</code>。向“www”和“netbeans.org CVS”发一个 Issuezilla TASK 是最好的方法(抄送 <code>rbalada@netbeans.org</code><code>jcatchpoole@netbeans.org</code>)。如果你知道如何给 <code>CVSROOT/modules</code> 做一个 Patch,请将其附加到那个问题上。
</p></li>
</ul></li>
</ol>
</BODY>
</HTML>