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" %}
{% block title %}{{ _('Developer Guidelines and Coding Style') }}{% endblock %}
{% block lastupdated %}2019-11{% endblock %}
{% block lastupdated %}2020-05{% endblock %}
{% block content %}
<p>{% trans newdevs=site_url('get-involved/guides/new-developers') -%}
Read the <a href="{{ newdevs }}">new developers guide</a> first.
@@ -20,7 +20,7 @@ check with the appropriate developer for guidance.
<ul>
<li>{% trans -%}
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.
{%- endtrans %}</li>
<li>{% trans -%}
@@ -33,11 +33,11 @@ the checkin deadline for a release.
<h3>{{ _('Release Cycle') }}</h3>
<p>{% trans -%}
Our normal release cycle is 6-10 weeks.
<p>
Our normal release cycle is 6-12 weeks.
Following are the approximate deadlines within a typical 8-week cycle.
Actual deadlines for each release are set by the lead developer.
{%- endtrans %}</p>
Actual deadlines for each release are set by the lead developer after consultation with the full team.
</p>
<ul>
<li>{% trans -%}
@@ -55,19 +55,19 @@ Actual deadlines for each release are set by the lead developer.
<li>{% trans -%}
2-3 weeks before release: Hold project meeting to review new home page link requests, if any.
{%- endtrans %}</li>
<li>{% trans -%}
7-10 days before release: String freeze. No more changes to translated ("tagged") strings.
<li>
10-14 days before release: String freeze. No more changes to translated ("tagged") strings.
Push strings to Transifex, announce translation deadline on Transifex.
{%- endtrans %}</li>
<li>{% trans -%}
7-10 days before release: Feature deadline. Bug fixes only after this time. No more features, refactoring or cleanup.
{%- endtrans %}</li>
<li>{% trans -%}
</li>
<li>
10-14 days before release: Feature deadline. Bug fixes only after this time. No more features, refactoring or cleanup.
</li>
<li>
3-4 days before release: Translation deadline. Pull translations from Transifex and check in.
{%- endtrans %}</li>
<li>{% trans -%}
2-3 days before release: Checkin deadline. No checkins after this time without the permission of the release builder.
{%- endtrans %}</li>
</li>
<li>
3-4 days before release: Checkin deadline. No checkins after this time without the permission of the release builder.
</li>
<li>{% trans -%}
Hours before release: Code review deadline.
{%- endtrans %}</li>
@@ -132,7 +132,7 @@ Javadocs for new private methods are desirable.
{%- endtrans %}</li>
<li>{% trans -%}
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 exceptions declared thrown must have @throws lines, and no HTML errors.
{%- 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.
Run 'ant findbugs' to learn more.
{%- endtrans %}</li>
<li>{% trans -%}
We require Java 7 to build and run I2P.
Do not use Java 8 classes or methods anywhere.
Do not use Java 7 or 8 classes or methods in embedded subsystems (core, router, mstreaming, streaming, i2ptunnel),
as Android and embedded applications require only Java 6. All classes must be available in Android API 14.
<li>
We require Java 8 to build and run I2P as of release 0.9.47.
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.
These subsystems are used by
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
of the Android SDK and they compile to Java 6-compatible code.
{%- endtrans %}</li>
</li>
<li>
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).
@@ -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).
</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.
</li>
<li>{% trans -%}