How to contribute
Azimuth is built by one photographer, in the open, using his own archive. Contributions from other photographers who keep their own archives are welcome. You do not need to understand the architecture to help. The project is run from a few plain files, and each one is a way to contribute.
Try it on your own photos
Point it at a folder of your own photos and cull one shoot with the keyboard. The app is developed against one real archive of 150,000 photos. A second archive finds problems the first one cannot: a camera it has not seen, a different folder layout, a drive that is unplugged. Nothing is uploaded, and the app never moves, renames or deletes an original file.
git clone https://github.com/seankd3/Azimuth-Photo.git cd Azimuth-Photo python -m venv web\.venv web\.venv\Scripts\python.exe -m pip install -r web\requirements-v2.txt npm ci .\scripts\start_azimuth_windows.ps1
It asks where to store its catalog, then for a folder of photos, and the library fills in as it scans. INSTALL.md covers the packaged build.
Report a finding
Findings.md is the list every audit adds to. An entry is closed only in the commit that fixes it. There have been more than 950 entries since 9 September. A finding has four parts:
main branch. A screenshot also counts.Open an issue with those four parts and it becomes an entry. If you can, say which area it belongs to (grid, loupe, rank, sidebar, search, people, import).
Add a journey script
scripts/journeys/ has one small script for each task a photographer does: cull with the keyboard, zoom in, name a person, find a photo from memory, judge a burst, make an album. Each one runs the app off screen and saves a screenshot, which is compared with the previous round. If a task you do is not covered, a short script for it is a useful contribution, and it will run in every later round.
Open areas
- Editing. I chose to do editing in Lightroom, and Azimuth reads and writes Lightroom's settings. The editor that was started is paused because its output differs from Adobe's by 0.0445 in lightness, against a limit of 0.035. Its colour code is in
web/pixels/as plain functions on arrays, if someone wants to work on it. - Ranking by taste. Experiments E1 and E3 to E5 in
docs/taste-and-culling-research.mdare written but not yet run. They fit small models to real choices between photos. - A phone app. The old phone app was deleted with version 1. A new one would be built on the version 2 interface after the desktop app is finished. The desktop app talks to Python through one bridge object, so a phone app would be a second client for it.
- Sharing. Version 1 had four overlapping ways to share a photo, and all four were deleted. There is no design for sharing yet.
- Other platforms. The app is one Python program and one bundled HTML document. The native window has only been tested on Windows.
How the work is done
The process is described in the Field Log: requests are recorded word for word in Vision.md, problems go into the findings list, a second model tries to break every change, automated checks count things that should not grow, journey scripts test real tasks, and nothing counts as done until it has been run. Pull requests are reviewed the same way. Changes that remove the code they replace are preferred. The code is licensed under AGPL-3.0.