Join us for the first OpenFlexure Maintain-A-Thon!

The OpenFlexure Project is hosting its first hackathon! This is not just any hackathon, it is a two day event focused on pushing the boundaries of software quality, documentation, and testing. To borrow a term we learned from UN Open Source Week, we are hosting a Maintain-A-Thon.

When, where, how?

The Maintain-A-Thon will be held on the 12th and 13th of August, in Glasgow. Coffee, tea and biscuits will be provided, and from the centre of Glasgow, we’ll have plenty of options for food and drink.

This is an in-person event so that those who travel can get the most out of it. If there is community interest, we can organise a remote event in the future. We’ll also share a write-up of the event, outcomes and lessons learned on our forum, so keep an eye open for that.

This will be a fairly small event of 10-20 community members. If you’re interested in joining, please get in touch through our contact email (contact@openflexure.org) or any of our social channels.

The goals of the Maintain-A-Thon:

Make the OpenFlexure repositories (and related repositories, such as Sangaboard/LabThings) more reliable and welcoming to new contributors.

  • Writing documentation. From user guidance and code comments through to improving project descriptions. More documentation is always welcome!

  • Writing tests, to find and fix bugs in the existing code. All code bug-fixes should be submitted with a failing unit test. See the Sherlock Gnomes prize below.

  • Creating, curating, and updating issues and merge requests.

A note on merging code

Code will be submitted via Merge Requests, and will follow the normal review procedure. It is likely that some of the proposed changes will not receive review and be merged during the Maintain-A-Thon. Any open MRs are still eligible for prizes!

Teams and prizes

The hackathon will not have a rigid team structure. We encourage active collaboration throughout the event, in ever changing groups of 2-3.

The prize categories:

:trophy: The Norbot Award*: Lint and Tidy!

For the cleanest and tidiest repository (relative to how it started)

*Norbot is a gnome-robot from Wallace & Gromit: Vengeance Most Fowl who works to make things “Clean and Tidy”. The Norbot award is not officially affiliated with or sponsored by Wallace & Gromit. It is just inspired by him.

:trophy: Sherlock Gnomes: The Adventure of the Failing Test

An award for the most obscure bug identified. Any bug must be identified by a failing unit test.

Agenda and timeline

12 August

Time
9:30-10:30 Arrival, coffee, and welcome
10:30-11:00 A short overview of the repositories, workflow, and our shared goal.
11:00-16:00 Collaborative, hacking, coding, documenting, and testing. [Lunch options available nearby]
16:00-16:30 Round up of day 1 so far. Requests for help with specific tasks.
16:30-17:00 Tidy and move rooms (sorry).
17:00-??? Evening coding, pints, and dinner. We have a smaller room until 20:00, so some coding can continue, but as the evening continues we will probably round things up, make some evening plans, and go out for a drink.

13 August

Time
9:30-10:00 Arrival, coffee, welcome
10:00-15:00 Collaborative, hacking, coding, documenting, and testing [Lunch options available nearby]
15:00-15:30 Creating submissions for the prizes. Each participant can submit a short description, and associated repository links to their submissions for each prize. Please note any collaborations.
15:30-16:00 Relax! (Or do more code)
16:00-16:15 Prizes!
16:15-??? Evening coding, pints, and dinner. We have the big room until 20:00, so some coding can continue for participants who are staying. We will probably round things up, make some evening plans, and go out for a drink.
9 Likes

I took the maintainathon as a good excuse to turn up with a fancy box for my OpenFlexure Microscope. Mine’s the laser cut one in front - @j.stirling brought the custom-printed Nanuk case. My box took me less than an hour, courtesy of @ffesti’s wonderful boxes.py. Foam and locking lid are still work in progress, but I find it quite pleasing :slight_smile:.

For my own future reference, the box should be reproduced by this boxes.py link.

3 Likes

The box is super nice. far far nicer than the boxes we made when we first got a laser cutter at Bath. But I think most of what I saw was made in CAD not in boxes.py. I suppose I need to give it a go!

Had a great time at the maintainathon!

