2025 EOY Report

Hi All,

Trying something a bit different. Looking to take the summary for 2025 I gave to the board and turn it into an annual report, but rather than a PDF or a blog post (though we’ll likely do that too), doing this as a forum topic in threaded form, which could help in structuring conversation. It’ll be an interesting approach that I haven’t seen before in an annual report, but more importantly, it should serve as an engaging way to structure and discuss. 2025 was a big year and queues us up well for 2026, so discussing early here will help a lot.

High level, structuring this as follows:

  1. Themes
  2. Community Software Development, Core
    1. Software Challenges
      1. General Library Updates
      2. OpenSfM Library Updates
      3. ODM / OpenSfM Maintenance
    2. Awards
  3. Contracted Software Development
    1. Headwater Project
      1. OpenMVS Texturing
        1. Developer Lead
        2. Approach
        3. Cost
        4. Timeline
    2. Software pilots
      1. Open Container Initiative (OCI) Container Compliance
        1. Developer Lead
        2. Cost
      2. Alpine Testing
        1. Developer Lead
        2. Cost
    3. Windows Store Build
      1. Developer Lead
      2. Cost
    4. Signing key infrastructure
  4. Community Partner Initiatives, Ecosystem
    1. Drone Tasking Manager (DroneTM)
    2. ScaleODM
  5. Collaboration and Partnerships: Hardware
    1. Community Mapping Drone, multi-camera
    2. Community Mapping Drone, 249g
  6. Independent Science Efforts
    1. TEMBO Africa
    2. GSMA Innovation Award
    3. RVO Funded Local Devices
  7. Organizational Stability
    1. Grants
    2. Installer Revenue
    3. Balance
    4. Programs
    5. Budget
6 Likes

Themes

At the start of OpenDroneMap as an organization (2022-2023), we identified the following themes as core to supporting our mission (link): Software development, Collaborations and Partnerships, Community Support, and Organizational Stability. These themes are woven through this report, and provide some of the structure the outline above.

1 Like

Community Software Development, Core

Brett Carlock (@Saijin_Naib) is fond of joking something to the effect that OpenDroneMap is n+1 software libraries in a trenchcoat. Such a complex and effective stack as OpenDroneMap is, in fact, dependent on lots of smaller software libraries. As such, we are a beneficiary of a stack of clever software necessary to perform all the complex tasks that OpenDroneMap does. But this also means that updating, upgrading, and maintaining the project is a special challenge. That’s true for the photogrammetry engine, ODM, as well as WebODM and everything in between.

Partial list of some of ODM’s underlying libraries

  • OpenSfM
  • OpenMVS
  • PDAL
  • Entwine
  • GDAL
  • MVS-Texturing
  • PoissonRecon
  • etc. …

Full stack upgrade

With all those libraries and the challenge of keeping / bringing them up-to-date, in Mid-2025, @NathanMOlson was kind enough to dive in and update and upgrade the stack in order to support building our docker image on Ubuntu 24.04. I did my best to support that upgrade with extensive testing through the end of October. We’re waiting on final release and deployment now that Leonardo has joined as OpenSfM / ODM core maintainer (more on that below), but the work Nathan did should both help with upgrades and updates moving forward and improve our security / vulnerability posture within the project overall.

You can follow along on that continuing upgrade process in this thread. A rough play-by-play of the upgrade and testing process process can be found within.

OpenSfM, 4 years newer

OpenSfM is the core library underpinning OpenDroneMap’s ability to do structure from motion, i.e. turning arbitrary images into 3D structures. Pau Gargallo started OpenSfM just prior to joining the computer vision Mapillary, which later was acquired by Facebook/Meta. OpenSfM became a core project in the early Mapillary experiment, and also has underpinned OpenDroneMap since early on, with both project co-arising in the late 20-teens.

Yann Noutary, core OpenSfM developer, in his down-time between working for titans of mapping and metaverse showed up to breath some extra life into the project and ensure that OpenDroneMap could be a beneficiary and benefactor of the OpenSfM moving forward. His fixes and enhancements included the following:

This was a monumental lift and points us in a good direction for upgrade and forward movement on the core photogrammetry tools.

On a call with @DodgySpaniard and me, he expressed his motivation in doing so: with the slow-down of OpenSfM development over the last 5 years, he had lots of pent up energy to do all the interesting projects, and was relieved that OpenDroneMap is still here making an impact using OpenSfM. While he had downtime, he wanted to contribute those ideas back.

This also helps queue OpenDroneMap up as the maintainer of OpenSfM moving forward. You can follow along with some of that conversation in the thread on @DodgySpaniard coming on as OpenSfM Maintainer.

