diff --git a/i2p2www/pages/site/get-involved/guides/dev-guidelines.html b/i2p2www/pages/site/get-involved/guides/dev-guidelines.html index 6f26b195905ca7eebb9c652200b6bc91c706ff15..4b63b959e9acf6f07b918dbe169431e4671f4eb2 100644 --- a/i2p2www/pages/site/get-involved/guides/dev-guidelines.html +++ b/i2p2www/pages/site/get-involved/guides/dev-guidelines.html @@ -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 -%}