TUTORIAL
Get the Code
Java: https://gitlab.com/lobequadrat/mlpg/
Python: https://gitlab.com
Join the discussion
Run the Examples
Choose an example in the examples package
Onboarding
Checkout/commit with IntelliJ:
– Clone
– Choose „Get from CVS“ in start dialog (from IntelliJ) or Git–Clone from menubar
– Use „http clone URL“ (or upload your SSH keys into you gitlab account etc.)
– Change branch
– Commit
– Open commit page (hotkey: „Ctrl + k“), choose files and insert commit-message
Issues und Boards:
– Gitlab Issues are used for project planning
– Issues
– Everyone can create issues
– They are transferred to the todo list after consultation
– Marke every issue as confidential(!)
– Choose Assignee
– Time tracking
– Estimated time: /estimate <…> in the description
– Spend time: /spend <…> with short description in (multiple) comment
– Choose labels if suitable available (create new ones in consultation)
– Do not use labels: todo, in progress and review(is assigned via the development board)
– Boards
– Development-board (Issues – Boards – Development)
– Open, todo, in progress, review, Closed
– Open -> todo, todo -> in progress, review -> closed only after consultation
Feature Branches:
– Direct committing to the master branch is blocked
– New features are implemented in specially created branches and then merged into the master branch
– If possible, only one feature per branch (to avoid merge conflicts and for better assessment in the review)
– Agreement with all developers which parts of the code will be modified to avoid merge conflicts as far as possible
– Procedure:
– Naming convention: < name of developer > _ < one to three words for description in CamelCase>
– Create branch with Gitlab UI, IntelliJ-Git UI or git
– Merge request with description when feature is implemented
– Merge requests must be approved by @dsuepke (core modules) or @aliri (example modules)
Codestyle:
– Locally with IntelliJ and with CI-Pipeline executes Checkstyle on every merge request
– IntelliJ
– Ctrl + Alt + l formats the complete file
– Configuration with File – Settings – Editor/Codestyle/java
– Configuration-file ::will soon be linked here::
– Manual configuration
– Tabs and Indents
– use tab characters
– Wrapping and Braces
– Braces placement: In Class/In Method/In lambda/Other – next line
– if(): else on new line
– try: catch/finally on new line
– Blank Lines
– Keep maximum blank lines: 3 for all
– JavaDoc
– Do not warp one line comments
– No curly braces when if/for/while contains only one statement
– Small methods
– Blank lines between logical blocks
Testing:
– CI-Pipeline invokes Maven clean test on every merge request
– Unit-tests implemented JUnit (potentially wrapped in tools like Hamcrest)
– Testcoverage with intellij:
– 1. create Debug Configuration, e.g. run test with context menue in Project-View
– 2. open Debug configuration
– 3. Modify options — Coverage Settings — Use tracing
– 4. Run test with Coverage
– 5. new column in coverage-View: Branch
– 6. check if branch is tested
Documentation
Frameworks like PyTorch or Google’s tensorflow are easy to use, high level ML, hiding a lot of the internal complexity. However, in order to get a deep understanding of how ML really works, they are not the best choice.
MLPG is aimed at everyone who likes to code and is interested in knowing what’s happening under the hood.