aboutsummaryrefslogtreecommitdiff
path: root/docs/concepts/index.rst
diff options
context:
space:
mode:
Diffstat (limited to 'docs/concepts/index.rst')
-rw-r--r--docs/concepts/index.rst146
1 files changed, 28 insertions, 118 deletions
diff --git a/docs/concepts/index.rst b/docs/concepts/index.rst
index 8c0d164d7..1f9c5c2a2 100644
--- a/docs/concepts/index.rst
+++ b/docs/concepts/index.rst
@@ -1,129 +1,39 @@
.. _docs-concepts:
-=============
-About Pigweed
-=============
+========
+Concepts
+========
+.. grid:: 1
-Why Build Pigweed?
-==================
-Our goal is to make embedded software development efficient, robust, and
-heck, even delightful, for projects ranging from weekend Arduino experiements
-to commercial products selling in the millions.
+ .. grid-item-card:: :octicon:`info` Facades & Backends
+ :link: docs-facades
+ :link-type: ref
+ :class-item: sales-pitch-cta-secondary
-Embedded software development is notoriously arcane. Developers often have to
-track down vendor toolchains specific to the hardware they're targeting, write
-their code against hardware-specfic SDKs/HALs, and limit themselves to a small
-subset of C. Project teams are on their own to figure out how to set up a build
-system, automated testing, serial communication, and many other embedded
-project fundamentals. This is error prone and takes effort away from developing
-the actual product!
+ A key concept in Pigweed's architecture. If you're using Pigweed
+ modules extensively in complex ways or contributing to upstream Pigweed,
+ you'll probably need to understand these ideas.
-There are solutions on the market that promise to solve all of these problems
-with a monolithic framework—just write your code against the framework and use
-hardware the framework supports, and you get an efficient embedded development
-environment. But this approach doesn't work well for existing projects that
-weren't built on the framework from the beginning or for projects that have
-specific needs the framework wasn't designed for. We know from experience that
-this approach alone doesn't meet our goal.
+.. grid:: 2
-So we have set out to build a platform that supports successful embedded
-developers at every scale by allowing them to adopt as much or as little of
-what Pigweed provides as they need, in the way that works best for their
-project.
+ .. grid-item-card:: :octicon:`info` FAQs
+ :link: docs-faq
+ :link-type: ref
+ :class-item: sales-pitch-cta-secondary
-How Pigweed Works
-=================
-Pigweed provides four foundational pillars to support your embedded development:
+ Answers to general, frequently asked questions about Pigweed.
-* :ref:`A comprehensive set of libraries for embedded development<docs-concepts-embedded-development-libraries>`
-* :ref:`A hermetic and replicable development environment<docs-concepts-development-environment>`
-* :ref:`A system for building, testing, and linting your project<docs-concepts-build-system>`
-* :ref:`A full framework for new projects that want a turn-key solution<docs-concepts-full-framework>`
+ .. grid-item-card:: :octicon:`info` Glossary
+ :link: docs-glossary
+ :link-type: ref
+ :class-item: sales-pitch-cta-secondary
-.. _docs-concepts-embedded-development-libraries:
+ Concise definitions of key Pigweed terms.
-Embedded Development Libraries
-------------------------------
-Pigweed enables you to use modern C++ and software development best practices in
-your embedded project without compromising performance or increasing memory use
-compared to conventional embedded C.
+.. toctree::
+ :maxdepth: 1
+ :hidden:
-We provide libraries (:ref:`modules <docs-glossary-module>`) for
-:ref:`strings<module-pw_string>`, :ref:`time<module-pw_chrono>`,
-:ref:`assertions<module-pw_assert>`, :ref:`logging<module-pw_log>`,
-:ref:`serial communication<module-pw_spi>`, :ref:`remote procedure calls (RPC)
-<module-pw_rpc>`, and :ref:`much more<docs-module-guides>`.
-
-These modules are designed to work both on your host machine and on a wide
-variety of target devices. We achieve this by writing them in an inherently
-portable way, or through the facade/backend pattern. As a result, you can write
-most or all of your code to run transparently on your host machine and targets.
-
-.. _docs-concepts-development-environment:
-
-Development Environment
------------------------
-Managing toolchains, build systems, and other software needed for a project is
-complex. Pigweed provides all of this out of the box for Linux, Mac, and
-Windows systems in a sealed environment that leaves the rest of your system
-untouched. Getting new developers started is as simple as cloning your project
-repository and activating the Pigweed environment.
-
-.. _docs-concepts-build-system:
-
-Build System
-------------
-Pigweed modules are built to integrate seamlessly into projects using GN. We
-are rapidly expanding our good support for CMake and nascent support for Bazel
-so you can use your build system of choice. For new projects, Pigweed provides a
-build system you can integrate your own code into that works out of the box.
-
-.. _docs-concepts-full-framework:
-
-Full Framework (coming in 2022)
--------------------------------
-For those who want a fully-integrated solution that provides everything Pigweed
-has to offer with an opinionated project structure, we are working diligently
-on a :ref:`Pigweed framework<module-pw_system>`. Stay tuned for more news to
-come! In the meantime, we invite you to discuss this and collaborate with us
-on `Discord <https://discord.gg/M9NSeTA>`_.
-
-.. _docs-concepts-right-for-my-project:
-
-Is Pigweed Right for My Project?
-================================
-Pigweed is still in its early stages, and while we have ambitious plans for it,
-Pigweed might not be the right fit for your project today. Here are some things
-to keep in mind:
-
-* Many individual modules are stable and are running on shipped devices today.
- If any of those modules meet your needs, you should feel safe bringing them
- into your project.
-
-* Some modules are in very early and active stages of development. They likely
- have unstable APIs and may not work on all supported targets. If this is the
- case, it will be indicated in the module's documentation. If you're interested
- in contributing to the development of one of these modules, we encourage you
- to experiment with them. Otherwise they aren't ready for use in most projects.
-
-* Setting up new projects to use Pigweed is currently not very easy, but we are
- working to address that. In the meantime, join the Pigweed community on
- `Discord <https://discord.gg/M9NSeTA>`_ to get help.
-
-Supported language versions
-===========================
-
-C++
----
-Most Pigweed code requires C++17, but a few modules, such as
-:ref:`module-pw_kvs` and :ref:`module-pw_tokenizer`, work with C++14. All
-Pigweed code is compatible with C++20. Pigweed defines GN toolchains for
-building with C++14 and C++20; see :ref:`target-host` target documentation for
-more information. For Bazel, the C++ standard version can be configured using
-the `--cxxopt flag <https://bazel.build/docs/user-manual#cxxopt>`_.
-
-.. _docs-concepts-python-version:
-
-Python
-------
-Pigweed officially supports Python 3.8, 3.9, 3.10, and 3.11.
+ ../facades
+ ../glossary
+ FAQs <../faq>