Skip to content

Commit c8cb506

Browse files
committed
Working group: Extract and display additional metadata
Extract deliverable, point of contact and discussion from the WG README. Extend the working group page to add these new metadata Improve the completed working group visualization and add link to the deliverable.
1 parent 600ead2 commit c8cb506

File tree

5 files changed

+144
-40
lines changed

5 files changed

+144
-40
lines changed

_data/wg.yaml

Lines changed: 38 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,37 @@
11
---
22
working-groups:
3+
- title: "Roq :: Quarkus SSG"
4+
board-url: "https://github.com/orgs/quarkiverse/projects/6"
5+
short-description: Allow Static Site Generation with Quarkus.
6+
readme: |
7+
<p>New initiative to allow Static Site Generation with Quarkus.</p>
8+
<p>Quarkus already provides most of the pieces to create great web applications (https://quarkus.io/guides/web).</p>
9+
<p>I recently added https://github.com/quarkiverse/quarkus-roq. It will allow generating a static website out of any Quarkus application (it starts the app, fetch all the configured pages and assets, generate a static website and stop), it already works but it is still very alpha.</p>
10+
<p>What's missing? we now need to incrementally add the toolkit to ease the process of creating static content through Quarkus:</p>
11+
<ul>
12+
<li>Static Data</li>
13+
<li>Markdown/Asciidoc and frontmatter</li>
14+
<li>SEO</li>
15+
<li>Image processing</li>
16+
<li>Easy to configure routing</li>
17+
</ul>
18+
<p>This will allow to develop the content using Quarkus dev-mode, and then generate for Github Pages or similar when it's ready.</p>
19+
<p>Bonus, everything added will benefit any &quot;non-static&quot; Quarkus app and any Static Quarkus app could also become non static.</p>
20+
<p>This effort is now tracked using a &quot;Working Group&quot; project: https://github.com/orgs/quarkiverse/projects/6</p>
21+
<p>This is a great opportunity to participate in fun effort and be involved with the Quarkus community, if anyone is interested in being a part of this, please reach out to me 🚀</p>
22+
<ul>
23+
<li>Point of contact: @ia3andy</li>
24+
<li>Discussion: https://github.com/quarkusio/quarkus/discussions/41309</li>
25+
<li>Deliverable: <a href="https://www.youtube.com/live/hrF1a5sKqBI">Quarkus Insight</a></li>
26+
</ul>
27+
status: complete
28+
completed: true
29+
last-activity: 2024-11-18
30+
last-update: |
31+
ROQ has been released! See https://www.youtube.com/live/hrF1a5sKqBI to see ROQ in action.
32+
deliverable: <a rel="nofollow" href="https://www.youtube.com/live/hrF1a5sKqBI">Quarkus Insight</a>
33+
point-of-contact: "@ia3andy"
34+
discussion: https://github.com/quarkusio/quarkus/discussions/41309
335
- title: "WebSocket Next"
436
board-url: "https://github.com/orgs/quarkusio/projects/26"
537
short-description: WebSocket-Next related tasks
@@ -8,6 +40,7 @@ working-groups:
840
<p>Recently, we delivered a new approach to dealing with WebSocket (both for the server and client). This was the first step. There are still a few areas to improve, such as documentation, security, observability, and testability. The goal of this focus group is to track these efforts.</p>
941
<ul>
1042
<li>Point of contact: @mkouba (@<strong>Martin Kouba</strong> on Zulip)</li>
43+
<li>Discussion: https://github.com/quarkusio/quarkus/discussions/38473</li>
1144
</ul>
1245
status: on track
1346
completed: false
@@ -21,6 +54,8 @@ working-groups:
2154
The CDI request context is only activated if needed: https://github.com/quarkusio/quarkus/pull/43915.
2255
2356
I hope that WS Next will be feature-complete at the time of 3.17 release.
57+
point-of-contact: "@mkouba (@<strong>Martin Kouba</strong> on Zulip)"
58+
discussion: https://github.com/quarkusio/quarkus/discussions/38473
2459
- title: "Enhanced TLS support"
2560
board-url: "https://github.com/orgs/quarkusio/projects/24"
2661
short-description: Track the progress around the new TLS configuration centralization and new features (like Let's Encrypt, Cert-Manager, and local experience...)
@@ -40,6 +75,9 @@ working-groups:
4075
This working group is complete!
4176
That does not mean that no work will be done around TLS, but what was defined in the initial scope of the working group has been completed.
4277
Enhancements and bug fixes will follow.
78+
deliverable: <a rel="nofollow" href="https://www.youtube.com/watch?v=VP7c9ftFwrQ">Quarkus Insight</a>
79+
point-of-contact: "@cescoffier (@<strong>Clement Escoffier</strong> on Zulip)"
80+
discussion: https://github.com/quarkusio/quarkus/discussions/41024
4381
- title: "Quarkus 3.15 LTS"
4482
board-url: "https://github.com/orgs/quarkusio/projects/28"
4583
short-description: This WG focuses on defining the issues we would like to have in the next-to-be LTS (Quarkus 3.14/3.15)
@@ -103,36 +141,6 @@ working-groups:
103141
104142
With more features to be added in future pull requests.
105143
The pull request is on hold due to some concerns raised by @ia3andy. A meeting has been scheduled to discuss those concerns.
106-
- title: "Roq :: Quarkus SSG"
107-
board-url: "https://github.com/orgs/quarkiverse/projects/6"
108-
short-description: Allow Static Site Generation with Quarkus.
109-
readme: |
110-
<p>New initiative to allow Static Site Generation with Quarkus.</p>
111-
<p>Quarkus already provides most of the pieces to create great web applications (https://quarkus.io/guides/web).</p>
112-
<p>I recently added https://github.com/quarkiverse/quarkus-roq. It will allow generating a static website out of any Quarkus application (it starts the app, fetch all the configured pages and assets, generate a static website and stop), it already works but it is still very alpha.</p>
113-
<p>What's missing? we now need to incrementally add the toolkit to ease the process of creating static content through Quarkus:</p>
114-
<ul>
115-
<li>Static Data</li>
116-
<li>Markdown/Asciidoc and frontmatter</li>
117-
<li>SEO</li>
118-
<li>Image processing</li>
119-
<li>Easy to configure routing</li>
120-
</ul>
121-
<p>This will allow to develop the content using Quarkus dev-mode, and then generate for Github Pages or similar when it's ready.</p>
122-
<p>Bonus, everything added will benefit any &quot;non-static&quot; Quarkus app and any Static Quarkus app could also become non static.</p>
123-
<p>This effort is now tracked using a &quot;Working Group&quot; project: https://github.com/orgs/quarkiverse/projects/6</p>
124-
<p>This is a great opportunity to participate in fun effort and be involved with the Quarkus community, if anyone is interested in being a part of this, please reach out to me 🚀</p>
125-
status: staled
126-
completed: false
127-
last-activity: 2024-10-30
128-
last-update: |
129-
0.0.3 has been released, it is the MVP version and allowed to publish the Roq blog: https://quarkiverse.io/quarkus-roq/posts/2024-08-29-welcome-to-roq/
130-
131-
From now on, we start adding features incrementally, documenting.
132-
133-
The target is to have 1.0.0 the 1 October 2024.
134-
135-
For 1.0 we need pagination, tags and SEO.
136144
- title: "Quarkus to the CommonHaus Foundation"
137145
board-url: "https://github.com/orgs/quarkusio/projects/38"
138146
short-description: Work needed around moving Quarkus to foundation and streamline open governance.

_includes/working-group-band.html

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,14 @@
1818
<p class="card-text"><span class="key">Status:</span>&nbsp;<span class="status {{ item.status | | replace: ' ', '-'}}">{{ item.status }}</span></p>
1919
<p class="card-text"><span class="key">Description:</span>&nbsp;<span class="short-description">{{ item.short-description }}</span></p>
2020
<p class="card-text"><span class="key">Last Activity:</span>&nbsp;<span class="last-activity">{{ item.last-activity | date: '%B %d, %Y' }} </span></p>
21+
{% if item.point-of-contact %}
22+
<p class="card-text"><span class="key">Point of Contact:</span>&nbsp;<span class="point-of-contact">{{ item.point-of-contact }}</span></p>
23+
{% endif %}
24+
{% if item.discussion %}
25+
<p class="card-text"><span class="key">Discussion:</span>&nbsp;<a class="discussion" href="{{ item.discussion }}">Link</a></p>
26+
{% endif %}
2127
</div>
22-
<div class="card-footer">
28+
<div class="card-footer">
2329
<a href="{{ item.board-url }}" class="float-end"> View the {{ item.title }} Board <i class="fa-solid fa-chevron-right"></i></a>
2430
</div>
2531
</div>
@@ -31,16 +37,27 @@ <h2>Completed working groups</h2>
3137
<p class="mt-0">
3238
These working groups have completed their work and are no longer active:
3339
</p>
34-
<ul>
35-
{% for item in site.data.wg.working-groups %}
40+
<div class="grid-wrapper working-groups-cards">
41+
{% for item in site.data.wg.working-groups %}
3642
{% if item.completed %}
37-
<li>
38-
<a href="{{ item.board-url }}">{{ item.title }} ({{ item.last-activity | date: '%B %d, %Y' }})</a>
39-
</li>
43+
<div class="card card-completed">
44+
<div class="card-header">
45+
<p class="card-title">{{ item.title }}</p>
46+
</div>
47+
<div class="card-body">
48+
<p class="card-text"><span class="key">Description:</span>&nbsp;<span class="short-description">{{ item.short-description }}</span></p>
49+
<p class="card-text"><span class="key">Completed on:</span>&nbsp;<span class="last-activity">{{ item.last-activity | date: '%B %d, %Y' }} </span></p>
50+
{% if item.deliverable %}
51+
<p class="card-text"><span class="key">Deliverable:</span>&nbsp;<span class="deliverable">{{ item.deliverable }}</span></p>
52+
{% endif %}
53+
</div>
54+
<div class="card-footer">
55+
<a href="{{ item.board-url }}" class="float-end"> View the {{ item.title }} Board <i class="fa-solid fa-chevron-right"></i></a>
56+
</div>
57+
</div>
4058
{% endif %}
4159
{% endfor %}
42-
</ul>
43-
60+
</div>
4461

4562
</div>
4663

_sass/layouts/working-groups.scss

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,11 @@
3232

3333
.card-body {
3434
padding: 1rem 0rem;
35-
height: 11rem;
35+
height: 15rem;
36+
}
37+
38+
.card-completed {
39+
background: WhiteSmoke;
3640
}
3741

3842
.card-footer {

working-groups/main.java

Lines changed: 67 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
//DEPS io.quarkus:quarkus-picocli
66
//DEPS io.quarkus:quarkus-smallrye-graphql-client
77
//DEPS io.quarkus:quarkus-qute
8-
//DEPS org.commonmark:commonmark:0.22.0
8+
//DEPS org.commonmark:commonmark:0.23.0
99
//DEPS io.quarkus:quarkus-config-yaml
1010
//FILES templates/=templates/*
1111
//FILES application.yaml
@@ -26,6 +26,7 @@
2626
import java.util.concurrent.ExecutionException;
2727

2828
import org.commonmark.node.Node;
29+
import org.commonmark.node.Paragraph;
2930
import org.commonmark.parser.Parser;
3031
import org.commonmark.renderer.html.HtmlRenderer;
3132
import org.eclipse.microprofile.config.inject.ConfigProperty;
@@ -198,6 +199,71 @@ public String getReadme() {
198199
return renderer.render(document);
199200
}
200201

202+
private static boolean isMetadata(String singular, String plural, String line) {
203+
var l = line.toLowerCase().trim();
204+
return l.startsWith("* " + singular.toLowerCase() + ":")
205+
|| l.startsWith("* " + plural.toLowerCase() + ":");
206+
}
207+
208+
public String getDeliverable() {
209+
String line = longDescription().lines()
210+
.filter(s -> isMetadata("Deliverable", "Deliverables", s))
211+
.findFirst()
212+
.orElse(null);
213+
214+
if (line != null) {
215+
var content = line.substring(line.indexOf(":") + 1).trim();
216+
Parser parser = Parser.builder().build();
217+
Node document = parser.parse(content);
218+
HtmlRenderer renderer = HtmlRenderer.builder()
219+
.omitSingleParagraphP(true)
220+
.escapeHtml(false)
221+
.sanitizeUrls(true)
222+
.build();
223+
return renderer.render(document);
224+
}
225+
226+
return null;
227+
}
228+
229+
public String getPointOfContact() {
230+
String line = longDescription().lines()
231+
.filter(s -> isMetadata("Point of contact", "Points of contact", s))
232+
.findFirst()
233+
.orElse(null);
234+
235+
if (line != null) {
236+
var content = line.substring(line.indexOf(":") + 1).trim();
237+
Parser parser = Parser.builder().build();
238+
Node document = parser.parse(content);
239+
HtmlRenderer renderer = HtmlRenderer.builder()
240+
.omitSingleParagraphP(true)
241+
.build();
242+
return renderer.render(document);
243+
}
244+
245+
return null;
246+
}
247+
248+
public String getDiscussionLink() {
249+
String line = longDescription().lines()
250+
.filter(s -> isMetadata("Discussion", "Discussions", s))
251+
.findFirst()
252+
.orElse(null);
253+
254+
if (line != null) {
255+
var content = line.substring(line.indexOf(":") + 1).trim();
256+
Parser parser = Parser.builder().build();
257+
Node document = parser.parse(content);
258+
HtmlRenderer renderer = HtmlRenderer.builder()
259+
.omitSingleParagraphP(true)
260+
.build();
261+
return renderer.render(document);
262+
}
263+
264+
return null;
265+
}
266+
201267
public String getIndentedReadme() {
202268
String readme = getReadme();
203269
return readme.replaceAll("\n", "\n ").trim();

working-groups/templates/wg.yaml.template

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,13 @@ working-groups:
1313
last-update: |
1414
{board.getIndentedLastUpdate().raw}
1515
{/if}
16+
{#if board.getDeliverable()}
17+
deliverable: {board.getDeliverable().raw}
18+
{/if}
19+
{#if board.getPointOfContact()}
20+
point-of-contact: "{board.getPointOfContact().raw}"
21+
{/if}
22+
{#if board.getDiscussionLink()}
23+
discussion: {board.getDiscussionLink().raw}
24+
{/if}
1625
{/for}

0 commit comments

Comments
 (0)