Skip to content

Instantly share code, notes, and snippets.

@1nF0rmed
Created October 28, 2024 05:26
Show Gist options
  • Select an option

  • Save 1nF0rmed/c557208096be091c8579096907cc8079 to your computer and use it in GitHub Desktop.

Select an option

Save 1nF0rmed/c557208096be091c8579096907cc8079 to your computer and use it in GitHub Desktop.
egui: needed basics
<?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