diff --git a/i2p2www/pages/site/get-involved/guides/dev-guidelines.html b/i2p2www/pages/site/get-involved/guides/dev-guidelines.html
index 6f26b195..4b63b959 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 %}
{% trans newdevs=site_url('get-involved/guides/new-developers') -%}
Read the new developers guide first.
@@ -20,7 +20,7 @@ check with the appropriate developer for guidance.
- {% 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 %}
- {% trans -%}
@@ -33,11 +33,11 @@ the checkin deadline for a release.
{{ _('Release Cycle') }}
-{% trans -%}
-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.
-Actual deadlines for each release are set by the lead developer.
-{%- endtrans %}
+Actual deadlines for each release are set by the lead developer after consultation with the full team.
+
- {% trans -%}
@@ -55,19 +55,19 @@ Actual deadlines for each release are set by the lead developer.
- {% trans -%}
2-3 weeks before release: Hold project meeting to review new home page link requests, if any.
{%- endtrans %}
-- {% trans -%}
-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.
-{%- endtrans %}
-- {% trans -%}
-7-10 days before release: Feature deadline. Bug fixes only after this time. No more features, refactoring or cleanup.
-{%- endtrans %}
-- {% trans -%}
+
+-
+10-14 days before release: Feature deadline. Bug fixes only after this time. No more features, refactoring or cleanup.
+
+-
3-4 days before release: Translation deadline. Pull translations from Transifex and check in.
-{%- endtrans %}
-- {% trans -%}
-2-3 days before release: Checkin deadline. No checkins after this time without the permission of the release builder.
-{%- endtrans %}
+
+-
+3-4 days before release: Checkin deadline. No checkins after this time without the permission of the release builder.
+
- {% trans -%}
Hours before release: Code review deadline.
{%- endtrans %}
@@ -132,7 +132,7 @@ Javadocs for new private methods are desirable.
{%- endtrans %}
- {% 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 %}
@@ -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 %}
-- {% 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.
+
-
+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 %}
+
-
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).
-
+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.
+
+-
Plugin authors may require any minimum Java version via the plugin.config file.
- {% trans -%}