1# How to submit a bug report 2 3If you received an error message, please include it and any exceptions. 4 5We commonly need to know what platform you are on: 6 * JDK/JRE version (i.e., ```java -version```) 7 * Operating system (i.e., ```uname -a```) 8 9# How to contribute 10 11We definitely welcome patches and contributions to Conscrypt! Here are some 12guideline and information about how to do so. 13 14## Before getting started 15 16In order to protect both you and ourselves, you will need to sign the 17[Contributor License Agreement](https://cla.developers.google.com/clas). 18 19We follow the [Clang Format](http://clang.llvm.org/docs/ClangFormat.html). 20There is support in most IDEs. 21 22| IDE | Clang Format Plugin | 23| --- | ------------------- | 24| Eclipse | [CppStyle](https://marketplace.eclipse.org/content/cppstyle) | 25| IntelliJ | [ClangFormatIJ](https://plugins.jetbrains.com/plugin/8396) | 26 27If planning on making a large change, feel free to [create an issue on 28GitHub](https://github.com/conscrypt/issues/new) or send an 29email to [conscrypt@googlegroups.com](https://groups.google.com/forum/#!forum/conscrypt) to discuss 30beforehand. 31 32## Proposing changes 33 34Make sure that `./gradlew check` (`gradlew check` on Windows) completes 35successfully without any new warnings (see [Building](BUILDING.md)). Then create a Pull Request 36with your changes. When the changes are accepted, they will be merged or cherry-picked by 37a Conscrypt developer. 38 39## Source Overview 40 41The high-level modules are __Common__, __Android__, __OpenJDK__, and __Platform__. 42 43### Common 44 45This contains the bulk of the code for both Java and C. This isn't an actual module and builds no 46artifacts. Rather, the other modules just point to this directory as source. 47 48### Android 49 50This module provides the `Platform` class for Android and also adds compatibility classes for 51supporting various versions of Android. This generates an `aar` library artifact. 52 53### OpenJDK 54 55These modules provide the `Platform` class for non-Android (OpenJDK-based) systems. It also provides 56a native library loader supports bundling the shared library with the JAR. 57 58### Platform 59This module contains code that is bundled with the Android operating system. The inclusion in the 60build is only to ensure that changes to other modules do not accidentally break the Android build. 61