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