# How to submit a bug report If you received an error message, please include it and any exceptions. We commonly need to know what platform you are on: * JDK/JRE version (i.e., ```java -version```) * Operating system (i.e., ```uname -a```) # How to contribute We definitely welcome patches and contributions to Conscrypt! Here are some guideline and information about how to do so. ## Before getting started In order to protect both you and ourselves, you will need to sign the [Contributor License Agreement](https://cla.developers.google.com/clas). We follow the [Clang Format](http://clang.llvm.org/docs/ClangFormat.html). There is support in most IDEs. | IDE | Clang Format Plugin | | --- | ------------------- | | Eclipse | [CppStyle](https://marketplace.eclipse.org/content/cppstyle) | | IntelliJ | [ClangFormatIJ](https://plugins.jetbrains.com/plugin/8396) | If planning on making a large change, feel free to [create an issue on GitHub](https://github.com/conscrypt/issues/new) or send an email to [conscrypt@googlegroups.com](https://groups.google.com/forum/#!forum/conscrypt) to discuss beforehand. ## Proposing changes Make sure that `./gradlew check` (`gradlew check` on Windows) completes successfully without any new warnings (see [Building](BUILDING.md)). Then create a Pull Request with your changes. When the changes are accepted, they will be merged or cherry-picked by a Conscrypt developer. ## Source Overview The high-level modules are __Common__, __Android__, __OpenJDK__, and __Platform__. ### Common This contains the bulk of the code for both Java and C. This isn't an actual module and builds no artifacts. Rather, the other modules just point to this directory as source. ### Android This module provides the `Platform` class for Android and also adds compatibility classes for supporting various versions of Android. This generates an `aar` library artifact. ### OpenJDK These modules provide the `Platform` class for non-Android (OpenJDK-based) systems. It also provides a native library loader supports bundling the shared library with the JAR. ### Platform This module contains code that is bundled with the Android operating system. The inclusion in the build is only to ensure that changes to other modules do not accidentally break the Android build.