OpenSfM and ODM Maintenance

Being the beneficiary of upstream work sometimes requires becoming the benefactor. Piero Toffanin set down the ODM maintenance mantle in August 2025 to focus on WebODM maintenance and improvements. With no known active OpenSfM maintainer, Yann helped us recruit Leonardo Urena-Fuentes (aka @DodgySpaniard) to serve as both OpenSfM and ODM maintainer. He is currently taking on the orientation and high-impact, lower effort tasks such as fixing broken builds, and will ramp up to setting up a roadmap and fixes for both starting second quarter of 2026.

It’s good to weigh in on project pain points, and Leonardo has request input on this on the following thread.

6 Likes

Software awards

The biggest change on the community dev side was Piero Toffanin stepping down as maintainer of the ODM repository. He’s been a tireless maintainer and visionary on this code base since taking it over from DK Benjamin so many years ago.

As a token of our appreciation for his years of ODM maintenance, we awarded Piero Toffanin the “it’s bananas to be a free and open source software maintainer” award.

We 3D printed a full color reconstruction of his test dataset of a bunch of bananas with a note of appreciation.

It felt like a moment of deeper understanding when he then created a test dataset from called Banana Inception.

I strongly suspect that the 3D printed bunch of bananas is sitting on the same carpet as the original bunch, adding to the inception element subtly and substantially. I’ll be honest, I have had to resist the temptation to print the inception model and send it too.


Tokens are just what they sound like: too small to represent the gratitude they represent. And we have a bunch of gratitude to Piero’s work as developer and visionary on this and other ecosystem projects over the last years.

13 Likes

Direct software funding

We focused on four interrelated themes for funding direct software development: upstream libraries, performance, ecosystem resilience, and security. A pleasant surprise in the work was the cases where performance and security worked hand in hand. But first: memory!

Headwaters Project, OpenMVS Texturing Module

With the principle that we support the upstream libraries that support us, we initiated the Headwaters Project in 2025 to begin that process.

Brett put it best by saying:

The Headwaters Project is a series of initiatives to support the ecosystem of programs, utilities, libraries, etc. that power the OpenDroneMap ecosystem. This means giving back to and supporting the projects that we rely upon, in order to make Open Source development more sustainable.

As far as critical libraries, the primary memory bottleneck for most OpenDroneMap processing is the texturing step where we take the individual photos from a dataset and “paint” the pixels back on a 3D mesh representing the scene. MVS-Texturing is the library we use for this work, and while it is quite a clever piece of software, it wasn’t designed to do the scale of datasets that are commonly processed with OpenDroneMap. It also isn’t as actively developed as it once was.

Developer Lead

In order to solve this problem and improve another upstream library, we engaged Dan Cernea of OpenMVS to replace MVS-texturing with a new OpenMVS texturing module that should both improve the quality of model texturing and reduce memory footprint. This is also expected to include improvements to texturing in cases where there are moving objects in the scene. Development work is ongoing but well underway, with basic functionality in place for mesh texturing with active development on the orthophoto weighted version.

new_year_texturing_update

Approach

We describe the approach here and development progress we document on an ongoing basis here.

Cost

Total cost for this project is $32,000.

Timeline

We were hoping to have this project out the door in 2025, but it’s been a combined research and development project, so it’s taken a bit longer. Basic implementation is now in place. Orthophoto weighted portion is now well under way, and we expect a testable development branch before the end of first quarter and likely in the next few weeks.

6 Likes

Software pilots

In addition to the headwaters project, we focused on smaller software pilot projects addressing ecosystem resilience, security, with some expected and some surprising benefits.

OCI Compliance and Podman

Willow helped us solve two problems. The first is the problem of bringing the WebODM ecosystem Open Container Initiative (OCI) compliance. This is a general need to ensure that OpenDroneMap can be used in multiple containerized environments, ensuring that docker isn’t the only way to run WebODM in a container.

In her own words:

[A]s a part of a project to get the full stack working on Podman, I’d made some modifications to webodm.sh to assist users in debugging. The --debug flag now prints further information about the user’s environment, including the value of their DOCKER_HOST environment variable as well as the versions of docker and docker-compose they’re using. It also detects some edge-cases that may lead to unintended crashes, and will suggest things the user should look at in case they’re affected.

She also submitted documentation for using WebODM with podman in docs.opendronemap.org) as an alternative containerization environment. I would have really appreciated having this in place back during my high performance computing admin days! I expect that others will appreciate the additional flexibility, and it provides us important future-proof alternatives as the broader landscape of containerization tools grows and changes. Yay for ecosystem resilience! Bonus points for rootless containers.