Highlights include:

  • Getting mypy artifacts to run in CI, close issue 338 on the server
  • Making CI yaml files more reusable by introducing a new ci-templates repository for storing commonly used jobs, and refactoring existing CI yaml files across the server, microscope, connect and stitching repos to use the templates and updated syntax from GitLab (Norbot Award Candidate)
  • Getting Canva Pro for free for the Humanitarian Technology Trust
  • Teaching the maintainathon attendees all about unit testing with pytest, pytest-cov, hypothesis and vscode
  • Getting free pizza from Pizza Hut!
3 Likes

2 Likes

Everyone coming from outside Glasgow was kind enough to bring summer temperatures with them! :sun:
I’m an experimentalist and have limited experience with OpenFlexure’s software codebase, so it’s been fun to have time to add to our upcoming quickstart guide and handbook in weather like this!

2 Likes

My plan for the maintainathon was to write a lot of testing for Server “Things” and to write API documentation for the OpenSCAD code.

I didn’t really do any of this.

  • I did have some very useful conversation about the direction of LabThings
  • Finish and merge some code improving error reporting from actions in LabThings
  • Fix the fact that a preview stitch failure can hard lock the server (after it hard locked a simulation server). The failure wasn’t easily testable so not eligible for Sherlock Gnomes award :frowning:
  • I did quite a bit of merge request reviewing to help things get merged during the maintan-a-thon
  • I also enabled the Flake-8 bugbear rules in Ruff and cleaned up any issues it found. (A weak entry for Norbot Award)
2 Likes

Had a very fun time at the Maintain-A-Thon over the last couple of days. I managed to refactor some parts of my range of motion test(feature coming soon to a microscope near you), write some unit tests for my range of motion test(Norbot Award Candidate), make some UI improvements for the calibration wizard and eat some free pizza from Pizza Hut! What an amazing chance to take a deeper dive into the software and learn from the other attendees!

3 Likes

:grinning_face:

2 Likes

I have been working with OpenFlexure as a summer student, and I am now nearly at the end of my great 8 weeks there! The Maintain-A-Thon has been the perfect opportunity for me to meet the extended team, organise everything I have done into nice repositories, and refactor some of my terrible code (it is now slightly less terrible) :grin:.

3 Likes

Finally took the chance to scratch a couple of itches at this!

Disabling caching the webapp files with 361 should make it a bit smoother jumping between microscopes and versions - no more “I thought we got rid of this button” headaches. Wasn’t sure how to test for it sadly

364 is a look at testing sharpness stacks so that they use fitting instead of just a position. Nor:robot: eligible!

362 adds a couple of tests for move_to_next_point to make sure we use or ignore z_est as appropriate

4 is the first test for colour_correction, and I even didn’t push straight to main this time

9 is my highlight! Connect now opens one window per microscope, and won’t close the base window unless all microscope windows are closed. It’ll minimise to the tray.

1 Like

I kicked things off by making the :trophy: First Maintain-o-Thon Merge Request :trophy: which fixed the tiniest paper cut: reminding you to install dependencies if you haven’t and run ./build.py.

Most of the rest of the time I spent on running/debugging the Pi OS Image Customiser and thinking about how we could run it in CI and/or Docker.

After getting angry enough that my custom Gitlab CI runner just won’t connect I decided to start looking at some automated visual testing for the Microscope JS Client.

3 Likes

I focused on tidying things up in LabThings-FastAPI. We started by getting the very big merge request #155 in, which improves property syntax. I then ticked off a bunch of small bugs, fixed by #157, #172, #173, #174.

In particular, I wrote a failing unit test and then solved it by fixing a bug in #173:

I also enjoyed showing off my new laser-cut case (see previous post).

3 Likes

Hi Antonio from Mexico, my first contributions are starting right now for the OFM!

I’ve contributed automating a developer environment with testing and server building from source.

MR at 363 Containerisation Merge Request.

But mainly to showcase the espeak Text-to-Speech program, for the delight of the group. espeak “choo choo, The OpenFlexure Train from Glasgow to v3 is departing now.“

Picture of “Cochito” Programming support.

4 Likes

Also, I just made this emoji: :norbot:

(use it by typing :norbot:)

2 Likes

Award Candidates:

:norbot: Norbot Award :norbot:

Sherlock Gnomes

  • @r.w.bowman for #173 in ThabThings-FastAPI fixing a DirectThingClient bug
  • :trophy:@JohemianKnapsody for server !364 for identifying the focus check failing to recognise quality focus.:trophy:

Edited to add winners

5 Likes