# Contribute to the open source platform

This section is for contributing to the Fuchsia open source platform and
operating system. Explore the open source code at [cs.fuchsia.dev](https://cs.fuchsia.dev)

## Basic workflows

 - [Get started](/docs/get-started/README.md) - If you're new to the Fuchsia
   platform, complete this guide first.
 - [Source code](/docs/get-started/get_fuchsia_source.md)
 - [fx workflows](build/fx.md)
 - [Pushing a package](/docs/concepts/packages/package_update.md)
 - [Working across different petals](source_code/working_across_petals.md)
 - [Build system](/docs/development/build/build_system/index.md)
 - [Workflow tips and FAQ](source_code/workflow_tips_and_faq.md)
 - [Testing FAQ](testing/faq.md)

## Languages

 - [README](languages/README.md) - Language usage in Fuchsia
 - [C/C++](languages/c-cpp/README.md)
 - [Dart](languages/dart/README.md)
 - [FIDL](languages/fidl/README.md)
 - [Go](languages/go/README.md)
 - [Rust](languages/rust/README.md)
 - [Python](languages/python/README.md)
 - [New language](languages/new/README.md) - How to bring a new language to Fuchsia

## API

 - [README](/docs/development/api/README.md) - Developing APIs for Fuchsia
 - [API Council](/docs/contribute/governance/api_council.md) - Definition of the API council
 - [System](/docs/development/api/system.md) - Rubric for designing the Zircon System Interface
 - [FIDL API][fidl-api] - Rubric for designing FIDL protocols
 - [FIDL style][fidl-style] - FIDL style rubric
 - [C](/docs/development/api/c.md) - Rubric for designing C library interfaces
 - [Tools](/docs/development/api/tools.md) - Rubrics for designing developer tools
 - [Devices](/docs/development/api/device_interfaces.md) - Rubric for designing device interfaces

## Testing

 - [Debugging workflow](/docs/development/debugging/debugging.md)
 - [Fuzz testing with LibFuzzer](/docs/development/testing/fuzzing/overview.md)
 - [Test components](/docs/development/testing/components/test_component.md)
 - [Test environments](/docs/contribute/testing/environments.md)
 - [Testability rubrics](/docs/development/testing/testability_rubric.md)
 - [Test flake policy](/docs/development/testing/test_flake_policy.md)
 - [Host-target interaction tests](/docs/development/testing/host_target_interaction_tests.md)
 - [Testing for Flakiness in CQ](/docs/development/testing/testing_for_flakiness_in_cq.md)
 - [Testing a USB Device](/docs/development/testing/testing_usb_device.md)

## Tracing

 - [Fuchsia tracing system](/docs/concepts/kernel/tracing-system.md)
 - [Tracing guides](/docs/development/tracing/README.md)
 - [Tracing for input events](/docs/development/ui-input/tracing.md)

## Internationalization

 - [Internationalization, localization and input methods](internationalization/README.md)

[fidl-style]: /docs/development/languages/fidl/guides/style.md
[fidl-api]: /docs/development/api/fidl.md
