diff --git a/_extensions/area_table.py b/_extensions/area_table.py
new file mode 100644
index 0000000..a26fff8
--- /dev/null
+++ b/_extensions/area_table.py
@@ -0,0 +1,92 @@
+"""
+A directive for organization/areas.rst to render the area tables.
+"""
+
+from docutils import nodes
+from docutils.parsers.rst import Directive
+import re
+
+area_table_rows = ["Communication", "GitHub reviews", "GitHub labels", "Triage project"]
+
+channel_re = re.compile(r'#([\w-]+)')
+godot_team_re = re.compile(r'@godotengine/([\w-]+)')
+labels_re = re.compile(r'(.+?)')
+triage_re = re.compile(r'(.*?)')
+
+
+def transform_channels(match: re.Match):
+ old_value = match.group(1)
+ transformed = f'#{old_value}'
+ return transformed
+
+
+def transform_github_teams(match: re.Match):
+ old_value = match.group(1)
+ transformed = f'@godotengine/{old_value}'
+ return transformed
+
+
+def transform_github_labels(match: re.Match):
+ old_value = match.group(1)
+ transformed = f'{old_value} (issues, PRs)'
+ return transformed
+
+
+def transform_github_triage(match: re.Match):
+ number = match.group(1)
+ name = match.group(2)
+ transformed = f'{name}'
+ return transformed
+
+
+class TableDirective(Directive):
+ has_content = False
+ required_arguments = 0
+ optional_arguments = 0
+ final_argument_whitespace = False
+ option_spec = {column.lower().replace(" ", "_"): str for column in area_table_rows}
+
+ def run(self):
+ # Create a table node with the parsed header and data
+ table = nodes.table()
+ table.setdefault('classes', []).append("gdarea-table")
+ tgroup = nodes.tgroup(cols=2)
+ table += tgroup
+
+ # Set column specifications
+ tgroup += nodes.colspec(colwidth=2)
+ tgroup += nodes.colspec(colwidth=5)
+
+ # Create and add the table body
+ tbody = nodes.tbody()
+ tgroup += tbody
+ for column_title in area_table_rows:
+ row_text = self.options.get(column_title.lower().replace(" ", "_"), '')
+ if not row_text:
+ continue
+
+ body_row = nodes.row()
+
+ entry = nodes.entry()
+ entry.setdefault('classes', []).append("gdarea-table-header")
+ entry += nodes.paragraph(text=column_title)
+ body_row += entry
+
+ row_text = channel_re.sub(transform_channels, row_text)
+ row_text = godot_team_re.sub(transform_github_teams, row_text)
+ row_text = labels_re.sub(transform_github_labels, row_text)
+ row_text = triage_re.sub(transform_github_triage, row_text)
+
+ entry = nodes.entry()
+ paragraph = nodes.paragraph()
+ paragraph += nodes.raw('', row_text, format='html')
+ entry += paragraph
+ body_row += entry
+
+ tbody += body_row
+
+ return [table]
+
+
+def setup(app):
+ app.add_directive('gdareatable', TableDirective)
diff --git a/_static/css/custom.css b/_static/css/custom.css
index fd6aecc..ffe883c 100644
--- a/_static/css/custom.css
+++ b/_static/css/custom.css
@@ -1865,3 +1865,38 @@ p + .classref-constant {
border: 0px solid #7fbbe3;
background: var(--role-button-background-color);
}
+
+.rst-content table.docutils.gdarea-table {
+ background-color: var(--code-background-color);
+ border: 0;
+ border-left: 6px solid var(--code-border-color);
+ padding: 4px 10px;
+ width: 100%;
+ table-layout:fixed
+}
+
+.rst-content table.docutils.gdarea-table td.gdarea-table-header {
+ padding: 8px;
+ border-right:1px dashed var(--code-border-color);
+ text-align: left;
+ width:25%;
+}
+
+.rst-content table.docutils.gdarea-table td {
+ padding: 8px 0 8px 12px;
+ background-color: var(--code-background-color) !important;
+}
+
+.rst-content table.docutils.gdarea-table td.gdarea-table-header, .rst-content table.docutils.gdarea-table td {
+ border-bottom: 1px dashed var(--code-border-color);
+ border-collapse:collapse
+}
+
+.rst-content table.docutils.gdarea-table tr:last-of-type td, .rst-content table.docutils.gdarea-table tr:last-of-type td.gdarea-table-header {
+ border-bottom:0
+}
+
+.rst-content table.docutils.gdarea-table td.gdarea-table-header > p {
+ font-size: 1rem !important;
+ font-weight: bold;
+}
diff --git a/conf.py b/conf.py
index af13fbd..74f0191 100644
--- a/conf.py
+++ b/conf.py
@@ -11,12 +11,17 @@ version = '0.1.0'
# -- General configuration
+import sys
+import os
+sys.path.insert(0, os.path.abspath('./_extensions'))
+
extensions = [
"sphinx_tabs.tabs",
"notfound.extension",
"sphinxext.opengraph",
"sphinx_copybutton",
"sphinxcontrib.video",
+ "area_table",
]
intersphinx_mapping = {
diff --git a/organization/areas.rst b/organization/areas.rst
index 7af88e2..da31aca 100644
--- a/organization/areas.rst
+++ b/organization/areas.rst
@@ -8,15 +8,15 @@ This page lists these areas and explains their goals and how they're organized.
For each team or area there is a list of links and resources associated with them:
-* *Triage project*: links to the team triage project for the team.
-* *RocketChat channel*: links to the `RocketChat `__ channel for the team,
- joining this channel is the best way to get involved with the team.
-* *GitHub review*: opens a GitHub search for PRs that have a review request for the team.
+* **Communication**: links to the `RocketChat `__ channels for the team,
+ joining this channel is the best way get involved with a team.
+* **GitHub reviews**: opens a GitHub search for PRs that have a review request for the team.
Note that this *doesn’t* show PRs that have already been reviewed by that team,
any review comments at all, from any member of a specific team, will remove the request, so this is not always helpful.
-* *GitHub label*: lists any labels relevant to the team, and links to issues and PRs tagged with those tags.
+* **GitHub labels**: lists any labels relevant to the team, and links to issues and PRs tagged with those tags.
For more information about the different GitHub labels, please see the :ref:`doc_bug_triage_guidelines`.
Note that some GitHub labels aren’t neatly covered by trackers.
+* **Triage project**: links to the team triage project for the team.
You can find information about the teams on the `godot website `_, as well
as their `current priorities `_.
@@ -24,67 +24,75 @@ as their `current priorities `_.
2D
--
-* RocketChat channel: `#2d `__
-* GitHub review: `godotengine/2d-nodes `__
-* GitHub label: ``topic:2d`` · `issues `__ · `PRs `__
+.. gdareatable::
+ :communication: #2d
+ :github_reviews: @godotengine/2d-nodes
+ :github_labels: topic:2d
3D
--
-* GitHub review: `godotengine/3d-nodes `__
-* GitHub label: ``topic:3d`` · `issues `__ · `PRs `__
+.. gdareatable::
+ :github_reviews: @godotengine/3d-nodes
+ :github_labels: topic:3d
Animation
---------
Nodes and features for 2D and 3D animation and IK workflows.
-* Triage project: `Animation team Issue Triage `__
-* RocketChat channel: `#animation `__
-* GitHub review: `godotengine/animation `__
-* GitHub label: ``topic:animation`` · `issues `__ · `PRs `__
+.. gdareatable::
+ :communication: #animation
+ :github_reviews: @godotengine/animation
+ :github_labels: topic:animation
+ :triage_project: Animation issue triage
Audio
-----
All audio-related features, from low-level AudioServer and drivers to high-level nodes and effects.
-* Triage project: `Audio issue triage `__
-* RocketChat channel: `#audio `__
-* GitHub review: `godotengine/audio `__
-* GitHub label: ``topic:audio`` · `issues `__ · `PRs `__
+.. gdareatable::
+ :communication: #audio
+ :github_reviews: @godotengine/audio
+ :github_labels: topic:audio
+ :triage_project: Audio issue triage
Buildsystem
-----------
Tools and scripts that we use to compile and maintain Godot, both for development purpose (SCons, CI) and releases (official build containers).
-* Triage project: `Buildsystem issue triage `__
-* RocketChat channel: `#buildsystem `__
-* GitHub review: `godotengine/buildsystem `__
-* GitHub label: ``topic:buildsystem`` · `issues `__ · `PRs `__
+.. gdareatable::
+ :communication: #buildsystem
+ :github_reviews: @godotengine/buildsystem
+ :github_labels: topic:buildsystem
+ :triage_project: Buildsystem issue triage
Core
----
Low-level Core API: Object, Variant, templates, base nodes like Node, Viewport, etc. (everything under ``core`` and ``scene/main``).
-* Triage project: `Core issue triage `__
-* RocketChat channel: `#core `__
-* GitHub review: `godotengine/core `__
-* GitHub label: ``topic:core`` · `issues `__ · `PRs `__
+.. gdareatable::
+ :communication: #core
+ :github_reviews: @godotengine/core
+ :github_labels: topic:core
+ :triage_project: Core issue triage
Input
~~~~~
-* RocketChat channel: `#input `__
-* GitHub review: `godotengine/input `__
-* GitHub label: ``topic:input`` · `issues `__ · `PRs `__
+.. gdareatable::
+ :communication: #input
+ :github_reviews: @godotengine/input
+ :github_labels: topic:input
Demos
-----
-* RocketChat channel: `#demo-content `__
+.. gdareatable::
+ :communication: #demo-content
Documentation
-------------
@@ -93,121 +101,93 @@ Documentation for the engine and its systems.
Note that, while there is a dedicated documentation team, all other teams are expected to contribute to the documentation
for their area.
-* RocketChat channel: `#documentation `__
-* GitHub review: `godotengine/documentation `__
-* GitHub label: ``documentation`` · `issues `__ · `PRs `__
+.. gdareatable::
+ :communication: #documentation
+ :github_reviews: @godotengine/documentation
+ :github_labels: documentation
Editor
------
All things related to the editor, both tools and usability (editor).
-* Triage project: `Editor issue triage `__
-* RocketChat channels
- * `#editor `__
- * `#editor-design `__
-* GitHub review
- * `godotengine/2d-editor `__
- * `godotengine/3d-editor `__
- * `godotengine/debugger `__
- * `godotengine/docs `__
- * `godotengine/script-editor `__
- * `godotengine/usability `__
-* GitHub labels
- * ``topic:editor`` · `issues `__ · `PRs `__
- * ``topic:export`` · `issues `__ · `PRs `__
- * ``topic:plugin`` · `issues `__ · `PRs `__
+.. gdareatable::
+ :communication: #editor, #editor-design
+ :github_reviews: @godotengine/2d-editor, @godotengine/3d-editor, @godotengine/debugger, @godotengine/docs, @godotengine/script-editor, @godotengine/usability
+ :github_labels: topic:editor, topic:export, topic:plugin
+ :triage_project: Editor issue triage
GUI
---
Everything that inherits Control (everything under ``scene/gui``) and can be used to build Graphical User Interfaces (both game UI and editor tools).
-* Triage project: `GUI issue triage `__
-* RocketChat channel: `#gui `__
-* GitHub review: `godotengine/gui-nodes `__
-* GitHub label: ``topic:gui`` · `issues `__ · `PRs `__
+.. gdareatable::
+ :communication: #gui
+ :github_reviews: @godotengine/gui-nodes
+ :github_labels: topic:gui
+ :triage_project: GUI issue triage
Import
------
Asset import pipeline for 2D (textures) and 3D (scenes, models, animations, etc.).
-* Triage project: `Asset pipeline issue triage `__
-* RocketChat channel: `#asset-pipeline `__
-* GitHub review: `godotengine/import `__
-* GitHub label: ``topic:import`` · `issues `__ · `PRs `__
+.. gdareatable::
+ :communication: #asset-pipeline
+ :github_reviews: @godotengine/import
+ :github_labels: topic:import
+ :triage_project: Asset pipeline issue triage
Navigation
----------
-* Triage project: `Navigation issue triage `__
-* RocketChat channel: `#navigation `__
-* GitHub review: `godotengine/navigation `__
-* GitHub label: ``topic:navigation`` · `issues `__ · `PRs `__
+.. gdareatable::
+ :communication: #navigation
+ :github_reviews: @godotengine/navigation
+ :github_labels: topic:navigation
+ :triage_project: Navigation issue triage
Networking
----------
Networked multiplayer, RPCs and replication, HTTP/TCP/UDP/DNS, WebSockets, ENet, encryption.
-* Triage project: `Network issue triage `__
-* RocketChat channels
- * `#networking `__
- * `#voip `__
-* GitHub review: `godotengine/network `__
-* GitHub labels
- * ``topic:network`` · `issues `__ · `PRs `__
- * ``topic:multiplayer`` · `issues `__ · `PRs `__
+.. gdareatable::
+ :communication: #networking, #voip
+ :github_reviews: @godotengine/network
+ :github_labels: topic:network, topic:multiplayer
+ :triage_project: Network issue triage
Physics
-------
Physics servers and their implementation in 2D and 3D.
-* Triage project: `Physics issue triage `__
-* RocketChat channel: `#physics `__
-* GitHub review: `godotengine/physics `__
-* GitHub label: ``topic:physics`` · `issues `__ · `PRs `__
+.. gdareatable::
+ :communication: #physics
+ :github_reviews: @godotengine/physics
+ :github_labels: topic:physics
+ :triage_project: Physics issue triage
Platforms
---------
Platform specific layers that reside in ``platform``, with shared components (Unix, Win32, Apple, etc.) in ``drivers``.
-* Triage project: `Platforms issue triage `__
-* RocketChat channels
- * `#platforms `__
- * `#apple `__
- * `#android `__
- * `#web `__
-* GitHub review
- * `godotengine/android `__
- * `godotengine/ios `__
- * `godotengine/linux-bsd `__
- * `godotengine/macos `__
- * `godotengine/uwp `__
- * `godotengine/web `__
- * `godotengine/windows `__
-* GitHub labels
- * ``topic:platforms`` · `issues `__ · `PRs `__
- * ``platform:android`` · `issues `__ · `PRs `__
- * ``platform:ios`` · `issues `__ · `PRs `__
- * ``platform:linuxbsd`` · `issues `__ · `PRs `__
- * ``platform:macos`` · `issues `__ · `PRs `__
- * ``platform:uwp`` · `issues `__ · `PRs `__
- * ``platform:visionos`` · `issues `__ · `PRs `__
- * ``platform:web`` · `issues `__ · `PRs `__
- * ``platform:windows`` · `issues `__ · `PRs `__
+.. gdareatable::
+ :communication: #platforms, #apple, #android, #web
+ :github_reviews: @godotengine/android, @godotengine/ios, @godotengine/linux-bsd, @godotengine/macos, @godotengine/uwp, @godotengine/web, @godotengine/windows
+ :github_labels: topic:platforms, platform:android, platform:ios, platform:linuxbsd, platform:macos, platform:uwp, platform:visionos, platform:web, platform:windows
+ :triage_project: Platforms issue triage
Quality Assurance
-----------------
All things QA: unit/integration tests, static analysis, benchmarks, code style/quality, builds testing.
-* RocketChat channels
- * `#quality-assurance `__
- * `#benchmarks `__
+.. gdareatable::
+ :communication: #quality-assurance, #benchmarks
Tests
~~~~~
@@ -216,36 +196,34 @@ Tests for the engine and its systems.
Note that, while there is a dedicated tests team, all other teams are expected to contribute to the tests
for their area.
-* GitHub review: `godotengine/tests `__
-* GitHub label: ``topic:tests`` · `issues `__ · `PRs `__
+.. gdareatable::
+ :github_reviews: @godotengine/tests
+ :github_labels: topic:tests
Bugsquad / Issue triage
~~~~~~~~~~~~~~~~~~~~~~~
-* RocketChat channels
- * `#bugsquad `__
- * `#bugsquad-sprints `__
+.. gdareatable::
+ :communication: #bugsquad, #bugsquad-sprints
Rendering
---------
Rendering server and RenderingDevice implementations (Vulkan, OpenGL), as well as the actual rendering techniques implemented using those graphics APIs.
-* Triage project: `Rendering issue triage `__
-* RocketChat channel: `#rendering `__
-* GitHub review
- * `godotengine/rendering `__
- * `godotengine/shaders `__
-* GitHub labels
- * ``topic:rendering`` · `issues `__ · `PRs `__
- * ``topic:shaders`` · `issues `__ · `PRs `__
+.. gdareatable::
+ :communication: #rendering
+ :github_reviews: @godotengine/rendering, @godotengine/shaders
+ :github_labels: topic:rendering, topic:shaders
+ :triage_project: Rendering issue triage
VFX / Tech Art / Particles
~~~~~~~~~~~~~~~~~~~~~~~~~~
-* Triage project: `Particles issue triage `__
-* RocketChat channel: `#vfx-tech-art `__
-* GitHub label: ``topic:particles`` · `issues `__ · `PRs `__
+.. gdareatable::
+ :communication: #vfx-tech-art
+ :github_labels: topic:particles
+ :triage_project: Particles issue triage
Scripting
---------
@@ -258,28 +236,32 @@ GDExtension
GDExtension and godot-cpp.
-* Triage project: `GDExtension issue triage `__
-* RC Channel: `#gdextension `__
-* GitHub review: `godotengine/gdextension `__
-* GitHub label: ``topic:gdextension`` · `issues `__ · `PRs `__
+.. gdareatable::
+ :communication: #gdextension
+ :github_reviews: @godotengine/gdextension
+ :github_labels: topic:gdextension
+ :triage_project: GDExtension issue triage
GDScript
~~~~~~~~
GDScript language implementation.
-* Triage project: `GDScript issue triage `__
-* RocketChat channel: `#gdscript `__
-* GitHub review: `godotengine/gdscript `__
-* GitHub label: ``topic:gdscript`` · `issues `__ · `PRs `__
+.. gdareatable::
+ :communication: #gdscript
+ :github_reviews: @godotengine/gdscript
+ :github_labels: topic:gdscript
+ :triage_project: GDScript issue triage
+
C# / .NET / Mono
~~~~~~~~~~~~~~~~
-* Triage project: `Dotnet issue triage `__
-* RocketChat channel: `#dotnet `__
-* GitHub review: `godotengine/dotnet `__
-* GitHub label: ``topic:dotnet`` · `issues `__ · `PRs `__
+.. gdareatable::
+ :communication: #dotnet
+ :github_reviews: @godotengine/dotnet
+ :github_labels: topic:dotnet
+ :triage_project: Dotnet issue triage
Translation / i18n
------------------
@@ -288,29 +270,25 @@ Internationalization and localization team - building the infrastructure to make
If you work on Godot translations and contributors for your language have a dedicated communication channel for coordination, let us know so we can link it here.
-* RocketChat channels
- * `#translation `__
- * `#translation-de `__
- * `#translation-es `__
- * `#translation-fr `__
- * `#translation-it `__
-* GitHub label: ``i18n`` · `issues `__ · `PRs `__
+.. gdareatable::
+ :communication: #translation, #translation-de, #translation-es, #translation-fs, #translation-it
+ :github_labels: topic:i18n
Website
-------
Creating the website `godotengine.org `__ and `asset library `__ (and upcoming `asset store `_).
-* RocketChat channels
- * `#website `__
- * `#asset-store `__
+.. gdareatable::
+ :communication: #website, #asset-store
XR
--
Augmented (AR) and virtual reality (VR).
-* Triage project: `XR issue triage `__
-* RocketChat channel: `#xr `__
-* GitHub review: `godotengine/xr `__
-* GitHub label: ``topic:xr`` · `issues `__ · `PRs `__
+.. gdareatable::
+ :communication: #xr
+ :github_reviews: @godotengine/xr
+ :github_labels: topic:xr
+ :triage_project: XR issue triage