diff --git a/DISCLAIMER b/DISCLAIMER
deleted file mode 100644
index 569ba05..0000000
--- a/DISCLAIMER
+++ /dev/null
@@ -1,8 +0,0 @@
-Apache FreeMarker is an effort undergoing incubation at The Apache Software
-Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of
-all newly accepted projects until a further review indicates that the
-infrastructure, communications, and decision making process have stabilized in
-a manner consistent with other successful ASF projects. While incubation
-status is not necessarily a reflection of the completeness or stability of the
-code, it does indicate that the project has yet to be fully endorsed by the
-ASF.
\ No newline at end of file
diff --git a/LICENSE b/LICENSE
index d645695..1121eba 100644
--- a/LICENSE
+++ b/LICENSE
@@ -200,3 +200,24 @@
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
+
+=========================================================================
+
+The source code contains the following binaries,
+which were created at the Apache FreeMarker project, and hence are
+covered by the same license as the other source files of it:
+
+  src/main/misc/overloadedNumberRules/prices.ods
+  src/manual/en_US/docgen-originals/figures/overview.odg
+  src/manual/en_US/docgen-originals/figures/model2sketch_with_alpha.png
+  src/manual/en_US/docgen-originals/figures/tree_with_alpha.png
+  src/manual/en_US/favicon.png
+  src/manual/en_US/figures/model2sketch.png
+  src/manual/en_US/figures/overview.png
+  src/manual/en_US/figures/tree.png
+  src/manual/en_US/logo.png
+  src/manual/zh_CN/favicon.png
+  src/manual/zh_CN/figures/model2sketch.png
+  src/manual/zh_CN/figures/overview.png
+  src/manual/zh_CN/figures/tree.png
+  src/manual/zh_CN/logo.png
diff --git a/NOTICE b/NOTICE
index c14c3fa..929539f 100644
--- a/NOTICE
+++ b/NOTICE
@@ -1,5 +1,5 @@
-Apache FreeMarker (incubating)
-Copyright 2015-2017 The Apache Software Foundation
+Apache FreeMarker
+Copyright 2015-2018 The Apache Software Foundation
 
 This product includes software developed at
 The Apache Software Foundation (http://www.apache.org/).
diff --git a/README.md b/README.md
index cf60951..b2f7dd8 100644
--- a/README.md
+++ b/README.md
@@ -1,25 +1,12 @@
 Apache FreeMarker {version}
 ===========================
 
-[![Build Status](https://travis-ci.org/apache/incubator-freemarker.svg?branch=2.3-gae)](https://travis-ci.org/apache/incubator-freemarker)
+[![Build Status](https://travis-ci.org/apache/freemarker.svg?branch=2.3-gae)](https://travis-ci.org/apache/freemarker)
 
 For the latest version or to report bugs visit:
 https://freemarker.apache.org/
 
 
-DISCLAIMER
-----------
-
-Apache FreeMarker is an effort undergoing incubation at The Apache
-Software Foundation (ASF). Incubation is required of all newly accepted
-projects until a further review indicates that the infrastructure,
-communications, and decision making process have stabilized in a manner
-consistent with other successful ASF projects. While incubation status is
-not necessarily a reflection of the completeness or stability of the
-code, it does indicate that the project has yet to be fully endorsed by
-the ASF.
-
-
 Regarding pull requests on Github
 ---------------------------------
 
diff --git a/build.xml b/build.xml
index 9530672..f6d3bb8 100644
--- a/build.xml
+++ b/build.xml
@@ -386,9 +386,6 @@
       />
     </copy>
     <copy toDir="build/classes/META-INF">
-      <fileset dir="." includes="DISCLAIMER" />
-    </copy>
-    <copy toDir="build/classes/META-INF">
       <fileset dir="src/dist/jar/META-INF" includes="*" />
     </copy>
     <delete dir="build/src-main-java-filtered" />
@@ -668,7 +665,6 @@
         <include name="README.md" />
         <!-- LICENSE is binary-distribution-specific, and is copied later. -->
         <include name="NOTICE" />
-        <include name="DISCLAIMER" />
         <include name="RELEASE-NOTES" />
       </fileset>
     </copy>
@@ -679,7 +675,9 @@
     />
     <!-- Copy binary-distribution-specific files: -->
     <copy todir="${dist.bin.dir}/">
-      <fileset dir="src/dist/bin/" />
+      <fileset dir="src/dist/bin/">
+        <exclude name="rat-excludes" />
+      </fileset>
     </copy>
 
     <!-- Copy binary -->
@@ -717,7 +715,6 @@
         <include name="README.md" />
         <include name="LICENSE" />
         <include name="NOTICE" />
-        <include name="DISCLAIMER" />
         <include name="RELEASE-NOTES" />
       </fileset>
     </copy>
@@ -853,9 +850,9 @@
   </licenses>
   
   <scm>
-    <connection>scm:git:https://git-wip-us.apache.org/repos/asf/incubator-freemarker.git</connection>
-    <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/incubator-freemarker.git</developerConnection>
-    <url>https://git-wip-us.apache.org/repos/asf?p=incubator-freemarker.git</url>
+    <connection>scm:git:https://git-wip-us.apache.org/repos/asf/freemarker.git</connection>
+    <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/freemarker.git</developerConnection>
+    <url>https://git-wip-us.apache.org/repos/asf?p=freemarker.git</url>
     <tag>v${version}</tag>
   </scm>
 
@@ -867,21 +864,21 @@
   <mailingLists>
     <mailingList>
         <name>FreeMarker developer list</name>
-        <post>dev@freemarker.incubator.apache.org</post>
-        <subscribe>dev-subscribe@freemarker.incubator.apache.org</subscribe>
-        <unsubscribe>dev-unsubscribe@freemarker.incubator.apache.org</unsubscribe>
-        <archive>http://mail-archives.apache.org/mod_mbox/incubator-freemarker-dev/</archive>
+        <post>dev@freemarker.apache.org</post>
+        <subscribe>dev-subscribe@freemarker.apache.org</subscribe>
+        <unsubscribe>dev-unsubscribe@freemarker.apache.org</unsubscribe>
+        <archive>http://mail-archives.apache.org/mod_mbox/freemarker-dev/</archive>
     </mailingList>
     <mailingList>
         <name>FreeMarker commit and Jira notifications list</name>
-        <post>notifications@freemarker.incubator.apache.org</post>
-        <subscribe>notifications-subscribe@freemarker.incubator.apache.org</subscribe>
-        <unsubscribe>notifications-unsubscribe@freemarker.incubator.apache.org</unsubscribe>
-        <archive>http://mail-archives.apache.org/mod_mbox/incubator-freemarker-notifications/</archive>
+        <post>notifications@freemarker.apache.org</post>
+        <subscribe>notifications-subscribe@freemarker.apache.org</subscribe>
+        <unsubscribe>notifications-unsubscribe@freemarker.apache.org</unsubscribe>
+        <archive>http://mail-archives.apache.org/mod_mbox/freemarker-notifications/</archive>
     </mailingList>
     <mailingList>
       <name>FreeMarker management private</name>
-      <post>private@freemarker.incubator.apache.org</post>
+      <post>private@freemarker.apache.org</post>
     </mailingList>
   </mailingLists>
   
@@ -913,12 +910,12 @@
       <fileset dir="${dist.src.dir}/src/main/resources" />
       <fileset dir="${dist.src.dir}/src/main/javacc/" />
       <fileset dir="build/generated-sources/java/" includes="**/*.java" />
-      <metainf dir="${dist.src.dir}" includes="LICENSE, NOTICE, DISCLAIMER" />
+      <metainf dir="${dist.src.dir}" includes="LICENSE, NOTICE" />
     </jar>
 
     <mkdir dir="build/javadoc-attachment-metainf"/>
     <copy todir="build/javadoc-attachment-metainf">
-      <fileset dir="${dist.bin.dir}" includes="DISCLAIMER, NOTICE" />
+      <fileset dir="${dist.bin.dir}" includes="NOTICE" />
     </copy>
     <copy todir="build/javadoc-attachment-metainf">
       <fileset dir="src/dist/javadoc/META-INF/" />
@@ -1098,7 +1095,6 @@
       <patternset>
         <include name="META-INF/*"/>
         <exclude name="META-INF/LICENSE"/>
-        <exclude name="META-INF/DISCLAIMER"/>
         <exclude name="META-INF/NOTICE"/>
       </patternset>
     </unzip>
diff --git a/rat-excludes b/rat-excludes
index cdc8ffc..221d104 100644
--- a/rat-excludes
+++ b/rat-excludes
@@ -38,10 +38,6 @@
 src/manual/zh_CN/figures/tree.png
 src/manual/zh_CN/logo.png
 
-# Binaries/archives created in the Incubatir project:
-src/manual/en_US/apache-incubator.png
-src/manual/zh_CN/apache-incubator.png
-
 # Rat thinks it's a binary, but it's UTF-16 text:
 src/test/resources/freemarker/test/templatesuite/expected/output-encoding2.txt
 
diff --git a/src/dist/bin/LICENSE b/src/dist/bin/LICENSE
index 9cf0525..93af53b 100644
--- a/src/dist/bin/LICENSE
+++ b/src/dist/bin/LICENSE
@@ -203,12 +203,10 @@
 
 =========================================================================
 
-The Apache FreeMarker (incubating) documentation contains the following
-binaries, which were created at the Apache FreeMarker (incubating)
-project, and hence are covered by the same license as the other source
-files of it:
+The Apache FreeMarker documentation contains the following binaries,
+which were created at the Apache FreeMarker project, and hence are
+covered by the same license as the other source files of it:
 
-    documentation/_html/apache-incubator.png
     documentation/_html/docgen-resources/img/patterned-bg.png
     documentation/_html/docgen-resources/img/xxe.png
     documentation/_html/favicon.png
@@ -219,14 +217,6 @@
     
 =========================================================================
 
-The Apache FreeMarker (incubating) documentation contains the following
-binaries, which were created at the Apache Incubator project, and hence
-are covered by the same license as Apache FreeMarker (incubating):
-    
-    documentation/_html/apache-incubator.png
-
-=========================================================================
-
 The documentation includes a selection of icons from various icon sets
 (fonts), stored together inside these files, which were geneated with
 https://icomoon.io/app/:
diff --git a/src/dist/bin/documentation/index.html b/src/dist/bin/documentation/index.html
index 4766233..45a5748 100644
--- a/src/dist/bin/documentation/index.html
+++ b/src/dist/bin/documentation/index.html
@@ -61,7 +61,5 @@
     </ul>
     
     <p><a href="https://freemarker.apache.org/">Visit the FreeMarker home page</a> (help, editor plugins, latest downloads, etc.)</p>
-    
-    <p><i><b>Disclaimer:</b> Apache FreeMarker is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.</i></p>
 </body>
 </html>
diff --git a/src/dist/bin/rat-excludes b/src/dist/bin/rat-excludes
index b97e0b4..4e99682 100644
--- a/src/dist/bin/rat-excludes
+++ b/src/dist/bin/rat-excludes
@@ -20,7 +20,6 @@
 /documentation/_html/api/**
 
 # Images/binaries that were create at FreeMarker:
-documentation/_html/apache-incubator.png
 documentation/_html/docgen-resources/img/patterned-bg.png
 documentation/_html/docgen-resources/img/xxe.png
 documentation/_html/favicon.png
@@ -29,9 +28,6 @@
 documentation/_html/figures/tree.png
 documentation/_html/logo.png
 
-# Images/binaries that were create at other Apache projects:
-documentation/_html/apache-incubator.png
-
 # Fonts whose license is detailed in the LICENSE file:
 documentation/_html/docgen-resources/fonts/icomoon.eot
 documentation/_html/docgen-resources/fonts/icomoon.svg
diff --git a/src/main/java/freemarker/cache/TemplateLoader.java b/src/main/java/freemarker/cache/TemplateLoader.java
index 42d5677..ebbcd9d 100644
--- a/src/main/java/freemarker/cache/TemplateLoader.java
+++ b/src/main/java/freemarker/cache/TemplateLoader.java
@@ -117,6 +117,10 @@
      * template content (based on the {@code #ftl encoding=...} header), this method will be called for a second time
      * with the correct {@code encoding} parameter value.
      * 
+     * <p>
+     * Unlike {@link #findTemplateSource(String)}, this method must not tolerate if the template is not found, and
+     * must throw {@link IOException} in that case. 
+     * 
      * @param templateSource
      *            an object representing a template source, obtained through a prior call to
      *            {@link #findTemplateSource(String)}. This must be an object on which
@@ -126,9 +130,9 @@
      *            to the byte representation of the template stream, and instead directly obtain a character stream.
      *            These loaders should ignore the encoding parameter.
      * 
-     * @return A {@link Reader} representing the template character stream. It's the responsibility of the caller (which
-     *         is {@link TemplateCache} usually) to {@code close()} it. The {@link Reader} is not required to work after
-     *         the {@code templateSource} was closed ({@link #closeTemplateSource(Object)}).
+     * @return A {@link Reader} representing the template character stream; not {@code null}. It's the responsibility of
+     *         the caller (which is {@link TemplateCache} usually) to {@code close()} it. The {@link Reader} is not
+     *         required to work after the {@code templateSource} was closed ({@link #closeTemplateSource(Object)}).
      * 
      * @throws IOException
      *             if an I/O error occurs while accessing the stream.
diff --git a/src/main/java/freemarker/core/Configurable.java b/src/main/java/freemarker/core/Configurable.java
index a2b5d29..3c83e94 100644
--- a/src/main/java/freemarker/core/Configurable.java
+++ b/src/main/java/freemarker/core/Configurable.java
@@ -2365,12 +2365,18 @@
      *   <li><p>{@code "tag_syntax"}:
      *       See {@link Configuration#setTagSyntax(int)}.
      *       <br>String value: Must be one of
-     *       {@code "auto_detect"}, {@code "angle_bracket"}, and {@code "square_bracket"}.
+     *       {@code "auto_detect"}, {@code "angle_bracket"}, and {@code "square_bracket"} (like {@code [#if x]}).
+     *       <br>Note that setting the {@code "tagSyntax"} to {@code "square_bracket"} does <em>not</em> change
+     *       <code>${x}</code> to {@code [=...]}; that's <em>interpolation</em> syntax, so use the
+     *       {@code "interpolation_syntax"} setting for that, not this setting.
      *        
      *   <li><p>{@code "interpolation_syntax"} (since 2.3.28):
      *       See {@link Configuration#setInterpolationSyntax(int)}.
      *       <br>String value: Must be one of
-     *       {@code "legacy"}, {@code "dollar"}, and {@code "square_bracket"}. 
+     *       {@code "legacy"}, {@code "dollar"}, and {@code "square_bracket"} (like {@code [=x]}). 
+     *       <br>Note that setting the {@code "interpolation_syntax"} to {@code "square_bracket"} does <em>not</em>
+     *       change {@code <#if x>} to {@code [#if x]}; that's <em>tag</em> syntax, so use the
+     *       {@code "tag_syntax"} setting for that, not this setting.       
      *       
      *   <li><p>{@code "naming_convention"}:
      *       See {@link Configuration#setNamingConvention(int)}.
diff --git a/src/main/java/freemarker/template/Configuration.java b/src/main/java/freemarker/template/Configuration.java
index f0c6a0d..0785d21 100644
--- a/src/main/java/freemarker/template/Configuration.java
+++ b/src/main/java/freemarker/template/Configuration.java
@@ -376,15 +376,35 @@
         STANDARD_OUTPUT_FORMATS.put(JSONOutputFormat.INSTANCE.getName(), JSONOutputFormat.INSTANCE);
     }
     
+    /**
+     * The parser decides between {@link #ANGLE_BRACKET_TAG_SYNTAX} and {@link #SQUARE_BRACKET_TAG_SYNTAX} based on the
+     * first tag (like {@code [#if x]} or {@code <#if x>}) it mets. Note that {@code [=...]} is <em>not</em> a tag, but
+     * an interpolation, so it's not used for tag syntax auto-detection.
+     */
     public static final int AUTO_DETECT_TAG_SYNTAX = 0;
+    
+    /** For example {@code <#if x><@foo /></#if>} */
     public static final int ANGLE_BRACKET_TAG_SYNTAX = 1;
+    
+    /**
+     * For example {@code [#if x][@foo /][/#if]}.
+     * It does <em>not</em> change <code>${x}</code> to {@code [=x]}; that's square bracket <em>interpolation</em>
+     * syntax ({@link #SQUARE_BRACKET_INTERPOLATION_SYNTAX}).
+     */
     public static final int SQUARE_BRACKET_TAG_SYNTAX = 2;
 
     /** <code>${expression}</code> and the deprecated <code>#{expression; numFormat}</code> @since 2.3.28 */
     public static final int LEGACY_INTERPOLATION_SYNTAX = 20;
+    
     /** <code>${expression}</code> only (not <code>#{expression; numFormat}</code>) @since 2.3.28 */
     public static final int DOLLAR_INTERPOLATION_SYNTAX = 21;
-    /** <code>[=expression]</code> @since 2.3.28 */
+    
+    /**
+     * <code>[=expression]</code> instead of <code>${expression}</code>.
+     * It does <em>not</em> change {@code <#if x>} to {@code [#if x]}; that's square bracket <em>tag</em> syntax
+     * ({@link #SQUARE_BRACKET_TAG_SYNTAX}).
+     * @since 2.3.28
+     */
     public static final int SQUARE_BRACKET_INTERPOLATION_SYNTAX = 22;
     
     public static final int AUTO_DETECT_NAMING_CONVENTION = 10;
@@ -2378,15 +2398,20 @@
 
     /**
      * Determines the tag syntax (like {@code <#if x>} VS {@code [#if x]}) of the template files 
-     * that has no {@code #ftl} header to decide that. The {@code tagSyntax} parameter must be one of:
+     * that has no {@code #ftl} header to decide that. Don't confuse this with the interpolation syntax
+     * ({@link #setInterpolationSyntax(int)}); they are independent.
+     * 
+     * <p>The {@code tagSyntax} parameter must be one of:
      * <ul>
      *   <li>{@link Configuration#AUTO_DETECT_TAG_SYNTAX}:
-     *     use the syntax of the first FreeMarker tag (can be anything, like <tt>#list</tt>,
+     *     Use the syntax of the first FreeMarker tag (can be anything, like <tt>#list</tt>,
      *     <tt>#include</tt>, user defined, etc.)
      *   <li>{@link Configuration#ANGLE_BRACKET_TAG_SYNTAX}:
-     *     use the angle bracket syntax (the normal syntax)
+     *     Use the angle bracket tag syntax (the normal syntax), like {@code <#include ...>}
      *   <li>{@link Configuration#SQUARE_BRACKET_TAG_SYNTAX}:
-     *     use the square bracket syntax
+     *     Use the square bracket tag syntax, like {@code [#include ...]}. Note that this does <em>not</em> change
+     *     <code>${x}</code> to {@code [=...]}; that's <em>interpolation</em> syntax, so use
+     *     {@link #setInterpolationSyntax(int)} for that.
      * </ul>
      *
      * <p>In FreeMarker 2.3.x {@link Configuration#ANGLE_BRACKET_TAG_SYNTAX} is the
@@ -2413,9 +2438,14 @@
     }
 
     /**
-     * Determines the interpolation syntax (like <code>${x}</code> VS <code>[=x]</code>) of the template files. The
-     * {@code interpolationSyntax} parameter must be one of {@link Configuration#LEGACY_INTERPOLATION_SYNTAX},
+     * Determines the interpolation syntax (like <code>${x}</code> VS <code>[=x]</code>) of the template files. Don't
+     * confuse this with the tag syntax ({@link #setTagSyntax(int)}); they are independent.
+     * 
+     * <p>
+     * The {@code interpolationSyntax} parameter must be one of {@link Configuration#LEGACY_INTERPOLATION_SYNTAX},
      * {@link Configuration#DOLLAR_INTERPOLATION_SYNTAX}, and {@link Configuration#SQUARE_BRACKET_INTERPOLATION_SYNTAX}.
+     * Note that {@link Configuration#SQUARE_BRACKET_INTERPOLATION_SYNTAX} does <em>not</em> change {@code <#if x>} to
+     * {@code [#if x]}; that's <em>tag</em> syntax, so use {@link #setTagSyntax(int)} for that.
      * 
      * @see #setTagSyntax(int)
      * 
diff --git a/src/main/javacc/FTL.jj b/src/main/javacc/FTL.jj
index d1ab33d..0946661 100644
--- a/src/main/javacc/FTL.jj
+++ b/src/main/javacc/FTL.jj
Binary files differ
diff --git a/src/main/resources/freemarker/version.properties b/src/main/resources/freemarker/version.properties
index 1b862c0..24a3d29 100644
--- a/src/main/resources/freemarker/version.properties
+++ b/src/main/resources/freemarker/version.properties
@@ -26,7 +26,6 @@
 #   Qualifier :: = NightlyQualifier
 #                  |
 #                  ( ('pre'|'rc') twoDigitPositiveInteger ('-' NightlyQualifier)? )
-#                  '-incubating'?
 #   NightlyQualifier :: = 'nightly_@timestampInVersion@'
 #
 # This format is compatible both with Maven and JSR 277, and it must
@@ -57,12 +56,11 @@
 #   continue working without modification or recompilation.
 # - When the major version number is increased, major backward
 #   compatibility violations are allowed, but still should be avoided.
-# During Apache Incubation, "-incubating" is added to this string.
-version=2.3.28-nightly_@timestampInVersion@-incubating
+version=2.3.28
 # This exists as for Maven we use "-SNAPSHOT" for nightly releases,
-# and no _nightly_@timestampInVersion@. Also, "-incubating" is added
-# *before* "-SNAPSHOT". For final releases it's the same as "version".
-mavenVersion=2.3.28-incubating-SNAPSHOT
+# and no _nightly_@timestampInVersion@. For final releases it's the
+# same as "version".
+mavenVersion=2.3.28
 
 # Version string that conforms to OSGi
 # ------------------------------------
@@ -70,13 +68,12 @@
 # This is different from the plain version string:
 # - "." is used instead of a "-" before the qualifier.
 # - The stable releases must use "stable" qualifier.
-#   Examples:
+# - Examples:
 #   2.4.0.stable
 #   2.4.0.rc01
 #   2.4.0.pre01
 #   2.4.0.nightly_@timestampInVersion@
-# During Apache Incubation, "-incubating" is added to this string.
-versionForOSGi=2.3.28.nightly_@timestampInVersion@-incubating
+versionForOSGi=2.3.28.stable
 
 # Version string that conforms to legacy MF
 # -----------------------------------------
@@ -95,7 +92,7 @@
 # "97 denotes "nightly", 98 denotes "pre", 99 denotes "rc" build.
 # In general, for the nightly/preview/rc Y of version 2.X, the versionForMf is
 # 2.X-1.(99|98).Y. Note the X-1.
-versionForMf=2.3.27.97
+versionForMf=2.3.28
 
 # The date of the build.
 # This should be automatically filled by the building tool (Ant).
diff --git a/src/manual/en_US/apache-incubator.png b/src/manual/en_US/apache-incubator.png
deleted file mode 100644
index 7ab45fc..0000000
--- a/src/manual/en_US/apache-incubator.png
+++ /dev/null
Binary files differ
diff --git a/src/manual/en_US/book.xml b/src/manual/en_US/book.xml
index 3fcef11..f59d2eb 100644
--- a/src/manual/en_US/book.xml
+++ b/src/manual/en_US/book.xml
@@ -73,18 +73,6 @@
     <para>FreeMarker is <link
     xlink:href="http://www.fsf.org/philosophy/free-sw.html">Free</link>,
     released under the Apache License, Version 2.0.</para>
-
-    <para><emphasis role="bold">Disclaimer: </emphasis><emphasis>Apache
-    FreeMarker is an effort undergoing incubation at The Apache Software
-    Foundation (ASF), sponsored by the <link
-    xlink:href="http://incubator.apache.org">Apache Incubator</link>.
-    Incubation is required of all newly accepted projects until a further
-    review indicates that the infrastructure, communications, and decision
-    making process have stabilized in a manner consistent with other
-    successful ASF projects. While incubation status is not necessarily a
-    reflection of the completeness or stability of the code, it does indicate
-    that the project has yet to be fully endorsed by the
-    ASF.</emphasis></para>
   </preface>
 
   <part xml:id="dgui">
@@ -6260,8 +6248,7 @@
         configured to be like <literal>[=x]</literal> instead of
         <literal>${x}</literal>. Also, independently of that, the FreeMarker
         tag syntax can be configured to use <literal>[]</literal>, like in
-        <literal>[#if x]<replaceable>...</replaceable>[/#if]</literal>.
-        </para>
+        <literal>[#if x]<replaceable>...</replaceable>[/#if]</literal>.</para>
 
         <note>
           <para>While both the <quote>tag syntax</quote> and
@@ -9554,6 +9541,11 @@
         <section>
           <title>Overview</title>
 
+          <note>
+            <para>Custom formats (of the kind described here) exists since
+            FreeMarker 2.3.24.</para>
+          </note>
+
           <para>FreeMarker allows you to define your own number and
           date/time/datetime formats, and associate a name to them. This
           mechanism has several applications:</para>
@@ -20607,14 +20599,15 @@
                 application uses a custom
                 <literal>freemarker.cache.TemplateLoader</literal>
                 implementation, which incorrectly (against the API
-                documentation) throws an <literal>IOException</literal>
-                instead of returning <literal>null</literal> if a template is
-                not found. If it's so, the Java programmers need to fix that.
-                Another possibility is of course that it was indeed not
-                possible to tell if the template exists or not due to some
-                technical issues, in which case stopping with error is the
-                correct behavior. See the cause <literal>IOException</literal>
-                in the Java stack trace to figure out which case it is.</para>
+                documentation) throws an <literal>IOException</literal> in the
+                <literal>findTemplateSource</literal> method instead of
+                returning <literal>null</literal> if a template is not found.
+                If it's so, the Java programmers need to fix that. Another
+                possibility is of course that it was indeed not possible to
+                tell if the template exists or not due to some technical
+                issues, in which case stopping with error is the correct
+                behavior. See the cause <literal>IOException</literal> in the
+                Java stack trace to figure out which case it is.</para>
               </note>
             </listitem>
           </itemizedlist>
@@ -23894,7 +23887,8 @@
           often because your application uses a custom
           <literal>freemarker.cache.TemplateLoader</literal> implementation,
           which incorrectly (against the API documentation) throws an
-          <literal>IOException</literal> instead of returning
+          <literal>IOException</literal> in the
+          <literal>findTemplateSource</literal> method instead of returning
           <literal>null</literal> if a template is not found. If it's so, the
           Java programmers need to fix that. Another possibility is of course
           that it was indeed not possible to tell if the template exists or
@@ -27620,14 +27614,9 @@
       <title>Version history</title>
 
       <section xml:id="versions_2_3_28">
-        <title>2.3.28 (incubating at Apache)</title>
+        <title>2.3.28</title>
 
-        <para>Release date: [FIXME]</para>
-
-        <para><emphasis role="bold">This is a stable, final
-        release.</emphasis> The <quote>incubating</quote> suffix is required
-        by the Apache Software Foundation until the project becomes a fully
-        accepted (graduated) Apache project.</para>
+        <para>Release date: 2018-03-30 + release process</para>
 
         <section>
           <title>Changes on the FTL side</title>
@@ -27665,8 +27654,10 @@
             </listitem>
 
             <listitem>
-              <para>Added new built-ins: <literal>sequence?min</literal> and
-              <literal>sequence?max</literal> (<link
+              <para>Added new built-ins:
+              <literal><replaceable>sequence</replaceable>?min</literal> and
+              <literal><replaceable>sequence</replaceable>?max</literal>
+              (<link
               xlink:href="https://issues.apache.org/jira/browse/FREEMARKER-86">FREEMARKER-86</link>),
               which return the smallest and greatest item from a list of
               numbers or date/time/date-times. <link
@@ -27777,16 +27768,15 @@
 
             <listitem>
               <para>When specifying the <literal>output_format</literal>
-              configuration settings with
+              configuration setting with
               <literal>String</literal>-<literal>String</literal> key-value
               pairs (like with <literal>Configuration.setSetting(String,
               String)</literal> or in a <literal>.properties</literal> file),
-              it's now possible to specify the standard output formats by name
-              rather than by class name (like
-              <literal>output_format=HTML</literal>). (Custom formats still
-              has to be referred by class name, as FreeMarker can't discover
-              what their names are, since it's not aware of the custom
-              classes.)</para>
+              it's now possible to specify the standard output formats by
+              short name (like <literal>output_format=HTML</literal>) rather
+              than by class name. (Custom formats still has to be referred by
+              class name, as FreeMarker can't discover what their names are,
+              since it's not aware of the custom classes.)</para>
             </listitem>
 
             <listitem>
@@ -27794,7 +27784,7 @@
               <literal>Configuration.removeTemplateFromCache</literal>
               overload that has a <literal>Object
               customLookupCondition</literal> parameter. This is useful to
-              manually evacuate a template from the cache that was get via a
+              manually evacuate a template from the cache that was get with a
               non-<literal>null</literal> custom lookup condition.</para>
             </listitem>
 
@@ -27873,16 +27863,16 @@
               <para>The default arithmetic engine
               (<literal>ArithmeticEngine.BIGDECIMAL_ENGINE</literal>) can now
               compare infinite (both positive and negative) to any other
-              standard type. Earlier, since <literal>BigDecimal</literal>
-              can't represent infinite, it was only working in certain special
-              cases. Also did some performance optimizations to slightly
-              decrease the impact and number of conversions to
-              <literal>BigDecimal</literal>.</para>
+              standard numerical type. Earlier, since
+              <literal>BigDecimal</literal> can't represent infinite, it was
+              only working in certain special cases. Also there were some
+              performance optimizations to slightly decrease the impact and
+              number of conversions to <literal>BigDecimal</literal>.</para>
             </listitem>
 
             <listitem>
               <para>Avoided possible performance bottleneck when executing
-              templates on many threads, caused be that
+              templates on many threads, caused by that
               <literal>java.beans.PropertyDescriptor.getReadMethod()</literal>
               is synchronized (<link
               xlink:href="https://issues.apache.org/jira/browse/FREEMARKER-80">FREEMARKER-80</link>).</para>
@@ -27917,28 +27907,29 @@
             <listitem>
               <para>When the <link
               linkend="pgui_config_incompatible_improvements_how_to_set"><literal>incompatible_improvements</literal>
-              setting</link> is set to 2.3.28 (or greater), fixed legacy
+              setting</link> is set to 2.3.28 (or greater): Fixed legacy
               parser glitch where a tag can be closed with an illegal
               <literal>]</literal> (when it's not part of an expression)
               despite that the tag syntax is set to angle brackets. For
               example <literal>&lt;#if x]</literal> worked just like
-              <literal>&lt;#if x&gt;</literal>. Note that it doesn't affect
-              the legal usage of <literal>]</literal>, like <literal>&lt;#if
-              x[0]&gt;</literal> works correctly without this fix as
-              well.</para>
+              <literal>&lt;#if x&gt;</literal>. Note that this legacy glitch
+              didn't affect the legal usage of <literal>]</literal>, like
+              <literal>&lt;#if x[0]&gt;</literal> has always worked
+              correctly.</para>
             </listitem>
 
             <listitem>
               <para>Fixed parser bug that disallowed using
-              <literal>&gt;</literal> at the top-level inside an interpolation
-              (<literal>${...}</literal>). It had the same reason why
-              <literal>&lt;#if x &gt; y&gt;</literal> doesn't work as naively
-              expected, but there's no real ambiguity in <literal>${x &gt;
-              y}</literal>, so now it's allowed. Note that <literal>${(x &gt;
-              y)?c}</literal> and <literal>${(x &gt; y)?string('y',
-              'n')}</literal>, which are how booleans are commonly printed,
-              have always worked, as the <literal>&gt;</literal> operation is
-              not on the top-level inside the interpolation.</para>
+              <literal>&gt;</literal> as the top-level expression inside an
+              interpolation (<literal>${...}</literal>). It had the same
+              reason why <literal>&lt;#if x &gt; y&gt;</literal> doesn't work
+              as naively expected, but there's no real ambiguity in
+              <literal>${x &gt; y}</literal>, so now it's allowed. Note that
+              <literal>${(x &gt; y)?c}</literal> and <literal>${(x &gt;
+              y)?string('y', 'n')}</literal>, which are how booleans are
+              commonly printed, have always worked, as the
+              <literal>&gt;</literal> operation is not on the top-level inside
+              the interpolation.</para>
             </listitem>
 
             <listitem>
@@ -27949,6 +27940,19 @@
             </listitem>
           </itemizedlist>
         </section>
+
+        <section>
+          <title>Other changes</title>
+
+          <itemizedlist>
+            <listitem>
+              <para>FreeMarker has graduated from the Apache Incubator (as of
+              2018-03-21), and now is a normal top-level project at Apache.
+              Therefore, the version number doesn't contain
+              <quote>-incubating</quote> anymore.</para>
+            </listitem>
+          </itemizedlist>
+        </section>
       </section>
 
       <section xml:id="versions_2_3_27">
@@ -28784,18 +28788,6 @@
           The license is still Apache License Version 2.0, just like earlier,
           but the owner is different. The official full product name has
           changed to Apache FreeMarker.</para>
-
-          <para><emphasis role="bold">Disclaimer:</emphasis><emphasis> Apache
-          FreeMarker is an effort undergoing incubation at The Apache Software
-          Foundation (ASF), sponsored by the <link
-          xlink:href="http://incubator.apache.org">Apache Incubator</link>.
-          Incubation is required of all newly accepted projects until a
-          further review indicates that the infrastructure, communications,
-          and decision making process have stabilized in a manner consistent
-          with other successful ASF projects. While incubation status is not
-          necessarily a reflection of the completeness or stability of the
-          code, it does indicate that the project has yet to be fully endorsed
-          by the ASF.</emphasis></para>
         </section>
 
         <section>
diff --git a/src/manual/en_US/docgen.cjson b/src/manual/en_US/docgen.cjson
index b2b977e..4652dae 100644
--- a/src/manual/en_US/docgen.cjson
+++ b/src/manual/en_US/docgen.cjson
@@ -131,7 +131,3 @@
   "Twitter": { class: "twitter", href: "olink:twitter" }
   "Stack Overflow": { class: "stack-overflow", href: "olink:newStackOverflowQuestion" }
 }
-
-sideTOCLogos: [
-  { src: "apache-incubator.png", alt: "Apache Incubator", href: "olink:asfIncubator" }
-]
diff --git a/src/manual/zh_CN/apache-incubator.png b/src/manual/zh_CN/apache-incubator.png
deleted file mode 100644
index 7ab45fc..0000000
--- a/src/manual/zh_CN/apache-incubator.png
+++ /dev/null
Binary files differ
diff --git a/src/manual/zh_CN/docgen.cjson b/src/manual/zh_CN/docgen.cjson
index 59df72a..88addcf 100644
--- a/src/manual/zh_CN/docgen.cjson
+++ b/src/manual/zh_CN/docgen.cjson
@@ -129,7 +129,3 @@
   "Twitter": { class: "twitter", href: "olink:twitter" }
   "Stack Overflow": { class: "stack-overflow", href: "olink:newStackOverflowQuestion" }
 }
-
-sideTOCLogos: [
-  { src: "apache-incubator.png", alt: "Apache Incubator", href: "olink:asfIncubator" }
-]
