From d7a271f67595863835e80e58636fead9b1fe0a1d Mon Sep 17 00:00:00 2001 From: Keavon Chambers Date: Wed, 20 Nov 2024 10:31:25 -0800 Subject: [PATCH] Update the website roadmap and other details --- website/content/_index.md | 41 ++++--- website/content/features.md | 104 +++++++++--------- website/content/license.md | 2 +- website/content/logo.md | 10 +- .../guide/projects/student-projects.md | 101 ++++++++++------- website/sass/index.scss | 1 + 6 files changed, 146 insertions(+), 113 deletions(-) diff --git a/website/content/_index.md b/website/content/_index.md index e39f338582..b5c8f8e031 100644 --- a/website/content/_index.md +++ b/website/content/_index.md @@ -43,7 +43,10 @@ js = ["image-interaction.js", "video-embed.js"] Discord - Reddit + Reddit + + + Bluesky Twitter @@ -141,7 +144,7 @@ js = ["image-interaction.js", "video-embed.js"]

- Painted Dreams — Made using nondestructive boolean operations and procedural dot patterns + Painted Dreams — Made using nondestructive boolean operations and procedural polka dot patterns

Design for a magazine spread, a preview of the upcoming focus on desktop publishing @@ -201,14 +204,14 @@ Stop jumping between programs— upcoming tools will make Graphite a first-class Digital Painting

-
- - VFX Compositing -
Desktop Publishing
+
+ + VFX Compositing +
@@ -272,11 +275,11 @@ Presently, Graphite is a lightweight offline web app with features primarily ori ## Desktop-first and web-ready -Graphite is designed principally as a desktop-grade professional application that is also accessible in-browser for fast, casual usage. +Graphite is designed principally as a professional-grade desktop application that is also accessible in-browser for quick, casual usage. -Where's the download? Desktop apps for Windows, Mac, and Linux should be available later in 2024. Until then, you can install it as a PWA. +Where's the download? Windows, Mac, and Linux apps should be available around the end of 2024. Until then, you can install it as a PWA. -Developing and maintaining a native app on four platforms is a big task. To not compromise on the optimal desktop experience—which takes longer to do the right way—priorities called for initially supporting just web, the one platform that stays up-to-date and reaches all devices. +Developing and maintaining a native app on so many platforms is a big task. A fast, sloppy approach wouldn't cut it, but engineering the right tech takes time. That's why first supporting just web, the one platform that stays up-to-date and reaches all devices, was the initial priority. Once it's ready to shine, Graphite's code architecture is structured to deliver native performance for your graphically intensive workloads on desktop platforms and very low overhead on the web thanks to WebAssembly and WebGPU, new high-performance browser technologies. @@ -296,7 +299,7 @@ Once it's ready to shine, Graphite's code architecture is structured to deliver --- -Graphite is the first and only graphic design package built for procedural editing — where everything is nondestructive. +Graphite is the first and only graphic design package built for procedural editing — where everything you make is nondestructive. @@ -311,7 +314,7 @@ Graphite is the first and only graphic design package built for procedural editi
-

Explore more creative avenues

+

Explore creative possibilities

Save hours on tedious alterations and make better creative choices. Graphite lets you iterate rapidly by adjusting node parameters instead of individual elements. @@ -350,7 +353,7 @@ Blend across color schemes. Morph shapes before they're scattered around the can ## Geared for generative pipelines -Graphite's representation of artwork as a node graph lets you customize, compose, reuse, share, and automate your own content workflows: +Graphite's representation of artwork as a node graph lets you customize, compose, reuse, share, and automate your content workflows:
@@ -380,7 +383,7 @@ Graphite's representation of artwork as a node graph lets you customize, compose ## Support the mission -If you aren't paying for your free software, someone else is covering your share. Chip in so Graphite remains sustainable and independent. +If you aren't paying for your free software, someone else is covering your share. Chip in so Graphite can remain sustainable and independent. Donate @@ -399,7 +402,7 @@ If you aren't paying for your free software, someone else is covering your share

Stay in the loop

-Subscribe to the newsletter for quarterly updates on major development progress. And follow along—or join the conversation—on social media. +Subscribe to the newsletter for quarterly updates on major development progress. And follow along, or join the conversation, on social media.
- Imaginate (Stable Diffusion node/tool) + Imaginate tool
Infinitely zoomable/panable content
-
- - Raw photo processing -
GPU-accelerated raster rendering
-
- - Graph data attribute spreadsheets -
-
- - Timeline with animation channels -
Lightweight desktop app (with Tauri) @@ -169,6 +157,10 @@ Always on the bleeding edge and built to last— Graphite is written on a robust

— Alpha 4 —

+
+ + Graph data attribute spreadsheets +
Local file browser for saving/loading @@ -177,61 +169,77 @@ Always on the bleeding edge and built to last— Graphite is written on a robust Local fonts access
+
+ + Timeline with animation channels +
+
+ + Variable color swatches +
+
+ + Command palette and context menus +
+
+ + Raw photo processing +
Signed distance fields
- - Brush tool rewrite + + Stylus and touch interaction
- - Variable color swatches + + Brush tool rewrite
Select mode (marquee masking)
-
- - Command palette and context menus -
- Reconfigurable workspace panels + Dockable workspace panels
Stable document format
-
- - Outliner panel (node graph tree view) + +
+

— Beta —

- - Shape builder tool + + Code editor for custom nodes
- - Guide mode (construction geometry) + + Frozen-in-time graph references
AI nodes and tools (e.g. magic wand)
- - Hosted compile/render server + + NURBS and mesh vector formats
- - Code editor for custom nodes + + Liquify and non-affine transforms
- -
-

— Beta —

+
+ + Outliner panel (node graph tree view) +
+
+ + Shape builder tool
@@ -241,21 +249,13 @@ Always on the bleeding edge and built to last— Graphite is written on a robust Document history management
-
- - Frozen-in-time graph references -
Automation and batch processing
- - NURBS and mesh vector formats -
-
- - Liquify and non-affine transforms + + Construction geometry mode
@@ -313,6 +313,10 @@ Always on the bleeding edge and built to last— Graphite is written on a robust Distributed graph rendering
+
+ + Cloud rendering accelerator service +
Cloud document storage @@ -327,19 +331,15 @@ Always on the bleeding edge and built to last— Graphite is written on a robust
- SVG animation authorship + Animated SVG creation
Live video compositing
-
- - Pen and touch-only interaction -
- iPad app + iPad app and keyboard-free controls
diff --git a/website/content/license.md b/website/content/license.md index a4b4b0874b..c3f777e8a3 100644 --- a/website/content/license.md +++ b/website/content/license.md @@ -13,7 +13,7 @@ Graphite is open source software built by the community. The application is free The source code [available on GitHub](https://github.com/GraphiteEditor/Graphite) (including the Graphite editor application, libraries, and other software materials) is provided under the Apache 2.0 license posted below, unless otherwise noted within the repository. -Visual assets, including but not limited to logos, icons, SVG code, branding imagery, and sample artwork are excluded from this license and held under copyright by their respective owners. Learn about the [Graphite brand](/logo) for more information. +Visual assets, including but not limited to brand graphics, logos, fonts, icon sets, SVG data, and sample artworks are excluded from this code license and held under copyright by their respective owners. Derivative works must substitute these assets before distributing modified releases of the software. This protects the integrity of the [brand](/logo) and encourages the community to [contribute](/volunteer) back to the official project instead of fragmenting the ecosystem. --- diff --git a/website/content/logo.md b/website/content/logo.md index b3d919d041..fc515577e0 100644 --- a/website/content/logo.md +++ b/website/content/logo.md @@ -14,20 +14,20 @@ css = ["logo.css"] Graphite's logo is represented by the end of a pencil, drawing a sketch mark, that is protruding from a hexagon. -The pencil and its streak, composed of the substance graphite, signifies the software's name and its role as a drawing tool and versatile art medium. +The pencil and its streak, composed of graphite (the substance), signifies the software's name and its role as a drawing tool and versatile art medium. The hexagon represents one unit in the lattice grid chemical structure of graphene. The angled line is a double bond. This references the Graphene node engine which powers the Graphite editor. The lattice grid also resembles the nodes and edges of a mathematical graph, referencing the node graph that is fundamental to both the Graphene engine and Graphite editor. The first syllable of both names also alludes to that central node graph. ## Usage policy -The Graphite logo is made available for community use. While the software is free and open source, the brand identity is more restrictive. Please be respectful of the Graphite brand by reviewing the usage policy. +The Graphite logo is made available for community use, with some limitations. While the software is free and open source, the brand identity is more restrictive. Please be respectful of the Graphite brand by reviewing the usage policy. -Please be advised that the logo is not part of the software's Apache 2.0 license. Users of the logo must adhere to the usage policy: +Please be advised that the logo is not part of the software's Apache 2.0 [license](/license). Users of the logo must adhere to the usage policy: 1. Do not use the Graphite logo as your own. It should not be used as your primary, or most visually prominent, branding. Your usage should not imply that it's a part of the official Graphite project, nor that it's endorsed or affiliated. 2. Only use the logo when talking about, describing, referencing, or crediting the official Graphite project or software. If used as a hyperlink, it should point only to . -3. Do not modify the logo. The solid-colored version may only be recolored with another solid color if doing so is necessary for visual consistency when presented alongside other logos of the same color. Sufficient blank space should be preserved around the logo so it does not compete with impinging design elements. -4. Commercial use of the logo (for example, merchandise sales) is not allowed without permission. +3. Do not modify the logo. The solid-colored version may only be recolored with another substitute solid color if doing so is necessary for visual consistency when presented alongside other logos of the same color. Sufficient blank space should be preserved around the logo so it does not compete with impinging design elements. +4. Commercial use of the logo (for example, merchandise sales) is not allowed without express written permission. If in doubt, please get in touch by email to request clarification or permission. diff --git a/website/content/volunteer/guide/projects/student-projects.md b/website/content/volunteer/guide/projects/student-projects.md index 34bc7255cf..8651246b5e 100644 --- a/website/content/volunteer/guide/projects/student-projects.md +++ b/website/content/volunteer/guide/projects/student-projects.md @@ -33,36 +33,6 @@ When it comes to writing the proposal, which you will submit to the GSoC applica ## Project idea list -In addition to the detailed projects below, here are some loose ideas that may be developed into full project options before the next GSoC application period: -- Color management for HDR/WCG -- Sophisticated text layout and advanced typography features -- Traditional brush engine -- [Procedural brush engine](https://github.com/Keavon/Brush-Nodes) -- Image processing algorithms for photography -- Snapping system overhaul -- [Node equivalence rewriting](https://github.com/GraphiteEditor/Graphite/issues/2021) - - - - - ### Marquee selection masking *Graphite's raster editing features requires the implementation of Select mode, where users can draw a mask which becomes a marquee (marching ants) selection.* @@ -191,46 +161,101 @@ If none of the projects above suit your interests or experience, we are very ope As is the case with all projects, please discuss this with us on Discord to flesh out your idea. Unsolicited proposals that have not been discussed with us will almost certainly be rejected. +### More ideas for 2025 + +In addition to the detailed projects above, here are some loose ideas that may be expanded into full project descriptions before the 2025 GSoC application period opens: + +- Sophisticated text layout and advanced typography features +- PDF import/export? (Scope and viability depend on the state of available libraries) +- Traditional brush engine +- [Procedural brush engine](https://github.com/Keavon/Brush-Nodes) +- Color management for HDR/WCG (requires good understanding of color science) +- Image processing algorithms for photography +- Snapping system overhaul +- Photo processing graphics algorithms +- [Node equivalence rewriting](https://github.com/GraphiteEditor/Graphite/issues/2021) + ## Successful past projects -### 2024: Node graph auto layout +### 2024: Interactive node graph auto-layout + +*Graphite's graph UI needs a system to automatically arrange layers and nodes given incremental changes to the graph contents.* Affiliation: GSoC 2024 Duration: 3 months Student: Adam Gerhant - - -*Graphite's graph UI needs a system to automatically arrange layers and nodes given incremental changes to the graph contents.* +- [Program project listing](https://summerofcode.withgoogle.com/programs/2024/projects/gvbBoCpT) +- [Report and weekly updates](https://github.com/GraphiteEditor/Graphite/discussions/1769) **Outcomes:** A system that manages the placement of nodes based on a set of layout constraint rules and incremental updates to the graph topology. It should run efficiently, even with large graphs. It should be robust enough to handle a variety of graph topologies and user interactions, producing organized, useful, and stable layouts. -The Graphite concept is built around a node graph representation of layer stacks, while tools automatically generate and manipulate nodes. When a layer or node is inserted, deleted, moved, or referenced, the graph needs to be reorganized to maintain a clear and useful layout. Users can also interactively expand and collapse groups of nodes which occupies or frees up graph real estate. +**Background:** The Graphite concept is built around a node graph representation of layer stacks, while tools automatically generate and manipulate nodes. When a layer or node is inserted, deleted, moved, or referenced, the graph needs to be reorganized to maintain a clear and useful layout. Users can also interactively expand and collapse groups of nodes which occupies or frees up graph real estate. Unlike other node editors that are centered around manual graph editing, where users are fully in charge of node placements within one large node network, Graphite's node UI is more oriented towards automatic layout management and viewing just parts of the graph at one time. This means the shown graph topology is constantly changing and the layout system needs to cooperatively organize the graph in concert with user actions. While general graph layout algorithms are complex and struggle to produce good results in other node editors, Graphite's graph topology is more constrained and predictable, which makes it possible to design a layout system that can produce good results. Nodes tend to be organized into rows, and layers into columns. This turns the problem into more of a constraint-based, axis-aligned packing problem. +### 2024: Rendering Performance infrastructure improvements + +*Graphite performance is bottlenecked by limitations in the new node graph rendering architecture that needs improvements.* + +Affiliation: GSoC 2024 +Duration: 4 months +Student: Dennis Kobert + +- [Program project listing](https://summerofcode.withgoogle.com/programs/2024/projects/v5z2Psnc) +- [Report and weekly updates](https://github.com/GraphiteEditor/Graphite/discussions/1773) + +**Outcomes:** A holistic, metrics-driven focus on fixing the many unoptimized areas of Graphite's node graph compilation, execution, and rendering systems. Integration of Vello as an integrated rendering backend. A significant improvement in the performance of the editor, especially in the node graph, and a more stable and predictable performance profile. Benchmarking and profiling tools to measure and visualize performance improvements and regressions. + +**Background:** Graphite's node graph system is the backbone of the editor, but it has many performance problems that need to be addressed because the system is relatively immature and performance-impacting shortcuts were taken during its initial development. This project is all about making the node graph system more robust and optimized, which will have a direct impact on the user experience and the editor's overall performance. By the end of the project, the editor should finally feel usable in the majority of user workflows. Vello should be enabled as an alternate render engine that will fully replace the existing SVG-based one in the future, once browser support arrives across major platforms. + +### 2024: Raw photograph decoding in Rust + +*For Graphite to support editing photos from professional digital cameras, it needs a raw decoding/processing library.* + +Affiliation: GSoC 2024 +Duration: 5 months +Student: Elbert Ronnie + +- [Program project listing](https://summerofcode.withgoogle.com/programs/2024/projects/2uiwOfz8) +- [Report and weekly updates](https://github.com/GraphiteEditor/Graphite/discussions/1771) +- [Rawkit library](https://crates.io/crates/rawkit) + +**Outcomes:** A Rust library that implements raw photo decoding functionality to native Rust. A clean, well-structured code base and API. At a minimum, demonstrate the successful end-to-end decoding, debayering, and color space handling of Sony ARW format photos in Graphite. Publish the library to crates.io. + +**Background:** For Graphite to work as a photo editing app, it needs to import raw photos. These contain compressed sensor imagery and metadata in a variety of formats. Sony ARW is the first target and additional camera brands are stretch goals. Graphite needs a library written in pure Rust with a suitable (non-GPL) license, which does not currently exist in the ecosystem, so we need to create one ourselves. + ### 2023: Bezier-rs library +*Graphite's vector editing features require the implementation of Bezier curve and path manipulation computational geometry algorithms.* + Affiliation: University of Waterloo, Ontario, Canada Duration: 9 months Students: Hannah Li, Rob Nadal, Thomas Cheng, Linda Zheng, Jackie Chen -The student group designed an API for representing and manipulating Bezier curves and paths as a standalone Rust library which was [published to crates.io](https://crates.io/crates/bezier-rs). It now serves as the underlying vector data format used in Graphite, and acts as a testbed for new computational geometry algorithms. The team also built an [interactive web demo catalog](/libraries/bezier-rs/) to showcase many of the algorithms, which are also handily embedded in the library's [documentation](https://docs.rs/bezier-rs/latest/bezier_rs/). +- [Bezier-rs library](https://crates.io/crates/bezier-rs) +- [Interactive web demo](/libraries/bezier-rs/) + +**Outcomes:** The student group designed an API for representing and manipulating Bezier curves and paths as a standalone Rust library which was published to crates.io. It now serves as the underlying vector data format used in Graphite, and acts as a testbed for new computational geometry algorithms. The team also built an interactive web demo catalog to showcase many of the algorithms, which are also handily embedded in the library's [documentation](https://docs.rs/bezier-rs/latest/bezier_rs/). ### 2022: Backend layout system +*Graphite's UI needs a system to define and manage layouts for widgets from the backend.* + Affiliation: California Polytechnic State University, San Luis Obispo, USA Duration: 3 months Student: Max Fisher -The student designed and implemented a new system across the editor's frontend and backend which made it possible to define and manage layouts for widgets from the backend and receive input data from those widgets. Previously, all layouts were statically defined in the frontend and extensive plumbing was required to pass data back and forth. +**Outcomes:** The student designed and implemented a new system across the editor's frontend and backend which made it possible to define and manage layouts for widgets from the backend and receive input data from those widgets. Previously, all layouts were statically defined in the frontend and extensive plumbing was required to pass data back and forth. ### 2022: Path boolean operations +*Graphite's vector editing features require the implementation of boolean operations on paths, such as union, intersection, and difference.* + Affiliation: California Polytechnic State University, San Luis Obispo, USA Duration: 3 months Student: Caleb Dennis -The student devised and prototyped algorithms for performing boolean operations on paths, such as union, intersection, and difference. These were used as a stopgap during 2022 and 2023 to provide users with a rudimentary boolean operation feature set. +**Outcomes:** The student devised and prototyped algorithms for performing boolean operations on paths, such as union, intersection, and difference. These were used as a stopgap during 2022 and 2023 to provide users with a rudimentary boolean operation feature set. diff --git a/website/sass/index.scss b/website/sass/index.scss index 65880720b9..1a2cf62575 100644 --- a/website/sass/index.scss +++ b/website/sass/index.scss @@ -305,6 +305,7 @@ &.submit { flex: 1 0 auto; + min-width: 100%; .button { text-align: center;