Update website and add student project info

This commit is contained in:
Keavon Chambers
2024-02-06 09:22:26 -08:00
parent 12e16b9a4e
commit 9edd9233db
13 changed files with 234 additions and 109 deletions
@@ -0,0 +1,30 @@
+++
title = "Projects"
template = "book.html"
page_template = "book.html"
[extra]
order = 3 # Chapter number
+++
Graphite is built from a number of separate projects, each with a distinct focus. New developers may choose to specialize in one or more area without having to attain a working knowledge of the entire codebase. This chapter details each project's purpose, what knowledge or background is best suited for getting involved with it, and how to begin making useful contributions. Opportunities also exist for contributing to specific self-contained sub-projects for students interested in completing a Google Summer of Code or other internship program, a university capstone project, or another similar endeavor.
## Frontend
The frontend is the interface for Graphite which users see and interact with. It is built using web technologies with TypeScript, Svelte, and SCSS. The frontend's philosophy is to be as lightweight and minimal as possible. It acts as the entry point for user input and quickly hands off its work to the WebAssembly editor backend via its Wasm wrapper API. That API is written in Rust but has TypeScript bindings generated by the wasm-bindgen tooling that is part of the Vite-based build chain. The frontend is built of many components that recursively form the window, panels, and widgets that make up the user interface.
## Editor
The editor is the core of the Graphite application, and it's where all the business logic occurs for the tooling and user interaction. It is written in Rust and compiled to WebAssembly, and at its heart is the message system [described here](../codebase-overview/code-structure#the-message-system).
## Graphene
Graphene is the node graph engine which manages and renders the documents. It is itself a programming language, where Graphene programs are compiled while being edited live by the user, and where executing the program renders the document.
## Libraries
Graphite maintains several Rust libraries that are published to crates.io for use by other developers, in addition to internal use by Graphite itself.
### Bezier-rs
Bezier-rs is a computational geometry library. It provides a rich selection of types and functions for working with Bézier segments and paths. There is also an [interactive demo](/libraries/bezier-rs/) gallery. This was initially developed as a successful [student project](./student-projects). Contribution opportunities include optimization, code cleanup and refactoring, and implementing new algorithms.
@@ -0,0 +1,77 @@
+++
title = "Student projects"
[extra]
order = 1 # Page number after chapter intro
+++
Graphite offers a number of opportunities for students to contribute by building a self-contained project as part of a structured format. These projects are designed to be completed over several months and are ideal for Google Summer of Code or similar internship programs, solo or group university capstone projects, or other arrangements. Each project has a distinct focus and is a great way to make a meaningful contribution to open source over the length of the program while receiving mentorship and guidance from the Graphite team. Student projects require adherence to a set schedule with regular check-ins, milestones, and evaluations.
The structured setting is designed to provide a supportive environment for students to learn and grow as developers while gaining real-world industry experience from collaborating on a sizable software product and remaining accountable to stakeholders.
To date, three student project experiences have been completed successfully. [See below](#successful-past-projects) for summaries to get a feel for what has worked before.
Reach out through [Discord](https://discord.graphite.rs) (preferred) or [by email](/contact) to discuss and propose a project.
## Google Summer of Code
GSoC is a program offering students a stipend for successful completion of an internship-style experience with an open source organization. Read about [how it works](https://summerofcode.withgoogle.com/how-it-works/). Graphite intends to participate as a mentoring organization in GSoC 2024, pending acceptance.
### GSoC Proposals
Writing a good proposal is an important first step that demonstrates your understanding of the project and your ability to plan and execute it. A well-defined proposal will set you up for success throughout the rest of the program.
You are encouraged to reference the project idea list below to find several potential projects suited to your experience, interest, and choice of scope. Then, we highly recommend reaching out to a core team member through Discord to discuss your plan in detail before writing a proposal. This will help you understand the project's scope and requirements, and it will help us understand your background and capabilities to offer you feedback and suggestions for the best outcome.
## Project idea list
The following will be expanded upon in detail later today, 2024-01-06.
- Port LibRaw to Rust
- PDF export
- ONNX model embedding to run in WebGPU and native (Tauri) and server
- Node auto layout
- Select mode
- GPU-based node graph UI
- Complex widget layout system
- Spreadsheet viewer/editor
- Testing and performance instrumentation infrastructure
- Animation system
- Infrastructure for generating subsystem visualizations for docs, debugging, and identifying redundant message traffic
## Successful past projects
### 2022: Backend layout system
Institution: California Polytechnic State University, San Luis Obispo, USA
Duration: 3 months
Student: Max Fisher
### 2022: Path boolean operations
Institution: California Polytechnic State University, San Luis Obispo, USA
Duration: 3 months
Student: Caleb Dennis
### 2023: Bezier-rs library
Institution: University of Waterloo, Ontario, Canada
Duration: 9 months
Students: Hannah Li, Rob Nadal, Thomas Cheng, Linda Zheng, Jackie Chen