mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2025-07-07 15:55:00 +00:00
Update the website roadmap and other details
This commit is contained in:
parent
3b503ccde2
commit
d7a271f675
6 changed files with 154 additions and 121 deletions
|
@ -43,7 +43,10 @@ js = ["image-interaction.js", "video-embed.js"]
|
|||
<img src="https://static.graphite.rs/icons/discord__2.svg" alt="Discord" />
|
||||
</a>
|
||||
<a href="https://www.reddit.com/r/graphite/" target="_blank">
|
||||
<img src="https://static.graphite.rs/icons/reddit__2.svg" alt="Reddit" />
|
||||
<img src="https://static.graphite.rs/icons/reddit__3.svg" alt="Reddit" />
|
||||
</a>
|
||||
<a href="https://bsky.app/profile/graphiteeditor.bsky.social" target="_blank">
|
||||
<img src="https://static.graphite.rs/icons/bluesky.svg" alt="Bluesky" />
|
||||
</a>
|
||||
<a href="https://twitter.com/graphiteeditor" target="_blank">
|
||||
<img src="https://static.graphite.rs/icons/twitter.svg" alt="Twitter" />
|
||||
|
@ -141,7 +144,7 @@ js = ["image-interaction.js", "video-embed.js"]
|
|||
<div class="screenshot-description">
|
||||
|
||||
<p data-carousel-description class="active">
|
||||
<a href="https://editor.graphite.rs/#demo/painted-dreams"><em>Painted Dreams</em></a> — Made using nondestructive boolean operations and procedural dot patterns
|
||||
<a href="https://editor.graphite.rs/#demo/painted-dreams"><em>Painted Dreams</em></a> — Made using nondestructive boolean operations and procedural polka dot patterns
|
||||
</p>
|
||||
<p data-carousel-description>
|
||||
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
|
|||
<img class="atlas" style="--atlas-index: 14" src="https://static.graphite.rs/icons/icon-atlas-features__2.png" alt="" />
|
||||
<span>Digital Painting</span>
|
||||
</div>
|
||||
<div class="feature-icon">
|
||||
<img class="atlas" style="--atlas-index: 16" src="https://static.graphite.rs/icons/icon-atlas-features__2.png" alt="" />
|
||||
<span>VFX Compositing</span>
|
||||
</div>
|
||||
<div class="feature-icon">
|
||||
<img class="atlas" style="--atlas-index: 15" src="https://static.graphite.rs/icons/icon-atlas-features__2.png" alt="" />
|
||||
<span>Desktop Publishing</span>
|
||||
</div>
|
||||
<div class="feature-icon">
|
||||
<img class="atlas" style="--atlas-index: 16" src="https://static.graphite.rs/icons/icon-atlas-features__2.png" alt="" />
|
||||
<span>VFX Compositing</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
@ -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 <a href="https://support.google.com/chrome/answer/9658361" target="_blank">install it as a PWA</a>.
|
||||
Where's the download? Windows, Mac, and Linux apps should be available around the end of 2024. Until then, you can <a href="https://support.google.com/chrome/answer/9658361" target="_blank">install it as a PWA</a>.
|
||||
|
||||
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.
|
||||
|
||||
</div>
|
||||
|
||||
|
@ -311,7 +314,7 @@ Graphite is the first and only graphic design package built for procedural editi
|
|||
|
||||
<div class="block description">
|
||||
|
||||
<h1 class="feature-box-header balance-text">Explore more creative avenues</h1>
|
||||
<h1 class="feature-box-header balance-text">Explore creative possibilities</h1>
|
||||
|
||||
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:
|
||||
|
||||
<div class="feature-icons four-wide">
|
||||
<div class="feature-icon">
|
||||
|
@ -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.
|
||||
|
||||
<a href="https://github.com/sponsors/GraphiteEditor" class="button arrow">Donate</a>
|
||||
|
||||
|
@ -399,7 +402,7 @@ If you aren't paying for your free software, someone else is covering your share
|
|||
|
||||
<h1 class="feature-box-header">Stay in the loop</h1>
|
||||
|
||||
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.
|
||||
|
||||
<div class="newsletter-success">
|
||||
|
||||
|
@ -436,12 +439,16 @@ You'll receive your first newsletter email with the next major Graphite news.
|
|||
<span class="link not-uppercase arrow">Discord</span>
|
||||
</a>
|
||||
<a href="https://www.reddit.com/r/graphite/" target="_blank">
|
||||
<img src="https://static.graphite.rs/icons/reddit__2.svg" alt="Reddit" />
|
||||
<span class="link not-uppercase arrow">/r/Graphite</span>
|
||||
<img src="https://static.graphite.rs/icons/reddit__3.svg" alt="Reddit" />
|
||||
<span class="link not-uppercase arrow">Reddit</span>
|
||||
</a>
|
||||
<a href="https://bsky.app/profile/graphiteeditor.bsky.social" target="_blank">
|
||||
<img src="https://static.graphite.rs/icons/bluesky.svg" alt="Bluesky" />
|
||||
<span class="link not-uppercase arrow">Bluesky</span>
|
||||
</a>
|
||||
<a href="https://twitter.com/graphiteeditor" target="_blank">
|
||||
<img src="https://static.graphite.rs/icons/twitter.svg" alt="Twitter" />
|
||||
<span class="link not-uppercase arrow">@GraphiteEditor</span>
|
||||
<span class="link not-uppercase arrow">Twitter</span>
|
||||
</a>
|
||||
<a href="https://www.youtube.com/@GraphiteEditor" target="_blank">
|
||||
<img src="https://static.graphite.rs/icons/youtube.svg" alt="YouTube" />
|
||||
|
|
|
@ -139,28 +139,16 @@ Always on the bleeding edge and built to last— Graphite is written on a robust
|
|||
</div>
|
||||
<div class="feature-icon ongoing" title="Development Ongoing">
|
||||
<img class="atlas" style="--atlas-index: 0" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>Imaginate (Stable Diffusion node/tool)</span>
|
||||
<span>Imaginate tool</span>
|
||||
</div>
|
||||
<div class="feature-icon ongoing" title="Development Ongoing">
|
||||
<img class="atlas" style="--atlas-index: 14" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>Infinitely zoomable/panable content</span>
|
||||
</div>
|
||||
<div class="feature-icon ongoing" title="Development Ongoing">
|
||||
<img class="atlas" style="--atlas-index: 19" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>Raw photo processing</span>
|
||||
</div>
|
||||
<div class="feature-icon ongoing" title="Development Ongoing">
|
||||
<img class="atlas" style="--atlas-index: 12" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>GPU-accelerated raster rendering</span>
|
||||
</div>
|
||||
<div class="feature-icon ongoing" title="Development Ongoing">
|
||||
<img class="atlas" style="--atlas-index: 9" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>Graph data attribute spreadsheets</span>
|
||||
</div>
|
||||
<div class="feature-icon">
|
||||
<img class="atlas" style="--atlas-index: 41" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>Timeline with animation channels</span>
|
||||
</div>
|
||||
<div class="feature-icon">
|
||||
<img class="atlas" style="--atlas-index: 7" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>Lightweight desktop app (with <a target="_blank" href="https://tauri.app/">Tauri</a>)</span>
|
||||
|
@ -169,6 +157,10 @@ Always on the bleeding edge and built to last— Graphite is written on a robust
|
|||
<div class="feature-icon heading" title="Expected to begin February 2025" data-year="2025">
|
||||
<h3>— Alpha 4 —</h3>
|
||||
</div>
|
||||
<div class="feature-icon">
|
||||
<img class="atlas" style="--atlas-index: 9" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>Graph data attribute spreadsheets</span>
|
||||
</div>
|
||||
<div class="feature-icon">
|
||||
<img class="atlas" style="--atlas-index: 54" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>Local file browser for saving/loading</span>
|
||||
|
@ -178,33 +170,69 @@ Always on the bleeding edge and built to last— Graphite is written on a robust
|
|||
<span>Local fonts access</span>
|
||||
</div>
|
||||
<div class="feature-icon">
|
||||
<img class="atlas" style="--atlas-index: 57" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>Signed distance fields</span>
|
||||
</div>
|
||||
<div class="feature-icon">
|
||||
<img class="atlas" style="--atlas-index: 5" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>Brush tool rewrite</span>
|
||||
<img class="atlas" style="--atlas-index: 41" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>Timeline with animation channels</span>
|
||||
</div>
|
||||
<div class="feature-icon">
|
||||
<img class="atlas" style="--atlas-index: 56" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>Variable color swatches</span>
|
||||
</div>
|
||||
<div class="feature-icon">
|
||||
<img class="atlas" style="--atlas-index: 21" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>Select mode (marquee masking)</span>
|
||||
</div>
|
||||
<div class="feature-icon">
|
||||
<img class="atlas" style="--atlas-index: 52" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>Command palette and context menus</span>
|
||||
</div>
|
||||
<div class="feature-icon">
|
||||
<img class="atlas" style="--atlas-index: 19" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>Raw photo processing</span>
|
||||
</div>
|
||||
<div class="feature-icon">
|
||||
<img class="atlas" style="--atlas-index: 57" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>Signed distance fields</span>
|
||||
</div>
|
||||
<div class="feature-icon">
|
||||
<img class="atlas" style="--atlas-index: 43" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>Stylus and touch interaction</span>
|
||||
</div>
|
||||
<div class="feature-icon">
|
||||
<img class="atlas" style="--atlas-index: 5" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>Brush tool rewrite</span>
|
||||
</div>
|
||||
<div class="feature-icon">
|
||||
<img class="atlas" style="--atlas-index: 21" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>Select mode (marquee masking)</span>
|
||||
</div>
|
||||
<div class="feature-icon">
|
||||
<img class="atlas" style="--atlas-index: 24" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>Reconfigurable workspace panels</span>
|
||||
<span>Dockable workspace panels</span>
|
||||
</div>
|
||||
<div class="feature-icon">
|
||||
<img class="atlas" style="--atlas-index: 17" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>Stable document format</span>
|
||||
</div>
|
||||
<!-- Beta -->
|
||||
<div class="feature-icon heading">
|
||||
<h3>— Beta —</h3>
|
||||
</div>
|
||||
<div class="feature-icon">
|
||||
<img class="atlas" style="--atlas-index: 16" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>Code editor for custom nodes</span>
|
||||
</div>
|
||||
<div class="feature-icon">
|
||||
<img class="atlas" style="--atlas-index: 22" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>Frozen-in-time graph references</span>
|
||||
</div>
|
||||
<div class="feature-icon">
|
||||
<img class="atlas" style="--atlas-index: 49" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>AI nodes and tools (e.g. magic wand)</span>
|
||||
</div>
|
||||
<div class="feature-icon">
|
||||
<img class="atlas" style="--atlas-index: 48" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>NURBS and mesh vector formats</span>
|
||||
</div>
|
||||
<div class="feature-icon">
|
||||
<img class="atlas" style="--atlas-index: 25" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>Liquify and non-affine transforms</span>
|
||||
</div>
|
||||
<div class="feature-icon">
|
||||
<img class="atlas" style="--atlas-index: 4" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>Outliner panel (node graph tree view)</span>
|
||||
|
@ -213,26 +241,6 @@ Always on the bleeding edge and built to last— Graphite is written on a robust
|
|||
<img class="atlas" style="--atlas-index: 50" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>Shape builder tool</span>
|
||||
</div>
|
||||
<div class="feature-icon">
|
||||
<img class="atlas" style="--atlas-index: 28" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>Guide mode (construction geometry)</span>
|
||||
</div>
|
||||
<div class="feature-icon">
|
||||
<img class="atlas" style="--atlas-index: 49" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>AI nodes and tools (e.g. magic wand)</span>
|
||||
</div>
|
||||
<div class="feature-icon">
|
||||
<img class="atlas" style="--atlas-index: 15" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>Hosted compile/render server</span>
|
||||
</div>
|
||||
<div class="feature-icon">
|
||||
<img class="atlas" style="--atlas-index: 16" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>Code editor for custom nodes</span>
|
||||
</div>
|
||||
<!-- Beta -->
|
||||
<div class="feature-icon heading">
|
||||
<h3>— Beta —</h3>
|
||||
</div>
|
||||
<div class="feature-icon">
|
||||
<img class="atlas" style="--atlas-index: 23" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>Internationalization and accessibility</span>
|
||||
|
@ -241,21 +249,13 @@ Always on the bleeding edge and built to last— Graphite is written on a robust
|
|||
<img class="atlas" style="--atlas-index: 18" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>Document history management</span>
|
||||
</div>
|
||||
<div class="feature-icon">
|
||||
<img class="atlas" style="--atlas-index: 22" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>Frozen-in-time graph references</span>
|
||||
</div>
|
||||
<div class="feature-icon">
|
||||
<img class="atlas" style="--atlas-index: 27" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>Automation and batch processing</span>
|
||||
</div>
|
||||
<div class="feature-icon">
|
||||
<img class="atlas" style="--atlas-index: 48" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>NURBS and mesh vector formats</span>
|
||||
</div>
|
||||
<div class="feature-icon">
|
||||
<img class="atlas" style="--atlas-index: 25" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>Liquify and non-affine transforms</span>
|
||||
<img class="atlas" style="--atlas-index: 28" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>Construction geometry mode</span>
|
||||
</div>
|
||||
<div class="feature-icon">
|
||||
<img class="atlas" style="--atlas-index: 33" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
|
@ -313,6 +313,10 @@ Always on the bleeding edge and built to last— Graphite is written on a robust
|
|||
<img class="atlas" style="--atlas-index: 36" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>Distributed graph rendering</span>
|
||||
</div>
|
||||
<div class="feature-icon">
|
||||
<img class="atlas" style="--atlas-index: 15" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>Cloud rendering accelerator service</span>
|
||||
</div>
|
||||
<div class="feature-icon">
|
||||
<img class="atlas" style="--atlas-index: 37" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>Cloud document storage</span>
|
||||
|
@ -327,19 +331,15 @@ Always on the bleeding edge and built to last— Graphite is written on a robust
|
|||
</div>
|
||||
<div class="feature-icon">
|
||||
<img class="atlas" style="--atlas-index: 46" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>SVG animation authorship</span>
|
||||
<span>Animated SVG creation</span>
|
||||
</div>
|
||||
<div class="feature-icon">
|
||||
<img class="atlas" style="--atlas-index: 42" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>Live video compositing</span>
|
||||
</div>
|
||||
<div class="feature-icon">
|
||||
<img class="atlas" style="--atlas-index: 43" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>Pen and touch-only interaction</span>
|
||||
</div>
|
||||
<div class="feature-icon">
|
||||
<img class="atlas" style="--atlas-index: 44" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
<span>iPad app</span>
|
||||
<span>iPad app and keyboard-free controls</span>
|
||||
</div>
|
||||
<div class="feature-icon">
|
||||
<img class="atlas" style="--atlas-index: 47" src="https://static.graphite.rs/icons/icon-atlas-roadmap__3.png" alt="" />
|
||||
|
|
|
@ -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.
|
||||
|
||||
---
|
||||
|
||||
|
|
|
@ -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 <https://graphite.rs>.
|
||||
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 <a href="/contact">get in touch</a> by email to request clarification or permission.
|
||||
|
||||
|
|
|
@ -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)
|
||||
<!-- PDF import/export -->
|
||||
<!-- ONNX model embedding to run in WebGPU and native (Tauri) and server -->
|
||||
|
||||
<!--
|
||||
TODO: Add to the completed projects list after successful completion.
|
||||
|
||||
### Port LibRaw to Rust
|
||||
|
||||
*For Graphite to support editing photos from professional digital cameras, it needs a raw decoding/processing library.*
|
||||
|
||||
- **Needed Skills:** Rust, C++, binary format parsing
|
||||
- **Project Size:** Large *(GSoC: 350 hours)*
|
||||
- **Difficulty:** Hard
|
||||
- **Expected Outcomes:** Develop a Rust library that ports LibRaw 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.
|
||||
|
||||
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, while porting all useful functionality would be the best outcome.
|
||||
|
||||
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. LibRaw is a common C++ library that supports most camera brands and formats and has a compatible license. Since raw formats are rarely documented by camera manufacturers, porting LibRaw to Rust is the most practical approach.
|
||||
|
||||
This project involves diving into the LibRaw source code (~44,000 lines), understanding its architecture, and translating its pieces to idiomatic Rust. Because of Rust's differences from C++, this is not likely to be as simple as a 1:1 source code translation. The student should have strong familiarity with the two languages, experience exploring moderately large code bases, working with binary format parsing, and ideally some knowledge of color science.
|
||||
-->
|
||||
|
||||
### 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
|
||||
|
||||
<https://summerofcode.withgoogle.com/programs/2024/projects/gvbBoCpT>
|
||||
|
||||
*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.
|
||||
|
|
|
@ -305,6 +305,7 @@
|
|||
|
||||
&.submit {
|
||||
flex: 1 0 auto;
|
||||
min-width: 100%;
|
||||
|
||||
.button {
|
||||
text-align: center;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue