Created
October 28, 2024 05:26
-
-
Save 1nF0rmed/c557208096be091c8579096907cc8079 to your computer and use it in GitHub Desktop.
egui: needed basics
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <?xml version="1.0" encoding="UTF-8"?> | |
| <learning_hierarchy> | |
| <metadata> | |
| <title>Learning Path for egui Contribution</title> | |
| <description>Comprehensive learning hierarchy for contributing to egui, starting from computer science fundamentals</description> | |
| <target_audience>Beginners in Rust and Computer Science</target_audience> | |
| </metadata> | |
| <learning_path> | |
| <phase order="1" name="computer_science_fundamentals"> | |
| <topic name="Data Structures"> | |
| <concepts> | |
| <concept name="Arrays and Lists"> | |
| <subtopic>Static vs Dynamic Arrays</subtopic> | |
| <subtopic>Memory Layout</subtopic> | |
| <subtopic>Time Complexity</subtopic> | |
| </concept> | |
| <concept name="Hash Tables"> | |
| <subtopic>Hash Functions</subtopic> | |
| <subtopic>Collision Resolution</subtopic> | |
| <subtopic>Load Factors</subtopic> | |
| </concept> | |
| <concept name="Trees"> | |
| <subtopic>Binary Trees</subtopic> | |
| <subtopic>Tree Traversal</subtopic> | |
| <subtopic>Balanced Trees</subtopic> | |
| </concept> | |
| </concepts> | |
| <resources> | |
| <resource>Introduction to Algorithms (CLRS)</resource> | |
| <resource>Data Structures and Algorithms in Python</resource> | |
| </resources> | |
| </topic> | |
| <topic name="Memory Management"> | |
| <concepts> | |
| <concept name="Memory Layout"> | |
| <subtopic>Stack Memory</subtopic> | |
| <subtopic>Heap Memory</subtopic> | |
| <subtopic>Virtual Memory</subtopic> | |
| </concept> | |
| <concept name="Memory Operations"> | |
| <subtopic>Allocation</subtopic> | |
| <subtopic>Deallocation</subtopic> | |
| <subtopic>Memory Safety</subtopic> | |
| </concept> | |
| </concepts> | |
| </topic> | |
| <topic name="Programming Paradigms"> | |
| <concepts> | |
| <concept name="Object-Oriented Programming"> | |
| <subtopic>Classes and Objects</subtopic> | |
| <subtopic>Inheritance</subtopic> | |
| <subtopic>Polymorphism</subtopic> | |
| </concept> | |
| <concept name="Functional Programming"> | |
| <subtopic>Pure Functions</subtopic> | |
| <subtopic>Immutability</subtopic> | |
| <subtopic>Higher-order Functions</subtopic> | |
| </concept> | |
| </concepts> | |
| </topic> | |
| </phase> | |
| <phase order="2" name="rust_programming"> | |
| <topic name="Basic Syntax"> | |
| <concepts> | |
| <concept name="Variables"> | |
| <subtopic>Mutability</subtopic> | |
| <subtopic>Shadowing</subtopic> | |
| <subtopic>Type System</subtopic> | |
| </concept> | |
| <concept name="Control Flow"> | |
| <subtopic>Match Expressions</subtopic> | |
| <subtopic>If Let Syntax</subtopic> | |
| <subtopic>Loops</subtopic> | |
| </concept> | |
| </concepts> | |
| <resources> | |
| <resource>The Rust Programming Language Book</resource> | |
| <resource>Rust by Example</resource> | |
| </resources> | |
| </topic> | |
| <topic name="Ownership System"> | |
| <concepts> | |
| <concept name="Ownership Rules"> | |
| <subtopic>Move Semantics</subtopic> | |
| <subtopic>Clone vs Copy</subtopic> | |
| <subtopic>Drop Trait</subtopic> | |
| </concept> | |
| <concept name="Borrowing"> | |
| <subtopic>Shared References</subtopic> | |
| <subtopic>Mutable References</subtopic> | |
| <subtopic>Reference Rules</subtopic> | |
| </concept> | |
| <concept name="Lifetimes"> | |
| <subtopic>Lifetime Annotations</subtopic> | |
| <subtopic>Lifetime Elision</subtopic> | |
| <subtopic>Static Lifetimes</subtopic> | |
| </concept> | |
| </concepts> | |
| </topic> | |
| </phase> | |
| <phase order="3" name="gui_development"> | |
| <topic name="UI Fundamentals"> | |
| <concepts> | |
| <concept name="Layout Systems"> | |
| <subtopic>Box Model</subtopic> | |
| <subtopic>Flexbox Concepts</subtopic> | |
| <subtopic>Grid Systems</subtopic> | |
| </concept> | |
| <concept name="Event Handling"> | |
| <subtopic>Event Propagation</subtopic> | |
| <subtopic>Event Bubbling</subtopic> | |
| <subtopic>Event Delegation</subtopic> | |
| </concept> | |
| </concepts> | |
| </topic> | |
| <topic name="Immediate Mode GUI"> | |
| <concepts> | |
| <concept name="Core Concepts"> | |
| <subtopic>Frame-based Rendering</subtopic> | |
| <subtopic>State Management</subtopic> | |
| <subtopic>Input Handling</subtopic> | |
| </concept> | |
| <concept name="Advantages"> | |
| <subtopic>Simplicity</subtopic> | |
| <subtopic>State Consistency</subtopic> | |
| <subtopic>Performance</subtopic> | |
| </concept> | |
| <concept name="Limitations"> | |
| <subtopic>Layout Challenges</subtopic> | |
| <subtopic>CPU Usage</subtopic> | |
| <subtopic>State Persistence</subtopic> | |
| </concept> | |
| </concepts> | |
| </topic> | |
| </phase> | |
| <phase order="4" name="graphics_programming"> | |
| <topic name="2D Graphics"> | |
| <concepts> | |
| <concept name="Coordinate Systems"> | |
| <subtopic>Screen Coordinates</subtopic> | |
| <subtopic>Logical Coordinates</subtopic> | |
| <subtopic>Transform Matrices</subtopic> | |
| </concept> | |
| <concept name="Rendering"> | |
| <subtopic>Vector Graphics</subtopic> | |
| <subtopic>Anti-aliasing</subtopic> | |
| <subtopic>Text Rendering</subtopic> | |
| </concept> | |
| </concepts> | |
| </topic> | |
| <topic name="Graphics APIs"> | |
| <concepts> | |
| <concept name="OpenGL/WebGL"> | |
| <subtopic>Shaders</subtopic> | |
| <subtopic>Textures</subtopic> | |
| <subtopic>Buffers</subtopic> | |
| </concept> | |
| <concept name="Modern Graphics APIs"> | |
| <subtopic>Vulkan</subtopic> | |
| <subtopic>WebGPU</subtopic> | |
| <subtopic>Metal</subtopic> | |
| </concept> | |
| </concepts> | |
| </topic> | |
| </phase> | |
| <phase order="5" name="web_development"> | |
| <topic name="WebAssembly"> | |
| <concepts> | |
| <concept name="Basics"> | |
| <subtopic>Memory Model</subtopic> | |
| <subtopic>JavaScript Interface</subtopic> | |
| <subtopic>Performance Considerations</subtopic> | |
| </concept> | |
| <concept name="Integration"> | |
| <subtopic>DOM Interaction</subtopic> | |
| <subtopic>Canvas API</subtopic> | |
| <subtopic>Event Handling</subtopic> | |
| </concept> | |
| </concepts> | |
| </topic> | |
| </phase> | |
| <phase order="6" name="egui_specific"> | |
| <topic name="Architecture"> | |
| <concepts> | |
| <concept name="Core Systems"> | |
| <subtopic>Context Management</subtopic> | |
| <subtopic>Paint System</subtopic> | |
| <subtopic>Layout Engine</subtopic> | |
| </concept> | |
| <concept name="Widget System"> | |
| <subtopic>Widget Traits</subtopic> | |
| <subtopic>Response System</subtopic> | |
| <subtopic>Custom Widgets</subtopic> | |
| </concept> | |
| </concepts> | |
| <resources> | |
| <resource>egui Documentation</resource> | |
| <resource>egui GitHub Repository</resource> | |
| <resource>egui Examples</resource> | |
| </resources> | |
| </topic> | |
| <topic name="Integration"> | |
| <concepts> | |
| <concept name="Backend Integration"> | |
| <subtopic>Native Platforms</subtopic> | |
| <subtopic>Web Platform</subtopic> | |
| <subtopic>Game Engines</subtopic> | |
| </concept> | |
| <concept name="Platform Features"> | |
| <subtopic>Input Handling</subtopic> | |
| <subtopic>Window Management</subtopic> | |
| <subtopic>Rendering Context</subtopic> | |
| </concept> | |
| </concepts> | |
| </topic> | |
| </phase> | |
| </learning_path> | |
| <recommendations> | |
| <recommendation>Start with computer science fundamentals before diving into Rust</recommendation> | |
| <recommendation>Complete the Rust Book before attempting egui contributions</recommendation> | |
| <recommendation>Build small practice projects in each phase before moving to the next</recommendation> | |
| <recommendation>Join the egui Discord for community support</recommendation> | |
| <recommendation>Start with documentation and small bug fixes as first contributions</recommendation> | |
| </recommendations> | |
| </learning_hierarchy> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment