How to Contribute and Request Features

How To Request Features

All software needs user feedback and feature requests, to grow and maintain alignment with the needs of its users.

OpenDroneMap is FOSS software. Free and open source (FOSS) projects are interesting from the inside and outside: from the outside, successful ones feel like they should be able to do anything, and it’s hard to know what a reasonable request is. From the inside of a project, they can feel very resource constrained: largely by time, money, and opportunity overload.

Demanding that a feature be implemented is probably not going to convince the development team to do so. Imagine if somebody knocked on your door and asked you to "stop reading this page right now and come to my house to cook me dinner!". Your first response might very reasonably be "who on earth is this person and why should I spend my time and energy fulfilling his agenda instead of my own?".

Suggesting that a feature be implemented is a more effective (and cordial) way to ask for new features, especially if you're prepared to offer some of your own resources (time, funds or both) to help get the feature implemented. Explaining why your suggestion can benefit others can also help. If the feature benefits you exclusively, it might be harder to convince others to do the work for you.

A feature request can be submitted as issues on the applicable Github repository (e.g., WebODM or ODM or similar) or more simply as a discussion topic on the community forum. Try to start by searching these sources to see if someone else has already brought it up. Sometimes a feature is already in the works, or has at least been discussed.

To request the addition of support for new drone cameras: please share a set of test images on the datasets channel on the forum. Without test images there's not much the developers can do.

And importantly, the trick is to listen: if someone within the project says: "This is a big lift, we need MONEY or TIME or SOMEONE TO HELP CODE IT" (or possibly a combination of the three) then there are two answers that work really well in response:

Ok. I didn’t know it was a big feature request! I hope someone comes along with the necessary resources. As a community member, I would be happy to be an early user and tester!

or

Let’s figure out if we can put together the resources to get this done! Here’s what I can contribute toward it: …

We are glad you are excited to see new features added to the project. Some new features need support, and some are easier to implement. We'll do our best to help you understand where your request falls, and we appreciate any support you can provide.

Cara Kontribusi

OpenDroneMap bergantung pada kontribusi komunitas. Kamu bisa berkontribusi dalam berbagai hal, meskipun kamu bukan seorang pemrogram.

Forum Komunitas

Jika kamu berniat untuk terlibat, mentok dipermasalahan atau ingin bergabung, forum berikut merupakan tempat yang cocok untuk memulai. Bisa jadi pertanyaanmu sudah terjawab atau kamu bisa mendapatkan beberapa kiat-kiat jitu lain. Kamu juga bisa berkontribusi data terbuka milikmu agar yang lain dapat mencoba. Forum ini adalah wahana yang bagus sebelum mencoba melaporkan bug atau mencoba untuk terhubung dengan pengembang sebelum membuat fitur baru.

Melaporkan Bug.

Bug dilacak sebagai isu di Github. Silahkan buat sebuah isu di repositori dan tandai dengan tag Bug.

Mengutarakan masalah dan berikan detil tambahan agar dapat membantu pengelola mereka ulang masalahnya:

  • Gunakan judul yang jelas dan desktriptif tentang isunya untuk mempermudah mengenali masalahnya.

  • Describe the exact steps which reproduce the problem in as many details as possible. For example, start by explaining how you run ODM (Docker, Vagrant, etc), e.g. which command exactly you used in the terminal. When listing steps, don't just say what you did, but explain how you did it.

  • Provide specific examples to demonstrate the steps. Include links to files or GitHub projects, or copy/pasteable snippets, which you use in those examples. If you're providing snippets in the issue, use Markdown code blocks.

  • Describe the behavior you observed after following the steps and point out what exactly is the problem with that behavior.

  • Jelaskan perilaku mana yang Anda harapkan sebagai gantinya dan mengapa?

  • Include screenshots and animated GIFs which show you following the described steps and clearly demonstrate the problem. You can use this tool to record GIFs on macOS and Windows, and this tool or this one on Linux.

  • If the problem is related to performance, please post your machine's specs (host and guest machine).

  • If the problem wasn't triggered by a specific action, describe what you were doing before the problem happened and share more information using the guidelines below.

Sertakan detil tentang konfigurasimu dan lingkungannya:

  • Which version of ODM are you using? A stable release? a clone of master?

  • What's the name and version of the OS you're using?

  • Are you running ODM in a virtual machine or Docker? If so, which VM software are you using and which operating systems and versions are used for the host and the guest?

Template For Submitting Bug Reports

[Short description of problem here]

**Reproduction Steps:**

1. [First Step]
2. [Second Step]
3. [Other Steps...]

**Expected behavior:**

[Describe expected behavior here]

**Observed behavior:**

[Describe observed behavior here]

**Screenshots and GIFs**

![Screenshots and GIFs which follow reproduction steps to demonstrate the problem](url)

**ODM version:** [Enter ODM version here]
**OS and version:** [Enter OS name and version here]

**Additional information:**

* Problem started happening recently, didn't happen in an older version of ODM: [Yes/No]
* Problem can be reliably reproduced, doesn't happen randomly: [Yes/No]
* Problem happens with all datasets and projects, not only some datasets or projects: [Yes/No]

Pull Requests

  • Include screenshots and animated GIFs in your pull request whenever possible.

  • Ikuti Panduan Gaya Python PEP8

  • End files with a newline.

  • Hindari kode yang bergantung kepada platform:
    • Use require('fs-plus').getHomeDirectory() to get the home directory.

    • gunakan path.join() untuk menggabungkan nama berkas.

    • Use os.tmpdir() rather than /tmp when you need to reference the temporary directory.

  • Using a plain return when returning explicitly at the end of a function.
    • Not return null, return undefined, null, or undefined

Learn to edit and help improve this page!