Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Developer Onboarding Plan and Supporting Documentation #2429

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
172 changes: 172 additions & 0 deletions docs/developer_guide/reference/New_Start.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,172 @@
Onboarding Plan
===============

Goals
-----
1. Establish a development environment.

2. Gain familiarity with Mantid Imaging, MVP architecture, and PyQt.

3. Begin working on a project issue and submit a PR.


Week 1 Overview
----------------

**Focus**: Environment setup, initial training, and introductions.

- Complete environment setup and review key learning resources.

- Work through the **Quick Start Guide** for Mantid Imaging.

**Milestone**: Successfully run Mantid Imaging and identify key areas for further learning.

Week 2 Overview
---------------

**Focus**: Training and practical application

- Deep dive into PyQt, MVP, and first tasks.

- Submit a PR for review.


**Milestone**: Successfully submit a PR and discuss in standups.


Key Skills Development
-----------------------

Core Skills: Python
~~~~~~~~~~~~~~~~~~~

**General Learning Resources**:

- `Official Python Tutorial <https://docs.python.org/3/tutorial/>`_: Comprehensive reference for all Python features.

- `Learn X in Y Minutes (Python) <https://learnxinyminutes.com/docs/python/>`_: Quick guide for programmers transitioning from other languages.


**Type Checking**:

- `RealPython: Python Type Checking <https://realpython.com/python-type-checking/>`_: Beginner-friendly guide to adding type annotations.


**Numerical Computing**:

- `From Python to NumPy <https://www.labri.fr/perso/nrougier/from-python-to-numpy>`_: Key insights into NumPy and its performance benefits.


Core Skills: PyQt and Qt
~~~~~~~~~~~~~~~~~~~~~~~~

**PyQt Documentation**:

- `Official PyQt5 Documentation <https://www.riverbankcomputing.com/static/Docs/PyQt5/>`_: Comprehensive guide for all PyQt5 classes and modules.


**Qt for Beginners**:

- `Qt5 Getting Started <https://doc.qt.io/qt-5/gettingstarted.html>`_: Learn how to work with Qt libraries.

- `Qt Creator Tutorials <https://doc.qt.io/qtcreator/index.html>`_: IDE-focused tutorials for Qt project setup and management.


**PyQt Tutorials**:

- `PyQt5 Tutorial (zetcode) <https://zetcode.com/gui/pyqt5/>`_: A beginner-friendly step-by-step guide to PyQt.

- `Python GUI Programming with PyQt5 <https://realpython.com/pyqt-python-gui-framework/>`_: RealPython's introduction to GUI programming with PyQt.


**MVP Mantidimaging**:

**Path**: ``mantidimaging/gui/windows/spectrum_viewer/``

- Launch the Mantid Imaging application and interact with the Spectrum Viewer.
- Open presenter.py to see how it interacts with the Model and View.
- Open view.py to understand how UI elements are defined and updated.


Core Skills: Neutron Imaging
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

**Key Learning Materials**:

- `Neutron Imaging for Software Engineers <https://stfc365.sharepoint.com/:w:/r/sites/mantidimaging/Shared%20Documents/Training/Neutron%20Imaging%20for%20Software%20Engineers.docx>`_.


**Bragg Peak and TOF**:

- In situ Bragg imaging using the IMAT instrument at the ISIS neutron source.
Link: `SpringerLink <https://link.springer.com/article/10.1007/s11340-021-00754-1>`_

- Performance of Bragg-edge imaging on the IMAT beamline, focusing on strain and texture mapping.
Link: `Journal of Applied Crystallography <https://pure.coventry.ac.uk/ws/portalfiles/portal/23635164/Binder4.pdf>`_

**IMAT**:

- **IMAT Facility Overview**:
General information about the IMAT neutron imaging and diffraction instrument.
`IMAT Facility <https://www.isis.stfc.ac.uk/Pages/IMAT.aspx>`_.

- **IMAT Neutron Imaging Techniques**:
In-depth guide to imaging applications at IMAT.
`IMAT Techniques <https://www.isis.stfc.ac.uk/Pages/Imaging.aspx>`_.

- **IMAT Publications**:
Recent research conducted using IMAT.
`IMAT Publications <https://www.isis.stfc.ac.uk/Pages/IMAT-Science-Highlights.aspx>`_.


Core Skills: MVP (Model View Presenter)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

**Understanding MVP**:

- Understand the roles of:

- **Model**: Handles data and logic.
- **View**: Represents the UI.
- **Presenter**: Manages interactions between the Model and View.


**Study Mantid Imaging's MVP Implementation**:

- `MVP Overview <https://developer.mantidproject.org/MVPDesign.html>`_.

- `MVP Tutorial <https://mantidproject.github.io/developer/MVPTutorial/>`_.


Key Resources
-------------

**Mantid Imaging**:

- `Quick Start Guide <https://mantidproject.github.io/mantidimaging/user_guide/tutorials/quick_start.html>`_.

- `Getting Started Tutorial <https://mantidproject.github.io/mantidimaging/developer_guide/tutorials/started.html>`_.

- `Neutron Imaging for Software Engineers <https://stfc365.sharepoint.com/:w:/r/sites/mantidimaging/Shared%20Documents/Training/Neutron%20Imaging%20for%20Software%20Engineers.docx>`_.

- `Mantid Imaging Talk at NoBUGS <https://www.youtube.com/watch?v=FvlMiDAH7jY>`_.


**Python**:

- `Python Type Checking <https://realpython.com/python-type-checking/>`_.

- `From Python to NumPy <https://www.labri.fr/perso/nrougier/from-python-to-numpy>`_.

- `Fluent Python <https://www.oreilly.com/library/view/fluent-python-2nd/9781492056348/>`_.


**Qt and PyQt**:

- `Official PyQt5 Documentation <https://www.riverbankcomputing.com/static/Docs/PyQt5/>`_.

- `Qt for Python Examples <https://doc.qt.io/qtforpython/examples.html>`_.

- `PyQt5 Tutorial (zetcode) <https://zetcode.com/gui/pyqt5/>`_.

- `RealPython PyQt Guide <https://realpython.com/pyqt-python-gui-framework/>`_.
7 changes: 4 additions & 3 deletions docs/developer_guide/reference/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ Reference
.. toctree::
:maxdepth: 2

../../support
../../api
../../release_notes/next
New_Start
../../../support
../../../api
../../../release_notes/next
1 change: 1 addition & 0 deletions docs/release_notes/next/feature-2408-Onboarding-plan-ref
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
2408: Add New Starter Section to Documentation
Loading