# Mission and Values

This document is meant to help guide decisions about the future of bioio, be it
in terms of whether to accept new functionality, changes to existing functionality,
changes to package administrative tasks, etc. It serves as a reference for core
developers in guiding their work, and, as an introduction for newcomers who want to
learn where the project is headed and what the team's values are. You can also learn
how the project is managed by looking at our [governance model](./GOVERNANCE.md).

## Mission

bioio aims to provide a **consistent intuitive API for reading in or out-of-memory
image pixel data and metadata** for the many existing proprietary microscopy file
formats, and, an **easy-to-use API for converting from proprietary file formats to an
open, common, standard** -- all using either language agnostic or pure Python tooling.

In short:
> bioio provides a method to fully read and convert from an existing proprietary
> microscopy file format to, or _emulate_, a Python representation of the community
> standard metadata model regardless of image size, format, or location.

(The current community standard for microscopy images is the
[Open Microscopy Environment](https://www.openmicroscopy.org/))

We hope to accomplish this by:
* being **easy to use and install**. We will take extra care to ensure that this library
is easy to use and fully installable on Windows, Mac-OS, and Ubuntu.
* being **well-documented** with our entire API having up-to-date, useful docstrings
and additionally providing examples of more complex use-cases when possible.
* providing a **consistent and stable API** to users by following
[semantic versioning](https://semver.org/) and limiting the amount of breaking changes
introduced unless necessary for the future robustness or scalability of the library.
* sustaining **comparable or better performance when compared to more tailored file
format reading libraries**. We will regularly run benchmarks utilizing a set of varied
size images from all the file formats the library is capable of reading.
* **working closely with the microscopy community** while deciding on standards and best
practices for open, accessible, file formats and imaging and in deciding which
proprietary file formats and metadata selection are in need of support.

## Values
* We are **inclusive**. We welcome and mentor newcomers who are making their first
contribution and strive to grow our most dedicated contributors into core developers. We
have a [Code of Conduct](./CODE_OF_CONDUCT.md) to ensure that the bioio remains
a welcoming place for all.
* We are **community-driven**. We respond to feature requests and proposals on our
[issue tracker](https://github.com/bioio-devs/bioio/issues) and make
decisions that are driven by our user's requirements.
* We focus on **file IO and metadata conversion**, leaving image analysis functionality
and visualization to other libraries.
* We aim to **develop new methods of metadata extraction and conversion**, instead of
duplicating existing, or porting, from other libraries primarily by creating **language
agnostic methods** for metadata manipulation.
* We value **simple, readable implementations**. Readable code that is easy to
understand, for newcomers and maintainers alike, makes it easier to contribute new code
as well as prevent bugs.
* We value **education and documentation**. All functions should have docstrings,
preferably with examples, and major functionality should be explained in our tutorials.
Core developers can take an active role in finishing documentation examples.
* We **minimize [magic](https://en.wikipedia.org/wiki/Magic_(programming))** and always
provide a way for users to opt out of magical behaviour and guessing by providing
explicit ways to control functionality.

## Acknowledgments
We share a lot of our mission and values with the `napari` project, and acknowledge the
influence of their mission and values statement on this document.

Additionally, much of the work produced for this library is built on the shoulders of
giants. Notably:
* [Christoph Gohlke](https://www.lfd.uci.edu/~gohlke/) -- maintainer of `tifffile`,
`czifile`, and the `imagecodecs` libraries
* [Paul Watkins](https://github.com/elhuhdron) -- original creator of `pylibczi`
* [OME and Bio-Formats Team](https://github.com/ome/bioformats) -- proprietary
microscopy file format conversion and standards development
* [Python-Bio-Formats Team](https://github.com/CellProfiler/python-bioformats) --
Python Java Bridge for Bio-Formats and original implementations of OME Python
representation
* [imageio Team](https://github.com/imageio/imageio) -- robust, expansive, cross
platform image reading
* [Dask Team](https://dask.org/) -- delayed and out-of-memory parallel array
manipulation
* [xarray Team](https://github.com/pydata/xarray) -- coordinate and metadata attached
array handling and manipulation
