First draft of Jakarta EE 11 / Tomcat 11 preview
diff --git a/index.html b/index.html
index 4cc78a6..05e4dd2 100644
--- a/index.html
+++ b/index.html
@@ -33,6 +33,15 @@
     <div class="reveal">
       <div class="slides">
         <section>
+          <h1>Tomcat presentations</h1>
+        </section>
+        <section>
+          <p>The following presentations are currently available</p>
+          <ul>
+            <li><a href="presentations/tomcat-11-preview.html">Tomcat 11 Preview</a></li>
+          </ul>
+        </section>
+        <section>
           <h1>Tomcat training</h1>
         </section>
         <section>
diff --git a/modules/intro-markt.html b/modules/intro-markt.html
new file mode 100644
index 0000000..7e2de62
--- /dev/null
+++ b/modules/intro-markt.html
@@ -0,0 +1,30 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  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.
+-->
+<section>
+  <h3>Introduction</h3>
+  <p>Mark Thomas</p>
+  <p>markt@apache.org</p>
+  <p>Hosted at GitHub in the <a href="https://github.com/apache/tomcat-training">tomcat-training</a> repository</p>
+  <p>Pull requests welcome</p>
+</section>
+<section>
+  <p>Tomcat since 2003<br/>Committer, PMC member</p>
+  <p>Commons - Daemon, Pool, DBCP, BCEL<br>Committer, PMC member</p>
+  <p>ASF member, ASF security team, ASF infrastructure team,<br/>Director 2016-19, VP Brand Management since 2018</p>
+  <p>Java EE Expert Groups for Servlet, WebSocket, Expression Language</p>
+  <p>Jakarta Servlet, Pages, WebSocket and Expression Language<br/>Committer</p>
+</section>
diff --git a/modules/tomcat-11-preview.html b/modules/tomcat-11-preview.html
new file mode 100644
index 0000000..d6ed0a2
--- /dev/null
+++ b/modules/tomcat-11-preview.html
@@ -0,0 +1,167 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  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.
+-->
+<section>
+  <h3>Agenda</h3>
+  <p>Jakarta EE 11</p>
+  <p>Jakarta Servlet</p>
+  <p>Jakarta Pages</p>
+  <p>Jakarta WebSocket</p>
+  <p>Jakarta Expression Language</p>
+  <p>Jakarta Authentication</p>
+  <p>Jakarta Annotations</p>
+  <p>Tomcat specific changes</p>
+</section>
+<section>
+  <h3>Jakarta EE 11</h3>
+  <p>42 individual specifications - Tomcat implements 6</p>
+  <p>Platform specification - Tomcat implements relevant sections</p>
+  <p>Minimum of Java 21</p>
+  <p>No SecurityManager support</p>
+  <p>Testing and Compatibility Kits (TCKs) are being refactored</p>
+  <p>First milestones due end of November</p>
+  <p>Final release June/July 2024</p>
+</section>
+<section>
+  <h3>Jakarta Servlet - 6.1</h3>
+  <p>No major changes</p>
+  <p>Clarification</p>
+  <p>Clean-up</p>
+  <p>Various improvements</p>
+</section>
+<section>
+  <h3>Jakarta Servlet - Headers</h3>
+  <p>Calls using null for a header name will be NO-OPs</p>
+  <p>Using null when setting a header value will remove all current values</p>
+  <p>Calls using null when adding a header value will be NO-OPs</p>
+  <p>The empty string is a valid value for a header</p>
+  <p>Any method that sets a header is a NO-OP once the response is committed</p>
+  <p>Align getDateHeader() and getIntHeader() with getHeader() for multiple values</p>
+</section>
+<section>
+  <h3>Jakarta Servlet - Async</h3>
+  <p>dispatch() and complete() close non-blocking output streams</p>
+  <p>write(), print(), println() and flush() are "write operations"</p>
+</section>
+<section>
+  <h3>Jakarta Servlet - Redirects</h3>
+  <p>Status code can be specified</p>
+  <p>Response body can be specified</p>
+  <p>Relative redirects are allowed</p>
+</section>
+<section>
+  <h3>Jakarta Servlet - Security</h3>
+  <p>Clarify that all ServletContext methods that accept a path bypass security constraints</p>
+  <p>Remove sensitive HTTP headers from TRACE responses</p>
+</section>
+<section>
+  <h3>Jakarta Servlet - Parameters</h3>
+  <p>Invalid parameters will always trigger an Exception</p>
+</section>
+<section>
+  <h3>Jakarta Servlet - Miscellaneous I</h3>
+  <p>Update HTTP RFC references to latest versions</p>
+  <p>HTTPS support is now mandatory</p>
+  <p>New constants for status codes 308, 421, 422 and 426</p>
+  <p>New request attribute jakarta.servlet.error.query_string</p>
+  <p>Add ByteBuffer support to ServletInputStream and ServletOutputStream</p>
+  <p>Charset support for setCharacterEncoding()</p>
+</section>
+<section>
+  <h3>Jakarta Servlet - Miscellaneous II</h3>
+  <p>Context root mapping occurs with or without the trailing '/'</p>
+  <p>Clarify when leading '/' is ommitted in HttpServletMapping.getMatchValue()</p>
+  <p>Clarify multi-part config sizes are in bytes</p>
+  <p>Clarify expected behaviour for CONNECT requests</p>
+  <p>Deprecate and make optional support for HTTP/2 server push</p>
+</section>
+<section>
+  <h3>Jakarta Servlet - In Progress</h3>
+  <p>HttpSession access for WebSocket</p>
+  <p>Require error dispatches to use GET</p>
+  <p>Clarify behaviour of various methods for include / forward</p>
+  <p>Support for 1xx responses - particularly early hints</p>
+</section>
+<section>
+  <h3>Jakarta Pages - 4.0</h3>
+  <p>Depreacted classes and methods have been removed</p>
+  <p>Updated ErrorData to support the new request attribute jakarta.servlet.error.query_string
+</section>
+<section>
+  <h3>Jakarta WebSocket - 2.2</h3>
+  <p>Clarifed the responsibility for sending Ping messages</p>
+  <p>Added getSession() method to SendResult</p>
+</section>
+<section>
+  <h3>Expression Language - 6.0</h3>
+  <p>Remove all deprecated classes and methods</p>
+  <p>Dependency on JavaBeans API is now optional</p>
+  <p>Added support for java.util.Optional via OptionalELResolver</p>
+</section>
+<section>
+  <h3>Annotations - 3.0?</h3>
+  <p>ManagedBean is deprecated</p>
+</section>
+<section>
+  <h3>Jakarta Authentication - 3.1?</h3>
+  <p>TBD</p>
+</section>
+<section>
+  <h3>Tomcat 11</h3>
+  <p>No major changes</p>
+  <p>Specification / RFC updates</p>
+  <p>Generally stricter with invalid input</p>
+  <p>Enhancements and improvements</p>
+  <p>32-bit Windows no longer supported (no JRE)</p>
+</section>
+<section>
+  <h3>Tomcat 11 - Security I</h3>
+  <p>BASIC authentication uses UTF-8 by default</p>
+  <p>Update DIGEST auth to RFC 7616</p>
+  <p>Documentation web application is only accessible from localhost by default</p>
+  <p>Examples web application is only accessible from localhost by default</p>
+</section>
+<section>
+  <h3>Tomcat 11 - Security II</h3>
+  <p>rejectIllegalHeader hard-coded to true</p>
+  <p>allowHostHeaderMismatch hard-coded to false</p>
+  <p>Align AJP connector handling of invalid HTTP headers with HTTP connector</p>
+  <p>Added RateLimitFilter</p>
+</section>
+<section>
+  <h3>HTTP/2</h3>
+  <p>RFC 9218 - HTTP/2 priority frame support</p>
+  <p>Support for server push has been removed</p>
+</section>
+<section>
+  <h3>Virtual threads</h3>
+  <p>Virtual thread support - useVirtualThreads on the Connector</p>
+  <p>Some internal refactoring</p>
+</section>
+<section>
+  <h3>TLS</h3>
+  <p>Log TLS cert info on startup</p>
+  <p>Dedicated loggers for detailed TLS confguration info</p>
+  <p>Added TLSCertificateReloadListener</p>
+</section>
+<section>
+  <h3>Miscellaneaous</h3>
+  <p>Expose the utility executor to web applications</p>
+  <p>Tomcat no longer sets java.protocol.handler.pkgs when starting</p>
+  <p>Added PropertiesRoleMappingListener</p>
+  <p>Added ContextNamingInfoListener</p>
+  <p>Add support for loading configuration resources from the web application</p>
+</section>
diff --git a/modules/wrap-up-presentation.html b/modules/wrap-up-presentation.html
new file mode 100644
index 0000000..50e70d2
--- /dev/null
+++ b/modules/wrap-up-presentation.html
@@ -0,0 +1,30 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  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.
+-->
+<section>
+  <h3>Questions?</h3>
+</section>
+<section>
+  <h3>Tomcat Resources</h3>
+  <p>Web site: <a href="https://tomcat.apache.org">https://tomcat.apache.org</a></p>
+  <p>Mailing lists: <a href="https://tomcat.apache.org/lists.html">https://tomcat.apache.org/lists.html</a></p>
+  <p>Source code: <a href="https://github.com/apache/tomcat">https://github.com/apache/tomcat</a></p>
+  <p>Issue tracker: <a href="https://bz.apache.org/bugzilla">https://bz.apache.org/bugzilla</a>
+  <p>Stack overflow</p>
+</section>
+<section>
+  <h3>Thank you</h3>
+</section>
diff --git a/presentations/tomcat-11-preview.html b/presentations/tomcat-11-preview.html
new file mode 100644
index 0000000..970f8c4
--- /dev/null
+++ b/presentations/tomcat-11-preview.html
@@ -0,0 +1,88 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  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.
+-->
+<!doctype html>
+<html>
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+
+    <title>Tomcat 11 Preview</title>
+
+    <link rel="stylesheet" href="../dist/reset.css">
+    <link rel="stylesheet" href="../dist/reveal.css">
+    <link rel="stylesheet" href="../dist/theme/white.css">
+
+    <!-- Theme used for syntax highlighted code -->
+    <link rel="stylesheet" href="../plugin/highlight/monokai.css">
+
+    <!-- Override default styles -->
+    <style>
+      <!-- Transparent background image on all slides -->
+      body {
+        position: relative;
+        z-index: 1;
+      }
+      body::before {
+        content: "";
+        position: absolute;
+        top: 0; 
+        left: 0;
+        width: 100%; 
+        height: 100%;  
+        opacity: .15; 
+        z-index: -1;
+        background: url( '../images/tomcat.svg' );
+        background-position: center;
+        background-size: 100%;
+        background-repeat: no-repeat;
+      }
+    </style>
+  </head>
+  <body>
+    <div class="reveal">
+      <div class="slides">
+        <section>
+          <h1>Tomcat 11 Preview</h1>
+        </section>
+        <section data-external-replace="../modules/intro-markt.html"> </section>
+        <section data-external-replace="../modules/tomcat-11-preview.html"> </section>
+        <section data-external-replace="../modules/wrap-up-presentation.html"> </section>
+      </div>
+    </div>
+
+    <script src="../dist/reveal.js"></script>
+    <script src="../plugin/notes/notes.js"></script>
+    <script src="../plugin/markdown/markdown.js"></script>
+    <script src="../plugin/highlight/highlight.js"></script>
+    <script>
+      // More info about initialization & config:
+      // - https://revealjs.com/initialization/
+      // - https://revealjs.com/config/
+      Reveal.initialize({
+        hash: true,
+
+        // Learn about plugins: https://revealjs.com/plugins/
+        plugins: [ RevealMarkdown, RevealHighlight, RevealNotes ],
+        
+        width: 1200,
+        dependencies: [
+          // reveal_external to allow composition from multiple files
+          { src: '../plugin/external/external.js', condition: function() { return !!document.querySelector( '[data-external],[data-external-replace]' ); } }
+        ]      });
+    </script>
+  </body>
+</html>