Cost

Cost for this project was $3500 USD, and it completed in the wee hours of 2025, right on time.

2 Likes

Alpine Testing

October, we did a small pilot looking at the impact of using Alpine (instead of Ubuntu) in our base images. The known advantages to using Alpine would be enforcing musl lbc, no systemd userland thus elimitating most CVEs, etc. a net security positive. The assumed penalty was potentially performance penalties.

We suggested that we’d start with lower complexity images, e.g. redis. And if all images were migrated, we’d have to address the ODM base image as well. But, best to start downstream of ODM and where most of the images are built to get a sense of the potential impact.

To that end, we kept things simple for a start, and swapped out Redis on Ubuntu for Valkey on Alpine and swapped PostgreSQL / PostGIS on Ubuntu for the PostgreSQL / PostGIS on Alpine.

We saw the following across a few different chips: Worst case with Alpine was not detectably different from default Ubuntu, best was 18% faster, mean was about 13% faster. Limited memory seems to drive the worst performance on Ubuntu.


In truth, we didn’t expect much with respect to performance change by changing those images – we simply started with the simplest images to change first. The surprise finding was seeing improved performance, where WebODM’s web and database transactions were likely causing performance penalties under memory pressure. Under no memory pressure, the alpine and Ubuntu images performed similarly, indicating that changing images for these two function parts of the WebODM stack offer no penalty, and the likely benefit’s associated with reduced security exposure promised by Alpine base images.

Developer Lead

@sashinexists led on this project.

Cost

$2000 USD

3 Likes

Cost

Cost for this project was $3500 USD, and it completed in the wee hours of 2025, right on time.

Windows Store Build

Keeping this as a placeholder. More news on this soon.

Developer Lead

Cost

Signing Key Infrastructure

Also a placeholder. Stay tuned!

2 Likes

Community Partner Initiatives, Ecosystem

We have seen some serious changes for OpenDroneMap in the broader ecosystem in the form of new ways to run OpenDroneMap’s ODM engine under the hood of other projects and new ways to flight plan. Let’s break it down.

Drone Tasking Manager (DroneTM)

Drone Tasking Manager (DroneTM) is a project and ecosystem funded by the Global Facility for Disaster Reduction and Recovery and developed in a partnership between Humanitarian OpenStreetMap Team (HOT) and Naxa Naxa that seeks to create an end-to-end tool for drone data collection to high resolution datasets for disaster response and community resilience.

This is a tool which cuts across a different axis of contributors: contributors across the world now have a unified interface for the planning, deployment, and processing of aerial data that is designed from the ground up to allow for the coordination of pilots across entire cities and landscapes.

As such, DroneTM serves as a new interface for OpenDroneMap and the first flight planner to be associated with the broader ecosystem.

ScaleODM

For years, folks have asked for better Kubernetes support from OpenDroneMap. Several attempts at deploying NodeODM via Kubernetes have emerged over the years all with some success and adoption. But with the emergence of DroneTM comes a new project, ScaleODM, focused on ground up Kubernetes orchestration with a NodeODM API. Quoting from the project:

ScaleODM is a Kubernetes-native orchestration layer for OpenDroneMap, designed to automatically scale processing workloads using native Kubernetes primitives such as Jobs, Deployments, and Horizontal Pod Autoscalers.

It aims to provide the same API surface as NodeODM, while replacing both NodeODM and ClusterODM with a single, cloud-native control plane.

There’s work to do yet for full coverage, but it’s a very promising start with an exciting road map:

Status Feature Release
:white_check_mark: NodeODM-compatible API (submit, status, download) v1
:white_check_mark: Processing pipeline using Argo workflows + ODM containers v1
:white_check_mark: Using the same job statuses as NodeODM (QUEUED, RUNNING, FAILED, COMPLETED, CANCELED) v1
:white_check_mark: Env var config for API / pipeline v1
:white_check_mark: Accept both zipped and unzipped imagery via S3 dir v1
:white_check_mark: Progress monitoring via API by hooking into the ODM container logs v1
:counterclockwise_arrows_button: Pre-processing to determine the required resource usage for the workflow (CPU / RAM allocated) v2
:counterclockwise_arrows_button: Split-merge workflow v2
:date: Accept GCP as part of job submission v2
:date: Federation of ScaleODM instances and task distribution v3
:date: Webhook triggering - send a notification to external system when complete v3
:date: Post processing of the final artifacts - capability present in NodeODM v4
:date: Consider a load balancing service across all ScaleODM instances in DB v4
:date: Adding extra missing things from NodeODM implementation, if required* v4
3 Likes