Infra 3829 - Create the August Newsletter Change-Id: I8ac4fd49f692119085537d9c90e47d2a30da9172 Signed-off-by: Eric Poirier <eric.poirier@eclipse-foundation.org>
diff --git a/eclipse_newsletter/2020/august/1.php b/eclipse_newsletter/2020/august/1.php new file mode 100644 index 0000000..f8d204e --- /dev/null +++ b/eclipse_newsletter/2020/august/1.php
@@ -0,0 +1,32 @@ +<?php +/** + * Copyright (c) 2020 Eclipse Foundation. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * Contributors: + * Eric Poirier (Eclipse Foundation) - Initial implementation + * + * SPDX-License-Identifier: EPL-2.0 + */ + + require_once ($_SERVER ['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php"); + $App = new App (); + require_once ('_variables.php'); + + // Begin: page-specific settings. Change these. + $pageTitle = "What You Need to Know About the Jakarta EE 9 General Availability Release"; + $pageKeywords = "eclipse, newsletter, Jakarta EE, Jakarta EE 9 General Availability Release"; + $pageAuthor = "Steve Millidge"; + $pageDescription = "Since the Jakarta EE 9 milestone release in June, we’ve been making good progress toward a final release in Fall 2020"; + + // Uncomment and set $original_url if you know the original url of this article. + //$original_url = "http://eclipse.org/community/eclipse_newsletter/"; + //$og = (isset ( $original_url )) ? '<li><a href="' . $original_url . '" target="_blank">Original Article</a></li>' : ''; + + // Place your html content in a file called content/en_article1.php + $script_name = $App->getScriptName(); + + require_once ($_SERVER ['DOCUMENT_ROOT'] . "/community/eclipse_newsletter/_includes/_generate_page_article.php"); \ No newline at end of file
diff --git a/eclipse_newsletter/2020/august/2.php b/eclipse_newsletter/2020/august/2.php new file mode 100644 index 0000000..e7bdecc --- /dev/null +++ b/eclipse_newsletter/2020/august/2.php
@@ -0,0 +1,32 @@ +<?php +/** + * Copyright (c) 2020 Eclipse Foundation. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * Contributors: + * Eric Poirier (Eclipse Foundation) - Initial implementation + * + * SPDX-License-Identifier: EPL-2.0 + */ + + require_once ($_SERVER ['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php"); + $App = new App (); + require_once ('_variables.php'); + + // Begin: page-specific settings. Change these. + $pageTitle = "Secure JAX-RS APIs With Eclipse MicroProfile JSON Web Token"; + $pageKeywords = "eclipse, newsletter, Eclipse MicroProfile, Secure JAX-RS"; + $pageAuthor = "Jean-François James"; + $pageDescription = "In this article, I’ll describe a practical way to secure your Jakarta RESTful Web Services (JAX-RS) APIs with Eclipse MicroProfile JavaScript Object Notation (JSON) Web Token (JWT)"; + + // Uncomment and set $original_url if you know the original url of this article. + //$original_url = "http://eclipse.org/community/eclipse_newsletter/"; + //$og = (isset ( $original_url )) ? '<li><a href="' . $original_url . '" target="_blank">Original Article</a></li>' : ''; + + // Place your html content in a file called content/en_article1.php + $script_name = $App->getScriptName(); + + require_once ($_SERVER ['DOCUMENT_ROOT'] . "/community/eclipse_newsletter/_includes/_generate_page_article.php"); \ No newline at end of file
diff --git a/eclipse_newsletter/2020/august/3.php b/eclipse_newsletter/2020/august/3.php new file mode 100644 index 0000000..436b1dd --- /dev/null +++ b/eclipse_newsletter/2020/august/3.php
@@ -0,0 +1,32 @@ +<?php +/** + * Copyright (c) 2020 Eclipse Foundation. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * Contributors: + * Eric Poirier (Eclipse Foundation) - Initial implementation + * + * SPDX-License-Identifier: EPL-2.0 + */ + + require_once ($_SERVER ['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php"); + $App = new App (); + require_once ('_variables.php'); + + // Begin: page-specific settings. Change these. + $pageTitle = "Opportunities to Improve the Jakarta EE Platform TCK"; + $pageKeywords = "eclipse, newsletter, robmosys, robotics"; + $pageAuthor = "Scott Marlow"; + $pageDescription = "The Eclipse Jakarta EE Technology Compatibility Kit (TCK) team needs your help"; + + // Uncomment and set $original_url if you know the original url of this article. + //$original_url = "http://eclipse.org/community/eclipse_newsletter/"; + //$og = (isset ( $original_url )) ? '<li><a href="' . $original_url . '" target="_blank">Original Article</a></li>' : ''; + + // Place your html content in a file called content/en_article1.php + $script_name = $App->getScriptName(); + + require_once ($_SERVER ['DOCUMENT_ROOT'] . "/community/eclipse_newsletter/_includes/_generate_page_article.php"); \ No newline at end of file
diff --git a/eclipse_newsletter/2020/august/4.php b/eclipse_newsletter/2020/august/4.php new file mode 100644 index 0000000..0d02e87 --- /dev/null +++ b/eclipse_newsletter/2020/august/4.php
@@ -0,0 +1,32 @@ +<?php +/** + * Copyright (c) 2020 Eclipse Foundation. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * Contributors: + * Eric Poirier (Eclipse Foundation) - Initial implementation + * + * SPDX-License-Identifier: EPL-2.0 + */ + + require_once ($_SERVER ['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php"); + $App = new App (); + require_once ('_variables.php'); + + // Begin: page-specific settings. Change these. + $pageTitle = "Newsletter news"; + $pageKeywords = "eclipse, newsletter, automation"; + $pageAuthor = "Eclipse Foundation"; + $pageDescription = "Newsletter News"; + + // Uncomment and set $original_url if you know the original url of this article. + //$original_url = "http://eclipse.org/community/eclipse_newsletter/"; + //$og = (isset ( $original_url )) ? '<li><a href="' . $original_url . '" target="_blank">Original Article</a></li>' : ''; + + // Place your html content in a file called content/en_article1.php + $script_name = $App->getScriptName(); + + require_once ($_SERVER ['DOCUMENT_ROOT'] . "/community/eclipse_newsletter/_includes/_generate_page_article.php"); \ No newline at end of file
diff --git a/eclipse_newsletter/2020/august/5.php b/eclipse_newsletter/2020/august/5.php new file mode 100644 index 0000000..6cfa212 --- /dev/null +++ b/eclipse_newsletter/2020/august/5.php
@@ -0,0 +1,32 @@ +<?php +/** + * Copyright (c) 2020 Eclipse Foundation. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * Contributors: + * Eric Poirier (Eclipse Foundation) - Initial implementation + * + * SPDX-License-Identifier: EPL-2.0 + */ + + require_once ($_SERVER ['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php"); + $App = new App (); + require_once ('_variables.php'); + + // Begin: page-specific settings. Change these. + $pageTitle = "Committer Profile: Lukas Jungmann"; + $pageKeywords = "eclipse, newsletter, Committer Profile, Lukas Jungmann"; + $pageAuthor = "Eclipse Foundation"; + $pageDescription = "Committer Profile: Lukas Jungmann"; + + // Uncomment and set $original_url if you know the original url of this article. + //$original_url = "http://eclipse.org/community/eclipse_newsletter/"; + //$og = (isset ( $original_url )) ? '<li><a href="' . $original_url . '" target="_blank">Original Article</a></li>' : ''; + + // Place your html content in a file called content/en_article1.php + $script_name = $App->getScriptName(); + + require_once ($_SERVER ['DOCUMENT_ROOT'] . "/community/eclipse_newsletter/_includes/_generate_page_article.php"); \ No newline at end of file
diff --git a/eclipse_newsletter/2020/august/_variables.php b/eclipse_newsletter/2020/august/_variables.php new file mode 100644 index 0000000..deb4c1a --- /dev/null +++ b/eclipse_newsletter/2020/august/_variables.php
@@ -0,0 +1,29 @@ +<?php +/** + * Copyright (c) 2020 Eclipse Foundation. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * Contributors: + * Eric Poirier (Eclipse Foundation) - Initial implementation + * + * SPDX-License-Identifier: EPL-2.0 + */ + +$pageTitle = "Cloud Native for Java Projects"; +$pageKeywords = ""; +$pageAuthor = "Christopher Guindon"; +$pageDescription = ""; + +// Make it TRUE if you want the sponsor to be displayed +$displayNewsletterSponsor = FALSE; + +// Sponsors variables for this month's articles +$sponsorName = ""; +$sponsorLink = ""; +$sponsorImage = ""; + + // Set the breadcrumb title for the parent of sub pages +$breadcrumbParentTitle = $pageTitle; \ No newline at end of file
diff --git a/eclipse_newsletter/2020/august/content/en_1.php b/eclipse_newsletter/2020/august/content/en_1.php new file mode 100644 index 0000000..d3c2109 --- /dev/null +++ b/eclipse_newsletter/2020/august/content/en_1.php
@@ -0,0 +1,113 @@ +<?php +/** + * Copyright (c) 2020 Eclipse Foundation. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * Contributors: + * Martin Lowe (Eclipse Foundation) - Initial implementation + * + * SPDX-License-Identifier: EPL-2.0 + */ +// This file must be included +if (basename(__FILE__) == basename($_SERVER['PHP_SELF'])) { + exit(); +} +?> +<h1 class="article-title"><?php echo $pageTitle; ?></h1> +<p> + Since the <a href="https://jakarta.ee/specifications/platform/9/">Jakarta EE 9 milestone release</a> + in June, we’ve been making good progress toward a final release in Fall 2020. Here’s a + brief summary of our most recent efforts, our progress, and key opportunities to get involved. +</p> +<h2>There Are Still Opportunities to Help</h2> +<p> + We’re continuing to update, review, and test the <a href="https://jakarta.ee/specifications/">Jakarta + EE specifications</a> so they can be sent to the <a + href="https://jakarta.ee/committees/specification/operations/" + >Jakarta EE Specification Committee</a> for approval. It’s going well, but the process is + complicated because we need to update the Jakarta EE specifications in “waves” that + take their dependencies into account. +</p> +<p>For example, the specifications in wave zero are standalone specifications with no dependencies, + so they can be updated at any time. But, the specifications in wave two build on those in wave + one, so they can’t be updated until wave one is complete. And so, it goes until all of the + waves of specifications are approved. At that point, we need to ensure Eclipse GlassFish + successfully implements all of the specifications so it can become the compatible implementation + that’s required for the release.</p> +<p>We’re seeing successful test passes across large numbers of the required documents, so + that’s good news. And, I’m happy to tell you that GlassFish is about 99 percent of the + way to passing the full platform test suite. However, with so many moving parts, we could + definitely use more help reviewing and testing specifications to ensure they’re ready to go + to the Specification Committee for approval.</p> +<p>Please, step in and help if you can. It’s a great opportunity to demonstrate what can be + achieved by a community that’s dedicated to true open source collaboration.</p> +<h2>We’ve Switched Our Java Release Priorities</h2> +<p>In the original Jakarta EE 9 Release Plan, the priority was to make Java 11 support mandatory and + Java 8 support optional. The goal was to drive implementation and acceptance of Java 11 because + most vendors ship Java 11 versions of Jakarta EE 8. However, we’ve switched those + priorities.</p> +<p>In the Jakarta EE 9 release, Java 8 support is mandatory and Java 11 support is optional. We made + this decision for two reasons:</p> +<ul> + <li>To stay as close as possible to the target release date in Fall 2020 and reduce the risk of + issues related to mandatory Java 11 support.</li> + <li>To make the namespace change the only difference between Jakarta EE 8 and Jakarta EE 9 and + increase the consistency between the two releases.</li> +</ul> +<h2>Software Providers Are Implementing the New Namespace</h2> +<p> + A number of software providers have already implemented the Jakarta.* namespace, and others have + planned to implement the change. Here’s a snapshot of the current implementation roadmap + from our<a href="https://jakarta.ee/resources/JakartaEE-Datasheet-July172020_final.pdf"> </a><a + href="https://jakarta.ee/resources/JakartaEE-Datasheet-July172020_final.pdf" + >Tools Vendor Datasheet</a> for Jakarta EE 9. +</p> +<img src="images/1_1.png" alt="Software Providers Are Implementing the New Namespace"> +<h2>We Need Your Input for Future Releases</h2> +<p>The Jakarta EE 9 release is the foundation for the future. Once it’s out, you can expect to + see rapid platform innovation and Jakarta EE releases with new and exciting features and + functionality. The next release will be Jakarta EE 9.1, which will make Java 11 support mandatory + and Java 8 support optional.</p> +<p>To move beyond Jakarta EE 9.1, we need the community’s input and ideas about how Jakarta EE + should evolve. The Jakarta EE community is a very open and self-organizing group. Everyone is + welcome and encouraged to participate and collaborate.</p> +<p>If you have ideas about how we should push forward with Jakarta EE, share them by:</p> +<ul> + <li>Subscribing to<a href="https://jakarta.ee/connect/mailing-lists/"><span style="color: #1155cc"> + </span></a><a href="https://jakarta.ee/connect/mailing-lists/"><span style="color: #1155cc"><u>Jakarta + EE project mailing lists</u></span></a> and getting involved in Jakarta EE 10 discussions. + </li> + <li>Raising enhancement requests on the GitHub repository for Jakarta EE projects. You can find + the complete list of projects<a href="https://projects.eclipse.org/projects/ee4j"><span + style="color: #1155cc" + > </span></a><a href="https://projects.eclipse.org/projects/ee4j"><span style="color: #1155cc"><u>here</u></span></a>. + </li> +</ul> +<div class="margin-bottom-20"> + <?php print $Theme->getShareButtonsHTML(); ?> +</div> +<div class="bottomitem"> + <h3>About the Author</h3> + <div class="row"> + <div class="col-sm-24"> + <div class="row margin-bottom-20"> + <div class="col-sm-8"> + <img class="img img-responsive" alt="<?php print $pageAuthor; ?>" src="images/steve.jpg" /> + </div> + <div class="col-sm-16"> + <p class="author-name"><?php print $pageAuthor; ?></p> + <p class="author-bio">Steve Millidge is the founder and CEO of <a href="https://www.payara.fish/">Payara Services</a>, + creators of <a href="https://www.payara.fish/products/payara-server/">Payara + Server Enterprise</a> and <a href="https://www.payara.fish/products/payara-micro/">Payara + Micro Enterprise</a>. He also founded <a + href="https://www.payara.fish/enterprise/consultancy/" + >Payara Accelerator</a>, which provides comprehensive + open source consulting services to Payara Services customers.</p> + </div> + </div> + </div> + </div> +</div> \ No newline at end of file
diff --git a/eclipse_newsletter/2020/august/content/en_2.php b/eclipse_newsletter/2020/august/content/en_2.php new file mode 100644 index 0000000..4c7e82c --- /dev/null +++ b/eclipse_newsletter/2020/august/content/en_2.php
@@ -0,0 +1,220 @@ +<?php +/** + * Copyright (c) 2020 Eclipse Foundation. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * Contributors: + * Martin Lowe (Eclipse Foundation) - Initial implementation + * + * SPDX-License-Identifier: EPL-2.0 + */ +// This file must be included +if (basename(__FILE__) == basename($_SERVER['PHP_SELF'])) { + exit(); +} +?> +<h1 class="article-title"><?php echo $pageTitle; ?></h1> +<p>In this article, I’ll describe a practical way to secure your Jakarta RESTful Web Services + (JAX-RS) APIs with Eclipse MicroProfile JavaScript Object Notation (JSON) Web Token (JWT). The + description here is based on a project I created in GitHub, which is linked at the end of the + article.</p> +<h2>Technical Context and Project Structure</h2> +<p>The project uses the following technologies:</p> +<ul> + <li>OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.7+10)</li> + <li>MicroProfile 3.3</li> + <li>GraalVM 19.3.1 (for Quarkus native)</li> + <li>Wildfly 20.0.0.Final</li> + <li>Quarkus 1.5.0.Final</li> + <li>OpenLiberty 20.0.0.7</li> + <li>JWTenizr 0.0.4-SNAPSHOT</li> +</ul> +<p>The project is comprised of three independent modules, each of which is dedicated to a runtime: + Quarkus, Wildfly, or Liberty.</p> +<p>To keep it simple and ensure the code and configuration can be flexibly adapted, there is + deliberately nothing in common between these modules. As the saying goes, the devil is in the + details. Even when using a standard API such as MicroProfile JWT, there are often subtle + differences when it comes to configuration, coding, testing, and dependencies. However, I’ve + tried to keep the three modules as similar as possible.</p> +<p>Each module is comprised of a JAX-RS resource class, named GreetingResource, that exposes a + (very) simple REST API. The API has four methods, each of which returns a string value:</p> +<ul> + <li>hello: permitted to everybody</li> + <li>securedHello: restricted to users with the duke role</li> + <li>forbidden: restricted to users with the root role</li> + <li>getMyClaim: return the value of a custom claim</li> +</ul> +<p>The API is documented using OpenAPI and exposed with swagger-ui.</p> +<h2>A Closer Look at MicroProfile JWT</h2> +<p>The MicroProfile JWT programming model is fairly straightforward. It’s based on annotations + (@DenyAll, @PermitAll, @RolesAllowed) and uses Contexts and Dependency Injection (CDI) to inject + data coming from the token. It’s worth mentioning that JAX-RS resource classes must be + @RequestScoped, rather than @ApplicationScoped, to allow that injection for each request.</p> +<p>A test class named GreetingResourceTest, which is based on RestAssured, acts as a REST client to + enable testing of the different scenarios. It uses Arquillian for WildlFly and Open Liberty so + there’s no need for Arquillian with Quarkus.</p> +<p>MicroProfile JWT allows you to secure JAX-RS APIs in a scalable and stateless way, using a token + for each HTTP request. Each token is self-contained: It includes authorization and authentication + data as well as a signature to check its integrity and authenticity.</p> +<p>There are two key things to remember:</p> +<ul> + <li>A token is signed by an issuer using its private key.</li> + <li>The signature can be checked by third parties using the issuer’s public key.</li> +</ul> +<h2>Anatomy of a MicroProfile JWT Token</h2> +<p>A MicroProfile JWT token is comprised of three parts: + <header>.<body>.<signature></p> +<p>The body is composed of claims. A claim is a <key,value> pair. Some claims are standard, + but custom claims can be defined to transport additional data.</p> +<p>MicroProfile JWT introduces two specific claims:</p> +<ul> + <li><strong>upn</strong> (User Principal Name): Uniquely identifies the subject, or upn, of the + token. On the server side, this information can be retrieved as the name property of the + Principal and the JsonWebToken.</li> + <li><strong>groups</strong>: The subject’s group memberships that will be mapped to roles on + the server side. Typically, secured methods in JAX-RS class resources are annotated with + @RolesAllowed.</li> +</ul> +<h2>Using JWTenizr</h2> +<p>JWTenizr is an open source library created by Adam Bien. It generates a JWT token and a + MicroProfile configuration based on two input files:</p> +<ul> + <li>A configuration file, named <strong>jwtenizr-config.json</strong>, that defines the key pair + (public/private), the token issuer, and the location to generate microprofile-config.properties. + </li> + <li>A template file, named <strong>jwt-token.json</strong>, that defines the content of the token + body. + </li> +</ul> +<p>Figure 1 shows the relationships among these files.</p> +<h2>Figure 1: JWTenizr Input and Output Files</h2> +<p><img src="images/2_1.png" alt="Figure 1: JWTenizr Input and Output Files"></p> +<p>A token has a limited lifespan — 15 minutes with JWTenizr. To avoid token expiration during + tests, JWTenizr is called at the beginning of JUnit tests to generate a fresh token. As a result, + JWTenizr is defined in pom.xml as a test dependency.</p> +<p>Because JWTenizr is not available in the Maven Central Repository, you need to install it in your + local Maven repository by:</p> +<ol> + <li>Downloading JWTenizr from<a href="https://github.com/AdamBien/jwtenizr"> </a><a + href="https://github.com/AdamBien/jwtenizr" + >GitHub</a>. + </li> + <li>Running <code>mvn install</code>.</li> +</ol> +<h2>jwtenizr-config.json File Contents</h2> +<p>The code below show the contents of jwtenizr-config.json, the main configuration file:</p> +<code>{<br> + "mpConfigIssuer": "jefrajames",<br> + + "mpConfigurationFolder": "src/main/resources/META-INF",<br> + + "privateKey": "private key value here",<br> + + "publicKey": "public key value here"<br> + +}</code> +<p>Note: For Quarkus and Open Liberty, mpConfigurationFolder can’t be directly generated in + src/main/resources/META-INF.</p> +<h2>jwt-token.json File Contents</h2> +<p>The jwt-token.json template file defines the content of the body token in the form of claims, as + shown in the example below:</p> +<code>{"iss":"jefrajames","jti":"42","sub":"jf","upn":"james","groups":["chief","hacker","duke"],"myclaim":"customValue"}</code> +<p>In this example, four claims are particularly relevant:</p> +<ul> + <li>iss: Defines the token issuer. This value can optionally be controlled by the endpoint.</li> + <li>upn: Defines the User Principal Name.</li> + <li>groups: Defines the groups and roles the user belongs to.</li> + <li>myclaim: A custom claim.</li> +</ul> +<h2>Testing With curl</h2> +<p>To facilitate the use of curl, each project has a specific curl.sh script that uses the + last-generated token from token.jwt and targets the application-specific URL.</p> +<p>When run without arguments, curl.sh calls the default hello endpoint. Just add an argument to + call other endpoints. For example:</p> +<ul> + <li>curl.sh secured</li> + <li>curl.sh forbidden</li> + <li>curl.sh myclaims</li> +</ul> +<h2>Understanding the Impact on Performance</h2> +<p>Using Microprofile JWT can impact performance in multiple ways:</p> +<ul> + <li>It increases the size of HTTP requests. According to my tests, the size of a token is around + 600 bytes.</li> + <li>On the server side, it requires JAX-RS resource classes to be @RequestScoped rather than + @ApplicationScoped. This means these classes are not reusable and a new instance is created for + each request which adds some overhead.</li> + <li>The signature is checked for each request to validate the token.</li> +</ul> +<p>In most cases, the performance loss is acceptable, but should be kept in mind. Don’t be + surprised if your measurements indicate a performance reduction.</p> +<h2>Improving Security</h2> +<p>Each part of a JWT token is Base64-encoded. This encoding doesn’t mean the token is + ciphered. A “man in the middle” attack can steal and reuse it. This risk can be + mitigated in two ways:</p> +<ul> + <li>By limiting the token lifespan. In this case, a tradeoff must be made between performance and + security. Here’s a simple explanation: Small values increase security by limiting the risk + of inappropriate reuse, while high values increase performance because fewer tokens are + generated.</li> + <li>By using HTTPS as the transport layer. With this approach, a ciphered communication channel is + established between clients and servers, preventing tokens from being stolen and reused.</li> +</ul> +<p>Needless to say, in production, both mitigations are recommended.</p> +<p>Two additional security measures are also required:</p> +<ul> + <li><strong>Using a Public Key Infrastructure (PKI)</strong>. MicroProfile JWT is based on RSA + algorithms that use public/private key pairs. Public key distribution and renewal must be taken + into account using a PKI.</li> + <li><strong>Using Identity and Access Management (IAM). </strong>Using an IAM such as Keycloak in + production is a must.</li> +</ul> +<h2>Check Out the Project in GitHub</h2> +<p>Developing this project allowed me to see how easy it is to secure a JAX-RS API using + MicroProfile JWT from a developer perspective.</p> +<p>There are some differences between Open Liberty, WildFly and Quarkus — primarily in terms + of configuration and testing — but the majority of the code remains the same. I’ve + described these differences in README files that are included in the project.</p> +<p> + To learn more, check out the project in<a href="https://github.com/jefrajames/jwt-lab"> </a><a + href="https://github.com/jefrajames/jwt-lab" + >GitHub</a>. +</p> +<h2>Get More Information</h2> +<p>For additional insight into the technologies mentioned in this article, see:</p> +<ul> + <li><a href="https://www.tomitribe.com/blog/microprofile-json-web-token-jwt/">MicroProfile JSON + Web Token</a> by Jean-Louis Monteiro from <a href="https://www.tomitribe.com/">Tomitribe</a>.</li> + <li><a href="https://www.adam-bien.com/roller/abien/entry/json_web_token_generator_jwtenizr">Securing + JAX-RS Endpoint with JWT</a>, a video by Adam Bien that demonstrates how to use JWTenizr with + Quarkus.</li> + <li><a + href="http://www.mastertheboss.com/javaee/eclipse-microservices/using-jwt-role-based-access-control-with-wildfly" + >Using JWT Role Based Access Control with WildFly</a>, published on mastertheboss.com.</li> + <li><a + href="https://suedbroecker.net/2020/06/30/getting-started-to-secure-a-java-microservice-with-keycloak-microprofile-and-openliberty/" + >Getting Started to Secure a Simple Java Microservice With Keycloak, MicroProfile and Open Liberty</a> + by Thomas Suedbroecker from IBM.</li> +</ul> +<div class="margin-bottom-20"> + <?php print $Theme->getShareButtonsHTML(); ?> +</div> +<div class="bottomitem margin-bottom-20"> + <h3>About the Author</h3> + <div class="row"> + <div class="col-sm-24"> + <div class="row margin-bottom-20"> + <div class="col-sm-8"> + <img class="img-responsive" alt="<?php print $pageAuthor; ?>" src="images/jean_francois.jpg" /> + </div> + <div class="col-sm-16"> + <p class="author-name"><?php print $pageAuthor; ?></p> + <p class="author-bio">Jean-François James is a senior software architect, Worldline distinguished expert, open source contributor, blogger, speaker, father of three, and martial artist.</p> + </div> + </div> + </div> + </div> +</div> \ No newline at end of file
diff --git a/eclipse_newsletter/2020/august/content/en_3.php b/eclipse_newsletter/2020/august/content/en_3.php new file mode 100644 index 0000000..7dc33b0 --- /dev/null +++ b/eclipse_newsletter/2020/august/content/en_3.php
@@ -0,0 +1,192 @@ +<?php +/** + * Copyright (c) 2020 Eclipse Foundation. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * Contributors: + * Martin Lowe (Eclipse Foundation) - Initial implementation + * + * SPDX-License-Identifier: EPL-2.0 + */ +// This file must be included +if (basename(__FILE__) == basename($_SERVER['PHP_SELF'])) { + exit(); +} +?> +<h1 class="article-title"><?php echo $pageTitle; ?></h1> +<p> + The <a + href="https://projects.eclipse.org/projects/ee4j.jakartaee-tck" + >Eclipse Jakarta EE Technology Compatibility Kit (TCK)</a> team needs your help. We’re + creating more opportunities for the Jakarta EE community to help develop Jakarta EE platform TCK + tests. We need to do this because as we add new technologies to Jakarta EE, we also have to add + the appropriate tests to prove the technologies are correctly implemented in Jakarta EE releases + and server implementations. +</p> +<p>Before I explain how you can get involved in developing TCK tests, here’s a brief overview + of why they’re so important to the future of Jakarta EE.</p> +<h2>Platform and Standalone TCK Tests Must Be Passed</h2> +<p>Every Jakarta EE server implementation must pass 100 percent of the platform TCK tests. The TCK + tests prove the server is compatible with the Jakarta EE specification requirements.</p> +<p> + Every Jakarta EE server implementation must also pass standalone TCK tests. Generally, these tests + are focused on a specific Jakarta API, such as the<a href="https://jakarta.ee/specifications/cdi"> + </a><a href="https://jakarta.ee/specifications/cdi">Jakarta Contexts and Dependency Injection</a> + standalone TCK, while the platform TCK tests ensure all Jakarta EE specifications (technologies) + work correctly when called from various Jakarta EE containers/technologies. +</p> +<h2>Jakarta EE Platform TCK Tests Verify Compatibility Levels</h2> +<p>The Jakarta EE platform TCK tests verify the level of compatibility applications can expect for + each Jakarta EE specification technology. This testing of expected behavior increases application + portability to different Jakarta EE server implementations.</p> +<p> + For example, some TCK tests invoke<a href="https://projects.eclipse.org/projects/ee4j.jpa"> </a><a + href="https://projects.eclipse.org/projects/ee4j.jpa" + >Jakarta Persistence</a> persistence contexts through remote session bean calls where a different + Java virtual machine (JVM) thread may be used for every call. This can create conditions that are + similar to those your applications may be using and make it easier to discover edge cases that can + only be reached when testing with a Jakarta EE server implementation. This approach has helped me + find problems during TCK testing that I might not have discovered as quickly. Applications will + reach the edge cases eventually, but it’s better to discover them as early as possible. +</p> +<p>The roughly five million lines of TCK test code cover many different situations, each of which + offers value to the applications that deploy on Jakarta EE server implementations. If the TCKs + were not used to test the Jakarta EE specifications, application developers may be caught in + situations where an application server is not fully implementing some aspect of the Jakarta EE + specifications. And that’s why we need your help.</p> +<h2>Get Involved in TCK Test Development</h2> +<p>To start participating in TCK test development, follow the steps below.</p> +<p> + 1. Join the<a href="https://accounts.eclipse.org/mailing-list/jakartaee-tck-dev"> </a><a + href="https://accounts.eclipse.org/mailing-list/jakartaee-tck-dev" + >jakartaee-tck-dev</a> mailing list to start participating in TCK conversations and voice your + opinions. +</p> +<p> + It’s perfectly fine to ask how you can help or what’s new this week. We have fewer + than 100 subscribers on this mailing list, which means we’re missing you, so please join. + After<a href="https://eclipse-ee4j.github.io/jakartaee-platform/jakartaee9/JakartaEE9"> </a><a + href="https://eclipse-ee4j.github.io/jakartaee-platform/jakartaee9/JakartaEE9" + >Jakarta EE 9</a> is released, we’ll take a moment to introduce ourselves on the Platform + TCK mailing list and celebrate the release. We can also start discussing changes you can help + with. +</p> +<p> + One challenge is that we need to document the internal workings of the TCK. We can start asking + questions and adding answers to the<a href="https://github.com/eclipse-ee4j/jakartaee-tck/wiki"> </a><a + href="https://github.com/eclipse-ee4j/jakartaee-tck/wiki" + >wiki</a> for all to learn from. Here are some<a + href="https://docs.github.com/en/github/building-a-strong-community/adding-or-editing-wiki-pages#adding-or-editing-wiki-pages-locally" + > </a><a + href="https://docs.github.com/en/github/building-a-strong-community/adding-or-editing-wiki-pages#adding-or-editing-wiki-pages-locally" + >instructions for contributing to a wiki</a> that may help us make remote changes to the wiki. The + wiki is a work in progress. If it doesn’t help, we’ll find a different way to document + TCK questions and answers. +</p> +<p> + 2. The easiest way to get started is to git fork a Jakarta EE git repository. To do this, go to<a + href="https://github.com/eclipse-ee4j/jakartaee-tck" + > </a><a href="https://github.com/eclipse-ee4j/jakartaee-tck">github.com/eclipse-ee4j/jakartaee-tck</a>, + then click on <strong>Watch</strong>, <strong>Star</strong>, and <strong>Fork</strong> near the + top right of the browser screen: +</p> +<ul> + <li>Click <strong>Star</strong> to show you like the repository or want to remember it. + </li> + <li>Click <strong>Watch</strong> and choose <strong>Watching</strong> to be notified of changes + made to files in the repository. + </li> + <li>Click <strong>Fork</strong> to make a copy of the repository to your personal GitHub account. + For example,<a href="https://github.com/scottmarlow/jakartaee-tck"> </a><a + href="https://github.com/scottmarlow/jakartaee-tck" + >github.com/scottmarlow/jakartaee-tck</a> is a fork of the<a + href="https://github.com/eclipse-ee4j/jakartaee-tck" + > </a><a href="https://github.com/eclipse-ee4j/jakartaee-tck">github.com/eclipse-ee4j/jakartaee-tck</a> + repository. + </li> +</ul> +<p>3. Set up a copy of your forked jakartaee-tck repository using the git clone command: + <code>git@github.com:YourGitHubID/jakartaee-tck.git</code>. Progress will be indicated as shown in the example + below:</p> +<ul> + <li>Cloning into 'jakartaee-tck'...</li> + <li>remote: Enumerating objects: 4, done.</li> + <li>remote: Counting objects: 100% (4/4), done.</li> + <li>remote: Compressing objects: 100% (4/4), done.</li> + <li>remote: Total 92888 (delta 0), reused 1 (delta 0), pack-reused 92884</li> + <li>Receiving objects: 100% (92888/92888), 59.82 MiB | 27.20 MiB/s, done.</li> + <li>Resolving deltas: 100% (71537/71537), done.</li> +</ul> +<p> + 4. Join other<a href="https://jakarta.ee/connect/mailing-lists/"> </a><a + href="https://jakarta.ee/connect/mailing-lists/" + >Jakarta EE mailing lists</a> so you can monitor and participate in the discussions. +</p> +<p> + For example, if you subscribe to<a href="https://accounts.eclipse.org/mailing-list/jpa-dev"> </a><a + href="https://accounts.eclipse.org/mailing-list/jpa-dev" + >jpa-dev</a>, you can participate in developing the Jakarta Persistence specification. You can + also participate in discussions about new APIs and voice concerns about issues with current APIs. +</p> +<p>5. Look for other Jakarta EE git repositories you can contribute to:</p> +<ul> + <li>Go to<a href="https://github.com/eclipse-ee4j"> </a><a href="https://github.com/eclipse-ee4j">github.com/eclipse-ee4j</a>. + </li> + <li>Click <strong>Star</strong> on the projects you like. + </li> + <li>Fork the projects you would like to contribute to. We have a lot of documentation, code, and + scripts that need your help.</li> +</ul> +<p>6. Sign the Eclipse Contributor Agreement with the same email address you use for GitHub:</p> +<p> + Go to<a href="https://www.eclipse.org/legal/ECA.php"> </a><a + href="https://www.eclipse.org/legal/ECA.php" + >eclipse.org/legal/ECA.php</a> and read the agreement. +</p> +<p> + Click the<a href="https://accounts.eclipse.org/user/eca"> </a><a + href="https://accounts.eclipse.org/user/eca" + >ECA form link</a>. +</p> +<p>When making changes locally to your fork of a GitHub repository, be sure to sign all git commits. + For example: <code>git commit -s -a -m"add new test for Jakarta Persistence transaction timeout + handling</code>".</p> +<h2>If You Only Do One Thing</h2> +<p> + Remember to join the<a href="https://accounts.eclipse.org/mailing-list/jakartaee-tck-dev"> </a><a + href="https://accounts.eclipse.org/mailing-list/jakartaee-tck-dev" + >Jakarta EE Platform TCK mailing list</a> and other<a + href="https://jakarta.ee/connect/mailing-lists/%20mailing%20lists" + > </a><a href="https://jakarta.ee/connect/mailing-lists/%20mailing%20lists">Jakarta EE mailing + lists</a> so you can ask questions, follow, and participate in the future development of Jakarta + EE. +</p> +<div class="margin-bottom-20"> + <?php print $Theme->getShareButtonsHTML(); ?> +</div> +<div class="bottomitem margin-bottom-20"> + <h3>About the Author</h3> + <div class="row"> + <div class="col-sm-24"> + <div class="row margin-bottom-20"> + <div class="col-sm-8"> + <img class="img img-responsive" alt="<?php print $pageAuthor; ?>" + src="images/scott.jpg" /> + </div> + <div class="col-sm-16"> + <p class="author-name"><?php print $pageAuthor; ?></p> + <p class="author-bio"> + <a href="https://projects.eclipse.org/user/3326">Scott Marlow</a> is principal software + engineer of the <a href="https://wildfly.org/">WildFly</a>/<a + href="https://www.redhat.com/en/technologies/jboss-middleware/application-platform" + >JBoss Enterprise Application Platform</a> team at Red Hat and is the Jakarta EE + Platform TCK Project Lead. + </p> + </div> + </div> + </div> + </div> +</div> \ No newline at end of file
diff --git a/eclipse_newsletter/2020/august/content/en_4.php b/eclipse_newsletter/2020/august/content/en_4.php new file mode 100644 index 0000000..2a556ef --- /dev/null +++ b/eclipse_newsletter/2020/august/content/en_4.php
@@ -0,0 +1,132 @@ +<?php +/** + * Copyright (c) 2020 Eclipse Foundation. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * Contributors: + * Martin Lowe (Eclipse Foundation) - Initial implementation + * + * SPDX-License-Identifier: EPL-2.0 + */ +// This file must be included +if (basename(__FILE__) == basename($_SERVER['PHP_SELF'])) { + exit(); +} +?> +<h1 class="article-title"><?php echo $pageTitle; ?></h1> +<h2>EclipseCon 2020 is October 19-22</h2> +<p> + If you haven’t already registered for <a + href="https://www.eclipsecon.org/2020" + >EclipseCon 2020</a>, take a minute to <a + href="https://www.eclipsecon.org/2020/registration" + >reserve your spot today</a>. This year’s EclipseCon is a virtual event, and there’s + no fee to attend, but space is limited, so don’t delay. +</p> +<p> + EclipseCon kicks off with <a + href="https://www.eclipsecon.org/2020/community-day" + >Community Day</a> on October 19. Attending Community Day sessions and round tables are a great + way to reconnect with the communities you’re already involved in, and explore opportunities + to participate in new projects and working groups. +</p> +<p> + The week continues with a great lineup of <a + href="https://www.eclipsecon.org/2020/sessions" + >informative and helpful sessions</a> from Eclipse community experts. With 10 conference tracks to + choose from, we’re sure there’s at least one session that will interest every Eclipse + community member. Here are just a few of the conference tracks at this year’s event: +</p> +<ul> + <li>Cloud native Java</li> + <li>IoT and edge</li> + <li>Java and Java development tools (JDT)</li> + <li>Open Service Gateway Initiative (OSGi)</li> + <li>Web and desktop tools and IDEs</li> +</ul> +<p> + <a href="https://www.eclipsecon.org/2020/registration">Get all the registration details and + register now.</a> +</p> +<p> + Also, keep an eye on <a href="https://blogs.eclipse.org/">our + blog</a>. Over the coming weeks, we’ll be highlighting sessions from several conference + tracks and providing tips on how to get the most from your virtual EclipseCon experience. +</p> +<hr /> +<h2>The Jakarta EE 9 Tools Vendor Datasheet is Now Available</h2> +<p> + With the Jakarta EE 9 General Availability (GA) release almost finalized, a growing number of + tools vendors are implementing the namespace change. Recently, the Jelastic PaaS team + <a href="https://jelastic.com/blog/jakartaee-9-release/">announced it is actively working to + support Jakarta EE 9 in its cloud platform</a>. +</p> +<p>To help these vendors make the transition, the Jakarta EE community has developed a datasheet + summarizing the namespace migration challenge and opportunity.</p> +<p>Tools vendors that take advantage of Jakarta EE 9 to implement the new namespace can migrate + faster and more cost effectively than those who wait until the Jakarta EE 10 release as Jakarta EE + 10 will also include new features, enhancements, and other major changes.</p> +<p>The datasheet describes:</p> +<ul> + <li>The key elements of the Jakarta EE 9 release for tools vendors</li> + <li>Vendor implementation roadmaps</li> + <li>The list of affected packages</li> +</ul> +<p> + Download the datasheet + <a href="https://jakarta.ee/resources/JakartaEE-Datasheet-July172020_final.pdf">here</a>. +</p> +<hr /> +<h2>The Friends of Jakarta EE Monthly Call is For Everyone</h2> +<p>The Friends of Jakarta EE monthly calls are by the community, for the community. These calls are + held on the fourth Wednesday of every month and are an opportunity for the Jakarta EE community to + get together virtually and talk with one another.</p> +<p> + The calls play no formal role in<a + href="https://jakarta.ee/about/" + >Jakarta EE Working Group</a> activities. The people who attend are the right people, the topics + discussed are the right topics, and the outcomes are the right outcomes. +</p> +<p> + The next call is Wednesday, August 26 at 11:00 a.m. EDT. You’ll find the connection details + on the<a + href="https://calendar.google.com/calendar/embed?src=eclipse-foundation.org_3281qms6riu4kdf354jn5idon0@group.calendar.google.com" + >Jakarta EE community calendar</a>. +</p> +<hr /> +<h2>The Eclipse SAM IoT Research Conference is September 17-18</h2> +<p>The Eclipse SAM IoT virtual conference will bring together industry experts and researchers who + are working on the next generation of IoT with a focus on:</p> +<ul> + <li>Security and privacy</li> + <li>Artificial intelligence and analytics</li> + <li>Digital twins and modeling</li> +</ul> +<p>These innovations provide the groundwork for next-generation IoT solutions that enable smart + factories, smart cities, critical infrastructure, and cooperative service robotics.</p> +<p> + For conference details, visit the<a + href="https://events.eclipse.org/2020/sam-iot/" + >webpage</a>. +</p> +<p> + To register, click <a href="https://www.eventbrite.de/e/eclipse-sam-iot-2020-tickets-107823242220">here</a>. +</p> +<hr /> +<h2>IoT Developer Survey Results are Coming Soon</h2> +<p>The 2020 IoT Developer Survey closed on July 10 so watch for the results to be available.</p> +<p>This is the first year the survey included questions about how developers are incorporating edge + computing technologies into their IoT solutions. With the next generation of IoT applications + extending to the network edge, and strong momentum in edge technologies at the Eclipse Foundation, + the survey results will be interesting and insightful.</p> +<p>With more than 1,600 survey responses, the results will give everyone in the IoT ecosystem + — from original equipment manufacturers (OEMs), software vendors, and hardware manufacturers + to service providers, enterprises, and individual developers — a better understanding of the + latest IoT solutions and service development trends. They’ll also have a clear view of how + these trends impact their strategies and businesses.</p> +<div class="margin-bottom-20"> + <?php print $Theme->getShareButtonsHTML(); ?> +</div>
diff --git a/eclipse_newsletter/2020/august/content/en_5.php b/eclipse_newsletter/2020/august/content/en_5.php new file mode 100644 index 0000000..0b52a31 --- /dev/null +++ b/eclipse_newsletter/2020/august/content/en_5.php
@@ -0,0 +1,79 @@ +<?php +/** + * Copyright (c) 2020 Eclipse Foundation. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * Contributors: + * Martin Lowe (Eclipse Foundation) - Initial implementation + * + * SPDX-License-Identifier: EPL-2.0 + */ +// This file must be included +if (basename(__FILE__) == basename($_SERVER['PHP_SELF'])) { + exit(); +} +?> +<h1 class="article-title"><?php echo $pageTitle; ?></h1> +<h2>At a Glance: Lukas Jungmann</h2> +<ul> + <li>Involved in open source since: 2004</li> + <li>Works for: Oracle Corporation</li> + <li>Eclipse Foundation contributor since: 2010</li> + <li>Involved in: <a href="https://projects.eclipse.org/user/3043">14 Jakarta EE projects</a></li> + <li>Committer to: 12 Jakarta EE projects</li> + <li>Committer since: 2013</li> + <li>Fun fact: You can add the month numbers his first two children were born in — three and + five for March and May — to get the month number his third child was born in — eight + for August. Three, five, and eight also represent the last number of the year in which each + child was born.</li> +</ul> +<hr /> +<h2>Why did you first get involved in open source software and communities?</h2> +<p>In 2004, in my first job as a quality engineer at Sun Microsystems, I was working on the NetBeans + IDE, which was an open source project with a community around it. Sometimes, I was supporting + users until the early morning hours. I received a big thank you email and that was really + rewarding. It made me realize how much I enjoy helping people so I increased my activities.</p> +<h2>How did that involvement lead to you becoming an Eclipse committer?</h2> +<p> + I became involved with the Eclipse Foundation in 2010 when I was working for Red Hat. Then, in + 2013, I was working as a developer at Oracle and there was an opportunity to move to the <a + href="https://www.eclipse.org/eclipselink/" + >EclipseLink project</a>, and that’s when I gained committer status. +</p> +<p>In EclipseLink, if you want to be a committer, you need to provide at least 10 valuable + contributions. It could be a bug fix, a documentation update, a wiki page. Everything counts, but + we want to see that people are actively trying to help the project.</p> +<p>When Oracle decided to donate everything related to Java EE to the Eclipse Foundation, I became + even more involved. Because I had the benefit of knowing how things work within the Eclipse + Foundation, I was able to share my knowledge and help my colleagues move projects over to the + Eclipse Foundation faster.</p> +<h2>How would you summarize your experiences as a committer?</h2> +<p>The best thing about being a committer is to see that you’re able to help people move their + projects forward. There’s real personal satisfaction.</p> +<p>It’s challenging to understand the processes around the project life cycle and the legal + implications, but the Eclipse Foundation provides a Committer’s Handbook that contains + everything a committer needs to know. It’s an invaluable source of information.</p> +<p>Also, the people involved in the Eclipse Foundation are really helpful and kind. If something is + not clear or you need help, you can just file a bug through Bugzilla and ask for help and the + problem will be solved pretty quickly.</p> +<h2>What are your next steps and goals as a committer and Eclipse Foundation community member?</h2> +<p> + Right now, I’m not looking very far ahead because I’m completely focused on helping to + make <a href="https://eclipse-ee4j.github.io/jakartaee-platform/jakartaee9/JakartaEE9">Jakarta EE + 9</a> a successful release. +</p> +<h2>What would you say to developers who are considering getting more involved in open source + software projects at the Eclipse Foundation?</h2> +<p>It’s a very good way to solve problems you’re having because Eclipse open source is + all about contributions and collaboration. If you have a project that’s not getting + appropriate attention, the Eclipse community can help you move it forward.</p> +<p>When you get involved, start by doing small stuff. It may seem as though it’s not + important, but it very often is, and it’s the best way to understand the project and how it + works. You can grow your knowledge about a project and the processes around it to gain experience + and work toward committer status if that’s what you want.</p> +<div class="margin-bottom-20"> + <?php print $Theme->getShareButtonsHTML(); ?> +</div>
diff --git a/eclipse_newsletter/2020/august/content/en_index.php b/eclipse_newsletter/2020/august/content/en_index.php new file mode 100644 index 0000000..46231b5 --- /dev/null +++ b/eclipse_newsletter/2020/august/content/en_index.php
@@ -0,0 +1,1217 @@ +<?php +/** + * Copyright (c) 2020 Eclipse Foundation. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * Contributors: + * Martin Lowe (Eclipse Foundation) - Initial implementation + * + * SPDX-License-Identifier: EPL-2.0 + */ +// This file must be included +if (basename(__FILE__) == basename($_SERVER['PHP_SELF'])) { + exit(); +} +?> + +<table border="0" cellpadding="0" cellspacing="0" width="100%" + class="templateContainer" + style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; border: 0; max-width: 600px !important;"> + <tbody> + <tr> + <td valign="top" id="templatePreheader" + style="background: #fafafa none no-repeat center/cover; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; background-color: #fafafa; background-image: none; background-repeat: no-repeat; background-position: center; background-size: cover; border-top: 0; border-bottom: 0; padding-top: 9px; padding-bottom: 9px;"><table + border="0" cellpadding="0" cellspacing="0" width="100%" + class="mcnTextBlock" + style="min-width: 100%; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <tbody class="mcnTextBlockOuter"> + <tr> + <td valign="top" class="mcnTextBlockInner" + style="padding-top: 9px; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <!--[if mso]> + <table align="left" border="0" cellspacing="0" cellpadding="0" width="100%" style="width:100%;"> + <tr> + <![endif]--> <!--[if mso]> + <td valign="top" width="600" style="width:600px;"> + <![endif]--> + <table align="left" border="0" cellpadding="0" cellspacing="0" + style="max-width: 100%; min-width: 100%; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;" + width="100%" class="mcnTextContentContainer"> + <tbody> + <tr> + + <td valign="top" class="mcnTextContent" + style="padding: 0px 18px 9px; text-align: center; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; word-break: break-word; color: #656565; font-family: 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 12px; line-height: 150%;"> + + <div style="text-align: right;"> + <span style="font-size: 12px"><a + href="https://us6.campaign-archive.com/?e=[UNIQID]&u=eaf9e1f06f194eadc66788a85&id=f33cda1c44" + target="_blank" + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; color: #656565; font-weight: normal; text-decoration: underline;">View + this email in your browser</a></span> + </div> + + </td> + </tr> + </tbody> + </table> <!--[if mso]> + </td> + <![endif]--> <!--[if mso]> + </tr> + </table> + <![endif]--> + </td> + </tr> + </tbody> + </table></td> + </tr> + <tr> + <td valign="top" id="templateHeader" + style="background: #3d3935 url(&quot;https://mcusercontent.com/eaf9e1f06f194eadc66788a85/images/f161e076-20c8-422d-8ffe-87c9057f42b1.png&quot;) no-repeat center/cover; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; background-color: #3d3935; background-image: url(https://mcusercontent.com/eaf9e1f06f194eadc66788a85/images/f161e076-20c8-422d-8ffe-87c9057f42b1.png); background-repeat: no-repeat; background-position: center; background-size: cover; border-top: 0; border-bottom: 0; padding-top: 9px; padding-bottom: 0;"><table + border="0" cellpadding="0" cellspacing="0" width="100%" + class="mcnTextBlock" + style="min-width: 100%; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <tbody class="mcnTextBlockOuter"> + <tr> + <td valign="top" class="mcnTextBlockInner" + style="padding-top: 9px; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <!--[if mso]> + <table align="left" border="0" cellspacing="0" cellpadding="0" width="100%" style="width:100%;"> + <tr> + <![endif]--> <!--[if mso]> + <td valign="top" width="600" style="width:600px;"> + <![endif]--> + <table align="left" border="0" cellpadding="0" cellspacing="0" + style="max-width: 100%; min-width: 100%; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;" + width="100%" class="mcnTextContentContainer"> + <tbody> + <tr> + + <td valign="top" class="mcnTextContent" + style="padding-top: 0; padding-right: 18px; padding-bottom: 9px; padding-left: 18px; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; word-break: break-word; color: #ffffff; font-family: 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 150%; text-align: left;"> + + <h4 class="null" + style="display: block; margin: 0; padding: 0; color: #ffffff; font-family: 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 12px; font-style: normal; font-weight: normal; line-height: 125%; letter-spacing: normal; text-align: left;"> + Eclipse Newsletter - 2020.??.08<br> + </h4> + + <h1 class="null" + style="text-align: center; display: block; margin: 0; padding: 0; color: #ffffff; font-family: 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 26px; font-style: normal; font-weight: bold; line-height: 125%; letter-spacing: normal;">Research + @ Eclipse: Industrial Automation</h1> <br> + </td> + </tr> + </tbody> + </table> <!--[if mso]> + </td> + <![endif]--> <!--[if mso]> + </tr> + </table> + <![endif]--> + </td> + </tr> + </tbody> + </table></td> + </tr> + <tr> + <td valign="top" id="templateUpperBody" + style="background: #ffffff none no-repeat center/cover; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; background-color: #ffffff; background-image: none; background-repeat: no-repeat; background-position: center; background-size: cover; border-top: 0; border-bottom: 0; padding-top: 0; padding-bottom: 0;"><table + border="0" cellpadding="0" cellspacing="0" width="100%" + class="mcnBoxedTextBlock" + style="min-width: 100%; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <!--[if gte mso 9]> + <table align="center" border="0" cellspacing="0" cellpadding="0" width="100%"> + <![endif]--> + <tbody class="mcnBoxedTextBlockOuter"> + <tr> + <td valign="top" class="mcnBoxedTextBlockInner" + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + + <!--[if gte mso 9]> + <td align="center" valign="top" "> + <![endif]--> + <table align="left" border="0" cellpadding="0" cellspacing="0" + width="100%" + style="min-width: 100%; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;" + class="mcnBoxedTextContentContainer"> + <tbody> + <tr> + + <td + style="padding-top: 9px; padding-left: 18px; padding-bottom: 9px; padding-right: 18px; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + + <table border="0" cellspacing="0" + class="mcnTextContentContainer" width="100%" + style="min-width: 100% !important; background-color: #3D3935; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <tbody> + <tr> + <td valign="top" class="mcnTextContent" + style="padding: 18px; color: #F2F2F2; font-family: Helvetica; font-size: 14px; font-weight: normal; text-align: center; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; word-break: break-word; line-height: 150%;"> + <h2 class="null" + style="display: block; margin: 0; padding: 0; color: #ffffff; font-family: 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 22px; font-style: normal; font-weight: bold; line-height: 125%; letter-spacing: normal; text-align: left;">Editor's + Note</h2> + + </td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> + </table> <!--[if gte mso 9]> + </td> + <![endif]--> <!--[if gte mso 9]> + </tr> + </table> + <![endif]--> + </td> + </tr> + </tbody> + </table> + <table border="0" cellpadding="0" cellspacing="0" width="100%" + class="mcnCaptionBlock" + style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <tbody class="mcnCaptionBlockOuter"> + <tr> + <td class="mcnCaptionBlockInner" valign="top" + style="padding: 9px; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + + + + + <table border="0" cellpadding="0" cellspacing="0" + class="mcnCaptionRightContentOuter" width="100%" + style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <tbody> + <tr> + <td valign="top" class="mcnCaptionRightContentInner" + style="padding: 0 9px; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <table align="left" border="0" cellpadding="0" + cellspacing="0" + class="mcnCaptionRightImageContentContainer" width="176" + style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <tbody> + <tr> + <td class="mcnCaptionRightImageContent" align="center" + valign="top" + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + + + + <img alt="" + src="https://www.eclipse.org/community/eclipse_newsletter/2020/february/images/shabnam.png" + width="176" + style="max-width: 400px; border: 0; height: auto; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic; vertical-align: bottom;" + class="mcnImage"> + + + + </td> + </tr> + </tbody> + </table> + <table class="mcnCaptionRightTextContentContainer" + align="right" border="0" cellpadding="0" cellspacing="0" + width="352" + style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <tbody> + <tr> + <td valign="top" class="mcnTextContent" + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; word-break: break-word; color: #3d3935; font-family: 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 150%; text-align: left;"> + <p>We’re approaching the Jakarta EE 9 full release date and Jakarta EE 10 is on the horizon. As we turn our focus to the future of Jakarta EE, it’s a good time for all of us to consider where the technology is today, where we want it to go, and how we can help it get there.</p> + </td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> + </table> + + + + + </td> + </tr> + </tbody> + </table> + <table border="0" cellpadding="0" cellspacing="0" width="100%" + class="mcnTextBlock" + style="min-width: 100%; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <tbody class="mcnTextBlockOuter"> + <tr> + <td valign="top" class="mcnTextBlockInner" + style="padding-top: 9px; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <!--[if mso]> + <table align="left" border="0" cellspacing="0" cellpadding="0" width="100%" style="width:100%;"> + <tr> + <![endif]--> <!--[if mso]> + <td valign="top" width="600" style="width:600px;"> + <![endif]--> + <table align="left" border="0" cellpadding="0" cellspacing="0" + style="max-width: 100%; min-width: 100%; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;" + width="100%" class="mcnTextContentContainer"> + <tbody> + <tr> + + <td valign="top" class="mcnTextContent" + style="padding-top: 0; padding-right: 18px; padding-bottom: 9px; padding-left: 18px; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; word-break: break-word; color: #3d3935; font-family: 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 150%; text-align: left;"> + + <h3 class="null" + style="display: block; margin: 0; padding: 0; color: #3d3935; font-family: 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 20px; font-style: normal; font-weight: bold; line-height: 125%; letter-spacing: normal; text-align: left;" + >Spotlight Articles</h3> + <p>Our spotlight articles this month highlight opportunities to get more + involved with Jakarta EE initiatives and technologies.</p> + <ul> + <li><a + href="https://www.eclipse.org/community/eclipse_newsletter/2020/august/1.php" + >Steve Millidge</a> summarizes everything you need to know about the + Jakarta EE 9 full release — how you can help finalize the release, + Java release priorities, namespace change roadmaps, and how to start + sharing your ideas for Jakarta EE 10.</li> + <li><a + href="https://www.eclipse.org/community/eclipse_newsletter/2020/august/3.php" + >Scott Marlow</a> explains how the Jakarta EE community can get involved + in developing Jakarta EE platform Technology Compatibility Kit (TCK) + tests and why these tests are so important to the future of Jakarta EE.</li> + <li><a + href="https://www.eclipse.org/community/eclipse_newsletter/2020/august/2.php" + >Jean-François James</a> describes a practical way to secure + Jakarta RESTful Web Services (JAX-RS) APIs with Eclipse MicroProfile + JavaScript Object Notation (JSON) Web Token (JWT).</li> + </ul> + <h2>Committer Profile</h2> + <p>Each month, we’ll be introducing you to an Eclipse committer so you + can get to know these dedicated Eclipse community members and learn why + they became committers.</p> + <p> + We start the series with a profile of <a + href="https://www.eclipse.org/community/eclipse_newsletter/2020/august/5.php" + >Lukas Jungmann</a> — committer to 12 Jakarta EE projects, Oracle + employee, and most importantly, dad to three children. + </p> + <h2>News and Community Updates</h2> + <p> + Finally, read our <a + href="https://www.eclipse.org/community/eclipse_newsletter/2020/august/4.php" + >News</a> section for the latest updates on Jakarta EE and the Eclipse + Foundation. This month, you’ll learn about: + </p> + <ul> + <li>EclipseCon 2020 focus areas and registration</li> + <li>The Jakarta EE 9 tools vendor datasheet</li> + <li>The Friends of Jakarta EE monthly call</li> + <li>The value of the 2020 IoT Developer Survey results</li> + <li>Eclipse SAMIoT Research Conference 2020 - 17-18 September</li> + </ul> + <p> + Happy reading!<br /> Shabnam Mayel + </p> + </td> + </tr> + </tbody> + </table> <!--[if mso]> + </td> + <![endif]--> <!--[if mso]> + </tr> + </table> + <![endif]--> + </td> + </tr> + </tbody> + </table> + <table border="0" cellpadding="0" cellspacing="0" width="100%" + class="mcnBoxedTextBlock" + style="min-width: 100%; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <!--[if gte mso 9]> + <table align="center" border="0" cellspacing="0" cellpadding="0" width="100%"> + <![endif]--> + <tbody class="mcnBoxedTextBlockOuter"> + <tr> + <td valign="top" class="mcnBoxedTextBlockInner" + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + + <!--[if gte mso 9]> + <td align="center" valign="top" "> + <![endif]--> + <table align="left" border="0" cellpadding="0" cellspacing="0" + width="100%" + style="min-width: 100%; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;" + class="mcnBoxedTextContentContainer"> + <tbody> + <tr> + + <td + style="padding-top: 9px; padding-left: 18px; padding-bottom: 9px; padding-right: 18px; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + + <table border="0" cellspacing="0" + class="mcnTextContentContainer" width="100%" + style="min-width: 100% !important; background-color: #404040; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <tbody> + <tr> + <td valign="top" class="mcnTextContent" + style="padding: 18px; color: #F2F2F2; font-family: Helvetica; font-size: 14px; font-weight: normal; text-align: center; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; word-break: break-word; line-height: 150%;"> + <h2 class="null" + style="display: block; margin: 0; padding: 0; color: #ffffff; font-family: 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 22px; font-style: normal; font-weight: bold; line-height: 125%; letter-spacing: normal; text-align: left;"> + <strong>New Project Proposals</strong> + </h2> + + </td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> + </table> <!--[if gte mso 9]> + </td> + <![endif]--> <!--[if gte mso 9]> + </tr> + </table> + <![endif]--> + </td> + </tr> + </tbody> + </table> + <table border="0" cellpadding="0" cellspacing="0" width="100%" + class="mcnTextBlock" + style="min-width: 100%; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <tbody class="mcnTextBlockOuter"> + <tr> + <td valign="top" class="mcnTextBlockInner" + style="padding-top: 9px; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <!--[if mso]> + <table align="left" border="0" cellspacing="0" cellpadding="0" width="100%" style="width:100%;"> + <tr> + <![endif]--> <!--[if mso]> + <td valign="top" width="600" style="width:600px;"> + <![endif]--> + <table align="left" border="0" cellpadding="0" cellspacing="0" + style="max-width: 100%; min-width: 100%; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;" + width="100%" class="mcnTextContentContainer"> + <tbody> + <tr> + + <td valign="top" class="mcnTextContent" + style="padding-top: 0; padding-right: 18px; padding-bottom: 9px; padding-left: 18px; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; word-break: break-word; color: #3d3935; font-family: 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 150%; text-align: left;"> + + <ul> + <li + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;" + ><a href="https://projects.eclipse.org/proposals/eclipse-digital-cockpit" + target="_blank" + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; color: #007C89; font-weight: normal; text-decoration: underline;" + >Eclipse Digital Cockpit</a>: The Eclipse Digital Cockpit provides a + modular, polyglot and service-based Edge Runtime which enables fast and + easy development of apps and services that interact with machines.</li> + </ul> + + <p + style="margin: 10px 0; padding: 0; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; color: #3d3935; font-family: 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 150%; text-align: left;"> + Interested in more project activity? <a + href="https://www.eclipse.org/projects/project_activity.php" + target="_blank" + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; color: #007C89; font-weight: normal; text-decoration: underline;">Read + on!</a> + </p> + + </td> + </tr> + </tbody> + </table> <!--[if mso]> + </td> + <![endif]--> <!--[if mso]> + </tr> + </table> + <![endif]--> + </td> + </tr> + </tbody> + </table></td> + </tr> + <tr> + <td valign="top" id="templateColumns" + style="background: #ffffff none no-repeat center/cover; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; background-color: #ffffff; background-image: none; background-repeat: no-repeat; background-position: center; background-size: cover; border-top: 0; border-bottom: 0; padding-top: 0; padding-bottom: 0;"> + <!--[if (gte mso 9)|(IE)]> + <table align="center" border="0" cellspacing="0" cellpadding="0" width="600" style="width:600px;"> + <tr> + <td align="center" valign="top" width="300" style="width:300px;"> + <![endif]--> + <table align="left" border="0" cellpadding="0" cellspacing="0" + width="300" class="columnWrapper" + style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <tbody> + <tr> + <td valign="top" class="columnContainer" + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"><table + border="0" cellpadding="0" cellspacing="0" width="100%" + class="mcnBoxedTextBlock" + style="min-width: 100%; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <!--[if gte mso 9]> + <table align="center" border="0" cellspacing="0" cellpadding="0" width="100%"> + <![endif]--> + <tbody class="mcnBoxedTextBlockOuter"> + <tr> + <td valign="top" class="mcnBoxedTextBlockInner" + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + + <!--[if gte mso 9]> + <td align="center" valign="top" "> + <![endif]--> + <table align="left" border="0" cellpadding="0" + cellspacing="0" width="100%" + style="min-width: 100%; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;" + class="mcnBoxedTextContentContainer"> + <tbody> + <tr> + + <td + style="padding-top: 9px; padding-left: 18px; padding-bottom: 9px; padding-right: 18px; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + + <table border="0" cellspacing="0" + class="mcnTextContentContainer" width="100%" + style="min-width: 100% !important; background-color: #404040; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <tbody> + <tr> + <td valign="top" class="mcnTextContent" + style="padding: 18px; color: #F2F2F2; font-family: Helvetica; font-size: 14px; font-weight: normal; text-align: center; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; word-break: break-word; line-height: 150%;"> + <h2 class="null" + style="display: block; margin: 0; padding: 0; color: #ffffff; font-family: 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 22px; font-style: normal; font-weight: bold; line-height: 125%; letter-spacing: normal; text-align: left;">New + Project Releases</h2> + + </td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> + </table> <!--[if gte mso 9]> + </td> + <![endif]--> <!--[if gte mso 9]> + </tr> + </table> + <![endif]--> + </td> + </tr> + </tbody> + </table> + <table border="0" cellpadding="0" cellspacing="0" width="100%" + class="mcnTextBlock" + style="min-width: 100%; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <tbody class="mcnTextBlockOuter"> + <tr> + <td valign="top" class="mcnTextBlockInner" + style="padding-top: 9px; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <!--[if mso]> + <table align="left" border="0" cellspacing="0" cellpadding="0" width="100%" style="width:100%;"> + <tr> + <![endif]--> <!--[if mso]> + <td valign="top" width="300" style="width:300px;"> + <![endif]--> + <table align="left" border="0" cellpadding="0" + cellspacing="0" + style="max-width: 100%; min-width: 100%; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;" + width="100%" class="mcnTextContentContainer"> + <tbody> + <tr> + + <td valign="top" class="mcnTextContent" + style="padding-top: 0; padding-right: 18px; padding-bottom: 9px; padding-left: 18px; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; word-break: break-word; color: #3d3935; font-family: 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 150%; text-align: left;"> + + <ul> + <li + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;" + ><a href="https://projects.eclipse.org/projects/technology.app4mc" + target="_blank" + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; color: #007C89; font-weight: normal; text-decoration: underline;" + >Eclipse APP4MC</a></li> + <li + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;" + ><a href="https://projects.eclipse.org/projects/iot.om2m" + target="_blank" + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; color: #007C89; font-weight: normal; text-decoration: underline;" + >Eclipse OM2M</a></li> + <li + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;" + ><a href="https://projects.eclipse.org/projects/iot.cyclonedds" + target="_blank" + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; color: #007C89; font-weight: normal; text-decoration: underline;" + >Eclipse Cyclone DDS</a></li> + <li + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;" + ><a href="https://projects.eclipse.org/projects/rt.jetty" + target="_blank" + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; color: #007C89; font-weight: normal; text-decoration: underline;" + >Eclipse Jetty</a></li> + <li + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;" + ><a href="https://projects.eclipse.org/projects/technology.justj" + target="_blank" + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; color: #007C89; font-weight: normal; text-decoration: underline;" + >Eclipse JustJ</a></li> + <li + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;" + ><a + href="https://projects.eclipse.org/projects/technology.passage" + target="_blank" + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; color: #007C89; font-weight: normal; text-decoration: underline;" + >Eclipse Passage</a></li> + </ul> + <p + style="margin: 10px 0; padding: 0; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; color: #3d3935; font-family: 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 150%; text-align: left;"> + <a + href="https://www.eclipse.org/projects/tools/reviews.php" + target="_blank" + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; color: #007C89; font-weight: normal; text-decoration: underline;">View + all the project releases!</a> + </p> + + </td> + </tr> + </tbody> + </table> <!--[if mso]> + </td> + <![endif]--> <!--[if mso]> + </tr> + </table> + <![endif]--> + </td> + </tr> + </tbody> + </table></td> + </tr> + </tbody> + </table> <!--[if (gte mso 9)|(IE)]> + </td> + <td align="center" valign="top" width="300" style="width:300px;"> + <![endif]--> + <table align="left" border="0" cellpadding="0" cellspacing="0" + width="300" class="columnWrapper" + style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <tbody> + <tr> + <td valign="top" class="columnContainer" + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"><table + border="0" cellpadding="0" cellspacing="0" width="100%" + class="mcnBoxedTextBlock" + style="min-width: 100%; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <!--[if gte mso 9]> + <table align="center" border="0" cellspacing="0" cellpadding="0" width="100%"> + <![endif]--> + <tbody class="mcnBoxedTextBlockOuter"> + <tr> + <td valign="top" class="mcnBoxedTextBlockInner" + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + + <!--[if gte mso 9]> + <td align="center" valign="top" "> + <![endif]--> + <table align="left" border="0" cellpadding="0" + cellspacing="0" width="100%" + style="min-width: 100%; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;" + class="mcnBoxedTextContentContainer"> + <tbody> + <tr> + + <td + style="padding-top: 9px; padding-left: 18px; padding-bottom: 9px; padding-right: 18px; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + + <table border="0" cellspacing="0" + class="mcnTextContentContainer" width="100%" + style="min-width: 100% !important; background-color: #404040; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <tbody> + <tr> + <td valign="top" class="mcnTextContent" + style="padding: 18px; color: #F2F2F2; font-family: Helvetica; font-size: 14px; font-weight: normal; text-align: center; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; word-break: break-word; line-height: 150%;"> + <h2 class="null" + style="display: block; margin: 0; padding: 0; color: #ffffff; font-family: 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 22px; font-style: normal; font-weight: bold; line-height: 125%; letter-spacing: normal; text-align: left;">Upcoming + Virtual Events</h2> + + </td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> + </table> <!--[if gte mso 9]> + </td> + <![endif]--> <!--[if gte mso 9]> + </tr> + </table> + <![endif]--> + </td> + </tr> + </tbody> + </table> + <table border="0" cellpadding="0" cellspacing="0" width="100%" + class="mcnTextBlock" + style="min-width: 100%; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <tbody class="mcnTextBlockOuter"> + <tr> + <td valign="top" class="mcnTextBlockInner" + style="padding-top: 9px; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <!--[if mso]> + <table align="left" border="0" cellspacing="0" cellpadding="0" width="100%" style="width:100%;"> + <tr> + <![endif]--> <!--[if mso]> + <td valign="top" width="300" style="width:300px;"> + <![endif]--> + <table align="left" border="0" cellpadding="0" + cellspacing="0" + style="max-width: 100%; min-width: 100%; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;" + width="100%" class="mcnTextContentContainer"> + <tbody> + <tr> + + <td valign="top" class="mcnTextContent" + style="padding-top: 0; padding-right: 18px; padding-bottom: 9px; padding-left: 18px; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; word-break: break-word; color: #3d3935; font-family: 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 150%; text-align: left;"> + + <p + style="margin: 10px 0; padding: 0; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; color: #3d3935; font-family: 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 150%; text-align: left;" + > + <a href="https://jakartaone.org/brazil2020/" target="_blank" + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; color: #007C89; font-weight: normal; text-decoration: underline;" + >JakartaOne Livestream Brazil</a> | August 29, 2020<br> <br> <a + href="https://opensource.org/StateOfTheSource" target="_blank" + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; color: #007C89; font-weight: normal; text-decoration: underline;" + >State of the Source</a> | September 9-11, 2020 + </p> + <p + style="margin: 10px 0; padding: 0; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; color: #3d3935; font-family: 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 150%; text-align: left;" + > + <a href="https://www.osdforum.org/" target="_blank" + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; color: #007C89; font-weight: normal; text-decoration: underline;" + >OSD Forum</a> | September 15, 2020 + </p> + <p + style="margin: 10px 0; padding: 0; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; color: #3d3935; font-family: 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 150%; text-align: left;" + > + <a href="https://events.eclipse.org/2020/sam-iot/" target="_blank" + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; color: #007C89; font-weight: normal; text-decoration: underline;" + >Eclipse SAM IoT 2020</a> | September 17-18, 2020<br> <br> <a + href="https://o4b.org/" target="_blank" + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; color: #007C89; font-weight: normal; text-decoration: underline;" + >The Open Source Business Forum</a> | October 7-8, 2020<br> <br> <a + href="https://jakartaone.org/2020/hispano/" target="_blank" + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; color: #007C89; font-weight: normal; text-decoration: underline;" + >Jakarta One in Spanish</a> | October 12, 2020 + </p> + <p + style="margin: 10px 0; padding: 0; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; color: #3d3935; font-family: 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 150%; text-align: left;" + > + <a href="https://www.eclipsecon.org/2020" target="_blank" + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; color: #007C89; font-weight: normal; text-decoration: underline;" + >EclipseCon 2020</a> | October 19-22, 2020<br> + + </p> + <p + style="margin: 10px 0; padding: 0; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; color: #3d3935; font-family: 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 150%; text-align: left;" + > + Do you know about an event relevant to the Eclipse community? + Submit your event to <a href="https://newsroom.eclipse.org/" + target="_blank" + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; color: #007C89; font-weight: normal; text-decoration: underline;" + >newsroom.eclipse.org</a>. + </p> + </td> + </tr> + </tbody> + </table> <!--[if mso]> + </td> + <![endif]--> <!--[if mso]> + </tr> + </table> + <![endif]--> + </td> + </tr> + </tbody> + </table></td> + </tr> + </tbody> + </table> <!--[if (gte mso 9)|(IE)]> + </td> + </tr> + </table> + <![endif]--> + </td> + </tr> + <tr> + <td valign="top" id="templateLowerBody" + style="background: #ffffff none no-repeat center/cover; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; background-color: #ffffff; background-image: none; background-repeat: no-repeat; background-position: center; background-size: cover; border-top: 0; border-bottom: 2px solid #EAEAEA; padding-top: 0; padding-bottom: 9px;"></td> + </tr> + <tr> + <td valign="top" id="templateFooter" + style="background: #3d3935 none no-repeat center/cover; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; background-color: #3d3935; background-image: none; background-repeat: no-repeat; background-position: center; background-size: cover; border-top: 0; border-bottom: 0; padding-top: 9px; padding-bottom: 9px;"><table + border="0" cellpadding="0" cellspacing="0" width="100%" + class="mcnImageBlock" + style="min-width: 100%; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <tbody class="mcnImageBlockOuter"> + <tr> + <td valign="top" + style="padding: 9px; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;" + class="mcnImageBlockInner"> + <table align="left" width="100%" border="0" cellpadding="0" + cellspacing="0" class="mcnImageContentContainer" + style="min-width: 100%; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <tbody> + <tr> + <td class="mcnImageContent" valign="top" + style="padding-right: 9px; padding-left: 9px; padding-top: 0; padding-bottom: 0; text-align: center; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + + + <img align="center" alt="" + src="https://mcusercontent.com/eaf9e1f06f194eadc66788a85/images/54993d58-f464-469b-b433-24729f44b06f.png" + width="186.12" + style="max-width: 1108px; padding-bottom: 0px; vertical-align: bottom; display: inline !important; border-radius: 0%; border: 0; height: auto; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic;" + class="mcnImage"> + + + </td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> + </table> + <table border="0" cellpadding="0" cellspacing="0" width="100%" + class="mcnFollowBlock" + style="min-width: 100%; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <tbody class="mcnFollowBlockOuter"> + <tr> + <td align="center" valign="top" + style="padding: 9px; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;" + class="mcnFollowBlockInner"> + <table border="0" cellpadding="0" cellspacing="0" width="100%" + class="mcnFollowContentContainer" + style="min-width: 100%; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <tbody> + <tr> + <td align="center" + style="padding-left: 9px; padding-right: 9px; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <table border="0" cellpadding="0" cellspacing="0" + width="100%" + style="min-width: 100%; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;" + class="mcnFollowContent"> + <tbody> + <tr> + <td align="center" valign="top" + style="padding-top: 9px; padding-right: 9px; padding-left: 9px; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <table align="center" border="0" cellpadding="0" + cellspacing="0" + style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <tbody> + <tr> + <td align="center" valign="top" + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <!--[if mso]> + <table align="center" border="0" cellspacing="0" cellpadding="0"> + <tr> + <![endif]--> <!--[if mso]> + <td align="center" valign="top"> + <![endif]--> + + + <table align="left" border="0" cellpadding="0" + cellspacing="0" + style="display: inline; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <tbody> + <tr> + <td valign="top" + style="padding-right: 10px; padding-bottom: 9px; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;" + class="mcnFollowContentItemContainer"> + <table border="0" cellpadding="0" + cellspacing="0" width="100%" + class="mcnFollowContentItem" + style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <tbody> + <tr> + <td align="left" valign="middle" + style="padding-top: 5px; padding-right: 10px; padding-bottom: 5px; padding-left: 9px; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <table align="left" border="0" + cellpadding="0" cellspacing="0" width="" + style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <tbody> + <tr> + + <td align="center" valign="middle" + width="24" class="mcnFollowIconContent" + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <a href="https://www.eclipse.org/" + target="_blank" + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"><img + src="https://cdn-images.mailchimp.com/icons/social-block-v2/outline-light-link-48.png" + alt="Website" + style="display: block; border: 0; height: auto; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic;" + height="24" width="24" class=""></a> + </td> + + + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> + </table> <!--[if mso]> + </td> + <![endif]--> <!--[if mso]> + <td align="center" valign="top"> + <![endif]--> + + + <table align="left" border="0" cellpadding="0" + cellspacing="0" + style="display: inline; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <tbody> + <tr> + <td valign="top" + style="padding-right: 10px; padding-bottom: 9px; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;" + class="mcnFollowContentItemContainer"> + <table border="0" cellpadding="0" + cellspacing="0" width="100%" + class="mcnFollowContentItem" + style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <tbody> + <tr> + <td align="left" valign="middle" + style="padding-top: 5px; padding-right: 10px; padding-bottom: 5px; padding-left: 9px; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <table align="left" border="0" + cellpadding="0" cellspacing="0" width="" + style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <tbody> + <tr> + + <td align="center" valign="middle" + width="24" class="mcnFollowIconContent" + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <a href="mailto:newsletter@eclipse.org" + target="_blank" + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"><img + src="https://cdn-images.mailchimp.com/icons/social-block-v2/outline-light-forwardtofriend-48.png" + alt="Email" + style="display: block; border: 0; height: auto; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic;" + height="24" width="24" class=""></a> + </td> + + + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> + </table> <!--[if mso]> + </td> + <![endif]--> <!--[if mso]> + <td align="center" valign="top"> + <![endif]--> + + + <table align="left" border="0" cellpadding="0" + cellspacing="0" + style="display: inline; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <tbody> + <tr> + <td valign="top" + style="padding-right: 10px; padding-bottom: 9px; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;" + class="mcnFollowContentItemContainer"> + <table border="0" cellpadding="0" + cellspacing="0" width="100%" + class="mcnFollowContentItem" + style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <tbody> + <tr> + <td align="left" valign="middle" + style="padding-top: 5px; padding-right: 10px; padding-bottom: 5px; padding-left: 9px; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <table align="left" border="0" + cellpadding="0" cellspacing="0" width="" + style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <tbody> + <tr> + + <td align="center" valign="middle" + width="24" class="mcnFollowIconContent" + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <a href="https://twitter.com/EclipseFdn" + target="_blank" + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"><img + src="https://cdn-images.mailchimp.com/icons/social-block-v2/outline-light-twitter-48.png" + alt="Twitter" + style="display: block; border: 0; height: auto; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic;" + height="24" width="24" class=""></a> + </td> + + + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> + </table> <!--[if mso]> + </td> + <![endif]--> <!--[if mso]> + <td align="center" valign="top"> + <![endif]--> + + + <table align="left" border="0" cellpadding="0" + cellspacing="0" + style="display: inline; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <tbody> + <tr> + <td valign="top" + style="padding-right: 10px; padding-bottom: 9px; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;" + class="mcnFollowContentItemContainer"> + <table border="0" cellpadding="0" + cellspacing="0" width="100%" + class="mcnFollowContentItem" + style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <tbody> + <tr> + <td align="left" valign="middle" + style="padding-top: 5px; padding-right: 10px; padding-bottom: 5px; padding-left: 9px; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <table align="left" border="0" + cellpadding="0" cellspacing="0" width="" + style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <tbody> + <tr> + + <td align="center" valign="middle" + width="24" class="mcnFollowIconContent" + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <a + href="https://www.facebook.com/eclipse.org" + target="_blank" + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"><img + src="https://cdn-images.mailchimp.com/icons/social-block-v2/outline-light-facebook-48.png" + alt="Facebook" + style="display: block; border: 0; height: auto; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic;" + height="24" width="24" class=""></a> + </td> + + + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> + </table> <!--[if mso]> + </td> + <![endif]--> <!--[if mso]> + <td align="center" valign="top"> + <![endif]--> + + + <table align="left" border="0" cellpadding="0" + cellspacing="0" + style="display: inline; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <tbody> + <tr> + <td valign="top" + style="padding-right: 10px; padding-bottom: 9px; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;" + class="mcnFollowContentItemContainer"> + <table border="0" cellpadding="0" + cellspacing="0" width="100%" + class="mcnFollowContentItem" + style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <tbody> + <tr> + <td align="left" valign="middle" + style="padding-top: 5px; padding-right: 10px; padding-bottom: 5px; padding-left: 9px; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <table align="left" border="0" + cellpadding="0" cellspacing="0" width="" + style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <tbody> + <tr> + + <td align="center" valign="middle" + width="24" class="mcnFollowIconContent" + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <a + href="https://www.youtube.com/user/EclipseFdn" + target="_blank" + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"><img + src="https://cdn-images.mailchimp.com/icons/social-block-v2/outline-light-youtube-48.png" + alt="YouTube" + style="display: block; border: 0; height: auto; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic;" + height="24" width="24" class=""></a> + </td> + + + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> + </table> <!--[if mso]> + </td> + <![endif]--> <!--[if mso]> + <td align="center" valign="top"> + <![endif]--> + + + <table align="left" border="0" cellpadding="0" + cellspacing="0" + style="display: inline; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <tbody> + <tr> + <td valign="top" + style="padding-right: 0; padding-bottom: 9px; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;" + class="mcnFollowContentItemContainer"> + <table border="0" cellpadding="0" + cellspacing="0" width="100%" + class="mcnFollowContentItem" + style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <tbody> + <tr> + <td align="left" valign="middle" + style="padding-top: 5px; padding-right: 10px; padding-bottom: 5px; padding-left: 9px; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <table align="left" border="0" + cellpadding="0" cellspacing="0" width="" + style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <tbody> + <tr> + + <td align="center" valign="middle" + width="24" class="mcnFollowIconContent" + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <a + href="https://www.linkedin.com/company/eclipse-foundation" + target="_blank" + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"><img + src="https://cdn-images.mailchimp.com/icons/social-block-v2/outline-light-linkedin-48.png" + alt="LinkedIn" + style="display: block; border: 0; height: auto; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic;" + height="24" width="24" class=""></a> + </td> + + + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> + </table> <!--[if mso]> + </td> + <![endif]--> <!--[if mso]> + </tr> + </table> + <![endif]--> + </td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> + </table> + + </td> + </tr> + </tbody> + </table> + <table border="0" cellpadding="0" cellspacing="0" width="100%" + class="mcnDividerBlock" + style="min-width: 100%; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; table-layout: fixed !important;"> + <tbody class="mcnDividerBlockOuter"> + <tr> + <td class="mcnDividerBlockInner" + style="min-width: 100%; padding: 10px 18px 25px; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <table class="mcnDividerContent" border="0" cellpadding="0" + cellspacing="0" width="100%" + style="min-width: 100%; border-top: 2px solid #EEEEEE; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <tbody> + <tr> + <td + style="mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <span></span> + </td> + </tr> + </tbody> + </table> <!-- + <td class="mcnDividerBlockInner" style="padding: 18px;"> + <hr class="mcnDividerContent" style="border-bottom-color:none; border-left-color:none; border-right-color:none; border-bottom-width:0; border-left-width:0; border-right-width:0; margin-top:0; margin-right:0; margin-bottom:0; margin-left:0;" /> +--> + </td> + </tr> + </tbody> + </table> + <table border="0" cellpadding="0" cellspacing="0" width="100%" + class="mcnTextBlock" + style="min-width: 100%; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <tbody class="mcnTextBlockOuter"> + <tr> + <td valign="top" class="mcnTextBlockInner" + style="padding-top: 9px; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"> + <!--[if mso]> + <table align="left" border="0" cellspacing="0" cellpadding="0" width="100%" style="width:100%;"> + <tr> + <![endif]--> <!--[if mso]> + <td valign="top" width="600" style="width:600px;"> + <![endif]--> + <table align="left" border="0" cellpadding="0" cellspacing="0" + style="max-width: 100%; min-width: 100%; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;" + width="100%" class="mcnTextContentContainer"> + <tbody> + <tr> + + <td valign="top" class="mcnTextContent" + style="padding: 0px 18px 9px; color: #FFFFFF; font-family: Roboto,& quot; Helvetica Neue&quot; , Helvetica , Arial, sans-serif; mso-line-height-rule: exactly; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; word-break: break-word; font-size: 12px; line-height: 150%; text-align: center;"> + + <span style="font-size: 12px"> + Eclipse Foundation · 2934 Baseline Road, Suite 202 · + Ottawa, ON K2H 1B2 · Canada + </span> + </td> + </tr> + </tbody> + </table> <!--[if mso]> + </td> + <![endif]--> <!--[if mso]> + </tr> + </table> + <![endif]--> + </td> + </tr> + </tbody> + </table></td> + </tr> + </tbody> +</table> \ No newline at end of file
diff --git a/eclipse_newsletter/2020/august/images/1_1.png b/eclipse_newsletter/2020/august/images/1_1.png new file mode 100644 index 0000000..b320fa4 --- /dev/null +++ b/eclipse_newsletter/2020/august/images/1_1.png Binary files differ
diff --git a/eclipse_newsletter/2020/august/images/2_1.png b/eclipse_newsletter/2020/august/images/2_1.png new file mode 100644 index 0000000..f30173c --- /dev/null +++ b/eclipse_newsletter/2020/august/images/2_1.png Binary files differ
diff --git a/eclipse_newsletter/2020/august/images/jean_francois.jpg b/eclipse_newsletter/2020/august/images/jean_francois.jpg new file mode 100644 index 0000000..515366d --- /dev/null +++ b/eclipse_newsletter/2020/august/images/jean_francois.jpg Binary files differ
diff --git a/eclipse_newsletter/2020/august/images/scott.jpg b/eclipse_newsletter/2020/august/images/scott.jpg new file mode 100644 index 0000000..a8443d1 --- /dev/null +++ b/eclipse_newsletter/2020/august/images/scott.jpg Binary files differ
diff --git a/eclipse_newsletter/2020/august/images/shabnam.png b/eclipse_newsletter/2020/august/images/shabnam.png new file mode 100644 index 0000000..ba89ffd --- /dev/null +++ b/eclipse_newsletter/2020/august/images/shabnam.png Binary files differ
diff --git a/eclipse_newsletter/2020/august/images/steve.jpg b/eclipse_newsletter/2020/august/images/steve.jpg new file mode 100644 index 0000000..76afc49 --- /dev/null +++ b/eclipse_newsletter/2020/august/images/steve.jpg Binary files differ
diff --git a/eclipse_newsletter/2020/august/index-mailchimp.php b/eclipse_newsletter/2020/august/index-mailchimp.php new file mode 100644 index 0000000..5163e96 --- /dev/null +++ b/eclipse_newsletter/2020/august/index-mailchimp.php
@@ -0,0 +1,71 @@ +<?php +/** + * Copyright (c) 2020 Eclipse Foundation. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * Contributors: + * Eric Poirier (Eclipse Foundation) - Initial implementation + * + * SPDX-License-Identifier: EPL-2.0 + */ +require_once ($_SERVER ['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php"); +$App = new App (); +$path = $App->getWWWPrefix(); +$path_to_index = $path . preg_replace('/index-mailchimp.php/u', "index.php", $_SERVER['REQUEST_URI']); +include '_variables.php'; + +// Override default variables for mailchip +$email_body_width = "600px"; +$col_1_img = "540px"; +$col_2_table = "260"; +$col_2_img = "260px"; + +?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> +<meta name="viewport" content="width=device-width" /> +<title><?php print $pageTitle; ?></title> + +<?php include '../../_includes/_index-css.php'; ?> + +<!-- + Outlook Conditional CSS + These two style blocks target Outlook 2007 & 2010 specifically, forcing + columns into a single vertical stack as on mobile clients. This is + primarily done to avoid the 'page break bug' and is optional. + More information here: +http://templates.mailchimp.com/development/css/outlook-conditional-css +--> +<!--[if mso 12]> + <style type="text/css"> + .flexibleContainer{display:block !important; width:100% !important;} + </style> +<![endif]--> +<!--[if mso 14]> + <style type="text/css"> + .flexibleContainer{display:block !important; width:100% !important;} + </style> +<![endif]--> + +</head> +<body> + <center> + <table border="0" cellpadding="0" cellspacing="0" height="100%" + width="100%" id="bodyTable"> + <tr> + <td align="center" valign="top" id="bodyCell"> + + <!-- EMAIL CONTAINER --> + <?php include 'content/en_index.php'; ?> + + </td> + </tr> + </table> + </center> +</body> +</html> \ No newline at end of file
diff --git a/eclipse_newsletter/2020/august/index.php b/eclipse_newsletter/2020/august/index.php new file mode 100644 index 0000000..5e8dbf0 --- /dev/null +++ b/eclipse_newsletter/2020/august/index.php
@@ -0,0 +1,22 @@ +<?php +/** + * Copyright (c) 2020 Eclipse Foundation. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * Contributors: + * Eric Poirier (Eclipse Foundation) - Initial implementation + * + * SPDX-License-Identifier: EPL-2.0 + */ + + require_once ($_SERVER ['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php"); + $App = new App (); + $Theme = $App->getThemeClass(); + $script_name = $App->getScriptName(); + + //Page specific settings (i.e. $pageTitle) can be found in _variable.php + require_once ('_variables.php'); + require_once ($_SERVER ['DOCUMENT_ROOT'] . "/community/eclipse_newsletter/_includes/_index.php"); \ No newline at end of file
diff --git a/eclipse_newsletter/assets/public/images/july_2020.png b/eclipse_newsletter/assets/public/images/july_2020.png new file mode 100644 index 0000000..d58c561 --- /dev/null +++ b/eclipse_newsletter/assets/public/images/july_2020.png Binary files differ
diff --git a/eclipse_newsletter/content/en_archives.php b/eclipse_newsletter/content/en_archives.php index 19f0532..e7066e6 100644 --- a/eclipse_newsletter/content/en_archives.php +++ b/eclipse_newsletter/content/en_archives.php
@@ -30,6 +30,20 @@ <div class="col-md-4 col-sm-6"> <span class="newsletter-archive-icons"> <i class="fa fa-calendar-o" aria-hidden="true"></i> + <span class="newsletter-archive-month">July</span> + </span> + </div> + <div class="col-md-20 col-sm-18"> + <p class="margin-top-10"><a + href="http://www.eclipse.org/community/eclipse_newsletter/2020/july/" + target="_blank">Research @ Eclipse: Industrial Automation</a></p> + </div> + </div> + + <div class="col-sm-12"> + <div class="col-md-4 col-sm-6"> + <span class="newsletter-archive-icons"> + <i class="fa fa-calendar-o" aria-hidden="true"></i> <span class="newsletter-archive-month">June</span> </span> </div> @@ -40,6 +54,9 @@ </div> </div> + </div> + <div class="row"> + <div class="col-sm-12"> <div class="col-md-4 col-sm-6"> <span class="newsletter-archive-icons"> @@ -67,6 +84,12 @@ target="_blank">IoT, Edge, and Digital Ledger Innovations</a></p> </div> </div> + + </div> + + + + <div class="row"> <div class="col-sm-12"> <div class="col-md-4 col-sm-6"> <span class="newsletter-archive-icons"> @@ -80,8 +103,6 @@ target="_blank">A New Era in Cloud Development Tools</a></p> </div> </div> - </div> - <div class="row"> <div class="col-sm-12"> <div class="col-md-4 col-sm-6">
diff --git a/eclipse_newsletter/newsletter-items.xml b/eclipse_newsletter/newsletter-items.xml index 37848ab..53526f8 100644 --- a/eclipse_newsletter/newsletter-items.xml +++ b/eclipse_newsletter/newsletter-items.xml
@@ -9,12 +9,12 @@ </sponsors_home_page> <featured_newsletters_title> - <title>New Research at Eclipse Foundation</title> + <title>A Jakarta EE Foundation for the Future</title> </featured_newsletters_title> <!-- Featured Newsletter Read More Button --> <featured_newsletters_readmore> - <link>/community/eclipse_newsletter/2020/july</link> + <link>/community/eclipse_newsletter/2020/august</link> <title>Read it now</title> </featured_newsletters_readmore> @@ -22,26 +22,26 @@ <!-- Featured Newsletter Articles --> <featured_newsletters> <item> - <title>Eclipse Arrowhead: A Framework for IoT and System of Systems Solutions</title> - <link>/community/eclipse_newsletter/2020/july/1.php</link> + <title>What You Need to Know About the Jakarta EE 9 General Availability Release</title> + <link>/community/eclipse_newsletter/2020/august/1.php</link> <description></description> <imageurl>assets/public/images/1.png</imageurl> </item> <item> - <title>FabOS: An Open, Distributed, Real-Time Capable, and Secure Operating System for Production</title> - <link>/community/eclipse_newsletter/2020/july/2.php</link> + <title>Secure JAX-RS APIs With Eclipse MicroProfile JSON Web Token</title> + <link>/community/eclipse_newsletter/2020/august/2.php</link> <description></description> <imageurl>assets/public/images/2.png</imageurl> </item> <item> - <title>RobMoSys: A Model-Driven Approach and Tools for Robotics Software Development</title> - <link>/community/eclipse_newsletter/2020/july/3.php</link> + <title>Opportunities to Improve the Jakarta EE Platform TCK</title> + <link>/community/eclipse_newsletter/2020/august/3.php</link> <description></description> <imageurl>assets/public/images/3.png</imageurl> </item> <item> <title>Industry-Grade Open Source Software for Industrial Automation</title> - <link>/community/eclipse_newsletter/2020/july/4.php</link> + <link>/community/eclipse_newsletter/2020/august/4.php</link> <description></description> <imageurl>assets/public/images/4.png</imageurl> </item> @@ -51,6 +51,12 @@ <!-- Recent Newsletter Articles --> <recent_newsletters> <item> + <title>Research @ Eclipse: Industrial Automation</title> + <link>/community/eclipse_newsletter/2020/july/</link> + <description>The Eclipse Foundation partners in research projects from various domains, including Internet of Things (IoT), modelling, cloud technologies, robotics, industrial automation, automotive, and many more.</description> + <imageurl>assets/public/images/july_2020.png</imageurl> + </item> + <item> <title>Eclipse IDE Evolution</title> <link>/community/eclipse_newsletter/2020/june/</link> <description>With the Eclipse IDE 2020-06 (4.16) simultaneous release just out, it’s the ideal time to highlight some of the new and noteworthy features in the release.</description> @@ -68,11 +74,6 @@ <description>The Eclipse Foundation’s community has had an amazing year! As 2019 ends, I wanted to say thank you to the many Eclipse committers, project leaders, and contributors who drive our community’s success.</description> <imageurl>assets/public/images/2020_april.png</imageurl> </item> - <item> - <title>A New Era in Cloud Development Tools</title> - <link>/community/eclipse_newsletter/2020/march/</link> - <description>When we announced the Eclipse Cloud Development Tools Working Group last fall, our Executive Director, Mike Milinkovich, noted in a blog post that he hadn’t seen an initiative...</description> - <imageurl>assets/public/images/march_2020.png</imageurl> - </item> + </recent_newsletters> </items> \ No newline at end of file