dev guidelines update

This commit is contained in:
zzz
2020-05-28 11:38:28 +00:00
parent b21beb1330
commit 2fae5c8e66

View File

@@ -1,6 +1,6 @@
{% extends "global/layout.html" %} {% extends "global/layout.html" %}
{% block title %}{{ _('Developer Guidelines and Coding Style') }}{% endblock %} {% block title %}{{ _('Developer Guidelines and Coding Style') }}{% endblock %}
{% block lastupdated %}2019-11{% endblock %} {% block lastupdated %}2020-05{% endblock %}
{% block content %} {% block content %}
<p>{% trans newdevs=site_url('get-involved/guides/new-developers') -%} <p>{% trans newdevs=site_url('get-involved/guides/new-developers') -%}
Read the <a href="{{ newdevs }}">new developers guide</a> first. Read the <a href="{{ newdevs }}">new developers guide</a> first.
@@ -20,7 +20,7 @@ check with the appropriate developer for guidance.
<ul> <ul>
<li>{% trans -%} <li>{% trans -%}
Please don't just "write code". If you can, participate in other development activities, including: Please don't just "write code". If you can, participate in other development activities, including:
development discussions and support on IRC, zzz.i2p, and forum.i2p; testing; development discussions and support on IRC, zzz.i2p, and i2pforum.i2p; testing;
bug reporting and responses; documentation; code reviews; etc. bug reporting and responses; documentation; code reviews; etc.
{%- endtrans %}</li> {%- endtrans %}</li>
<li>{% trans -%} <li>{% trans -%}
@@ -33,11 +33,11 @@ the checkin deadline for a release.
<h3>{{ _('Release Cycle') }}</h3> <h3>{{ _('Release Cycle') }}</h3>
<p>{% trans -%} <p>
Our normal release cycle is 6-10 weeks. Our normal release cycle is 6-12 weeks.
Following are the approximate deadlines within a typical 8-week cycle. Following are the approximate deadlines within a typical 8-week cycle.
Actual deadlines for each release are set by the lead developer. Actual deadlines for each release are set by the lead developer after consultation with the full team.
{%- endtrans %}</p> </p>
<ul> <ul>
<li>{% trans -%} <li>{% trans -%}
@@ -55,19 +55,19 @@ Actual deadlines for each release are set by the lead developer.
<li>{% trans -%} <li>{% trans -%}
2-3 weeks before release: Hold project meeting to review new home page link requests, if any. 2-3 weeks before release: Hold project meeting to review new home page link requests, if any.
{%- endtrans %}</li> {%- endtrans %}</li>
<li>{% trans -%} <li>
7-10 days before release: String freeze. No more changes to translated ("tagged") strings. 10-14 days before release: String freeze. No more changes to translated ("tagged") strings.
Push strings to Transifex, announce translation deadline on Transifex. Push strings to Transifex, announce translation deadline on Transifex.
{%- endtrans %}</li> </li>
<li>{% trans -%} <li>
7-10 days before release: Feature deadline. Bug fixes only after this time. No more features, refactoring or cleanup. 10-14 days before release: Feature deadline. Bug fixes only after this time. No more features, refactoring or cleanup.
{%- endtrans %}</li> </li>
<li>{% trans -%} <li>
3-4 days before release: Translation deadline. Pull translations from Transifex and check in. 3-4 days before release: Translation deadline. Pull translations from Transifex and check in.
{%- endtrans %}</li> </li>
<li>{% trans -%} <li>
2-3 days before release: Checkin deadline. No checkins after this time without the permission of the release builder. 3-4 days before release: Checkin deadline. No checkins after this time without the permission of the release builder.
{%- endtrans %}</li> </li>
<li>{% trans -%} <li>{% trans -%}
Hours before release: Code review deadline. Hours before release: Code review deadline.
{%- endtrans %}</li> {%- endtrans %}</li>
@@ -132,7 +132,7 @@ Javadocs for new private methods are desirable.
{%- endtrans %}</li> {%- endtrans %}</li>
<li>{% trans -%} <li>{% trans -%}
For any Javadocs added, there must not be any doclint errors or warnings. For any Javadocs added, there must not be any doclint errors or warnings.
Run 'ant javadoc' with Oracle Java 8 or higher to check. Run 'ant javadoc' with Oracle Java 14 or higher to check.
All params must have @param lines, all non-void methods must have @return lines, All params must have @param lines, all non-void methods must have @return lines,
all exceptions declared thrown must have @throws lines, and no HTML errors. all exceptions declared thrown must have @throws lines, and no HTML errors.
{%- endtrans %}</li> {%- endtrans %}</li>
@@ -157,14 +157,14 @@ Use generics and concurrent classes where possible. I2P is a highly multi-thread
Be familiar with common Java pitfalls that are caught by findbugs. Be familiar with common Java pitfalls that are caught by findbugs.
Run 'ant findbugs' to learn more. Run 'ant findbugs' to learn more.
{%- endtrans %}</li> {%- endtrans %}</li>
<li>{% trans -%} <li>
We require Java 7 to build and run I2P. We require Java 8 to build and run I2P as of release 0.9.47.
Do not use Java 8 classes or methods anywhere. Do not use Java 7 or 8 classes or methods in embedded subsystems: addressbook, core, i2ptunnel.jar (non-UI), mstreaming, router, routerconsole (news only), streaming.
Do not use Java 7 or 8 classes or methods in embedded subsystems (core, router, mstreaming, streaming, i2ptunnel), These subsystems are used by
as Android and embedded applications require only Java 6. All classes must be available in Android API 14. Android and embedded applications that require only Java 6. All classes must be available in Android API 14.
Java 7 language features are acceptable in these subsystems if supported by the current version Java 7 language features are acceptable in these subsystems if supported by the current version
of the Android SDK and they compile to Java 6-compatible code. of the Android SDK and they compile to Java 6-compatible code.
{%- endtrans %}</li> </li>
<li> <li>
Try-with-resources cannot be used in embedded subsystems as it requires java.lang.AutoCloseable Try-with-resources cannot be used in embedded subsystems as it requires java.lang.AutoCloseable
in the runtime, and this is not available until Android API 19 (KitKat 4.4). in the runtime, and this is not available until Android API 19 (KitKat 4.4).
@@ -174,6 +174,11 @@ The java.nio.file package cannot be used in embedded subsystems as it
is not available until Android API 26 (Oreo 8). is not available until Android API 26 (Oreo 8).
</li> </li>
<li> <li>
Other than the above limitations,
Java 8 classes, methods, and constructs may be used in the following subsystems only:
BOB, desktopgui, i2psnark, i2ptunnel.war (UI), jetty-i2p.jar, jsonrpc, routerconsole (except news), SAM, susidns, susimail, systray.
</li>
<li>
Plugin authors may require any minimum Java version via the plugin.config file. Plugin authors may require any minimum Java version via the plugin.config file.
</li> </li>
<li>{% trans -%} <li>{% trans -%}