blob: eb85d87aa8e0c6bd8373813358adfc1c5bd9a720 [file] [log] [blame]
.. _docs-mission:
======================
Mission & Philosophies
======================
-----------
Our Mission
-----------
.. pull-quote::
Create both *software* and *process* foundations for *sustained*,
*robust*, and *rapid* *embedded* product development with *large teams*.
Each component of our mission has additional meaning:
- **Software** - Our modular components and surrounding tooling are our
primary deliverable. The software is the product of our philosophies.
- **Process** - Developing robust software processes is hard, and not something
all teams have time for. Our mission is to create reusable processes that can
save time and increase team happiness. Our approach is to offer tooling and
standards. For example, our integrated code formatting, module directory
structure, style guide, test processes, and more are all designed for reuse.
- **Sustained** - Products often live a long time or are part of a series of
related products; and over time the requirements change. Our mission is to
make these sustained development situations easier. Our approach is to create
flexible and reusable foundations to gracefully handle changes. For example,
our porting abstractions make switching a microcontroller vendor easier.
- **Robust** - Creating robust products is hard, yet important for finding
market and product success. Our mission is to assist teams in creating robust
products. Our approach is to:
#. Invest heavily in software reliability tooling and processes (unit testing,
sanitizing, formatting, etc)
#. Comprehensively apply said tooling and processes to Pigweed, making Pigweed
a robust foundation
#. Make said tooling available for downstream use, so teams can ensure code
they write is robust
- **Rapid** - Creating products quickly is critical in today's market. Our
mission is to make shipping products faster with Pigweed. Our approach is to
accelerate product development by offering reliable foundations (less bug
hunting), having great onboarding tooling (low engineer churn/setup), offering
modules solving common but hard problems (RPC), etc.
- **Embedded** - Our mission is to support software embedded in products such as
earbuds, watches, phones, thermostats, satellites, cars, drones, and related.
- **Large teams** - Developing software with large teams in the embedded space
is increasingly frequent due to more capable embedded processors.
Traditionally, teams were 1-5 people, but are increasingly much larger
(50-200 person) teams. Our mission is to make developing larger products with
correspondingly larger teams easier and faster, with an eye to support rapid
prototyping where there is a chance to scale from an idea to production. Our
approach is the investment in common abstractions, common practices, common
standards, tooling around those standards, and a focus on automation and
repeatability.