diff --git a/README.md b/README.md index fbdd0bee6..25b2d2b83 100644 --- a/README.md +++ b/README.md @@ -16,121 +16,89 @@ serialization and deserialization to and from strings. It can also preserve existing comment in deserialization/serialization steps, making it a convenient format to store user input files. -## Documentation +## Project Status -[JsonCpp documentation][JsonCpp-documentation] is generated using [Doxygen][]. +JsonCpp is a mature project in maintenance mode. Our priority is providing a stable, +reliable JSON library for the long tail of C++ development. -[JsonCpp-documentation]: http://open-source-parsers.github.io/jsoncpp-docs/doxygen/index.html -[Doxygen]: http://www.doxygen.org +### Current Focus -## A note on backward-compatibility +* **Security:** Addressing vulnerabilities and fuzzing results. +* **Compatibility:** Ensuring the library builds without warnings on the latest versions of GCC, +Clang, and MSVC. +* **Reliability:** Fixing regressions and critical logical bugs. -* `1.y.z` is built with C++11. -* `0.y.z` can be used with older compilers. -* `00.11.z` can be used both in old and new compilers. -* Major versions maintain binary-compatibility. +### Out of Scope -### Special note +* **Performance:** We are not competing with SIMD-accelerated or reflection-based parsers. +* **Features:** We are generally not accepting requests for new data formats or major API changes. -The branch `00.11.z`is a new branch, its major version number `00` is to show -that it is different from `0.y.z` and `1.y.z`, the main purpose of this branch -is to make a balance between the other two branches. Thus, users can use some -new features in this new branch that introduced in 1.y.z, but can hardly applied -into 0.y.z. +JsonCpp remains a primary choice for developers who require comment preservation and support for +legacy toolchains where modern C++ standards are unavailable. The library is intended to be a +reliable dependency that does not require frequent updates or major migration efforts. -## Using JsonCpp in your project +## A note on backward-compatibility -### The vcpkg dependency manager +* **`1.y.z` (master):** Actively maintained. Requires C++11. -You can download and install JsonCpp using the [vcpkg](https://github.com/Microsoft/vcpkg/) -dependency manager, which has installation instruction dependent on your -build system. For example, if you are in a CMake project, the -[CMake install tutorial](https://learn.microsoft.com/en-us/vcpkg/get_started/get-started?pivots=shell-powershell) -suggests the follow installation method. +* **`0.y.z`:** Legacy support for pre-C++11 compilers. Maintenance is limited to critical security fixes. -First, clone and set up `vcpkg`. +* **`00.11.z`:** Discontinued. -```sh - git clone https://github.com/Microsoft/vcpkg.git - cd vcpkg - ./bootstrap-vcpkg.sh -``` +Major versions maintain binary compatibility. Critical security fixes are accepted for both the `master` and `0.y.z` branches. -Then, create a [vcpkg.json manifest](https://learn.microsoft.com/en-us/vcpkg/reference/vcpkg-json), -enabling manifest mode and adding JsonCpp to the manifest's dependencies list. +## Integration -```sh - vcpkg new --application - vcpkg add port jsoncpp -``` - -> [!NOTE]: you can use vcpkg in either classic mode or manifest mode (recommended). - -#### Classic mode +> [!NOTE] +> Package manager ports (vcpkg, Conan, etc.) are community-maintained. Please report outdated versions or missing generators to their respective repositories. -If your project does not have a `vcpkg.json`, -your project is in [Classic mode](https://learn.microsoft.com/en-us/vcpkg/concepts/classic-mode) -you can install JsonCpp by directly invoking the `install` command: +### vcpkg +Add `jsoncpp` to your `vcpkg.json` manifest: -```sh - vcpkg install jsoncpp +```json +{ + "dependencies": ["jsoncpp"] +} ``` -### Manifest mode +Or install via classic mode: `vcpkg install jsoncpp`. -If your project *does* have a vcpkg.json manifest, your project is in [Manifest mode](https://learn.microsoft.com/en-us/vcpkg/concepts/manifest-mode) -and you need to add JsonCpp to your package manifest dependencies, then invoke -install with no arguments. +### Conan ```sh - vcpkg add port jsoncpp - vcpkg install +conan install --requires="jsoncpp/[*]" --build=missing ``` -Example manifest: - -```sh -{ - "name": "best-app-ever", - "dependencies": [ "jsoncpp" ], -} -``` +If you are using a `conanfile.txt` in a Conan 2 project, ensure you use the appropriate generators: -> [!NOTE] The JsonCpp port in vcpkg is kept up to date by Microsoft team members and community contributors. -> If the version is out of date, please [create an issue or pull request](https://github.com/Microsoft/vcpkg) -> on the vcpkg repository. +```ini +[requires] +jsoncpp/[*] -### Conan package manager +[generators] +CMakeToolchain +CMakeDeps +``` -You can download and install JsonCpp using the [Conan](https://conan.io/) -package manager: +### Meson ```sh - conan install -r conancenter --requires="jsoncpp/[*]" --build=missing +meson wrap install jsoncpp ``` -The JsonCpp package in Conan Center is kept up to date by [ConanCenterIndex](https://github.com/conan-io/conan-center-index) -contributors. If the version is out of date, please create an issue or pull request on the -Conan Center Index repository. - ### Amalgamated source -See the [Wiki entry on Amalgamated Source](https://github.com/open-source-parsers/jsoncpp/wiki/Amalgamated-(Possibly-outdated)). +> [!NOTE] +> This approach may be outdated. -### The Meson Build System +For projects requiring a single-header approach, see the [Wiki entry](https://github.com/open-source-parsers/jsoncpp/wiki/Amalgamated-(Possibly-outdated)). -If you are using the [Meson Build System](http://mesonbuild.com), then you can -get a wrap file by downloading it from [Meson WrapDB](https://mesonbuild.com/Wrapdb-projects.html), -or simply use `meson wrap install jsoncpp`. - -### Other ways +## Documentation -If you have trouble, see the -[Wiki](https://github.com/open-source-parsers/jsoncpp/wiki), or post a question -as an Issue. +Documentation is generated via [Doxygen](http://open-source-parsers.github.io/jsoncpp-docs/doxygen/index.html). +Additional information is available on the [Project Wiki](https://github.com/open-source-parsers/jsoncpp/wiki). ## License -See the [LICENSE](./LICENSE) file for details. In summary, JsonCpp is licensed -under the MIT license, or public domain if desired and recognized in your -jurisdiction. +JsonCpp is licensed under the MIT license, or public domain where recognized. +See [LICENSE](./LICENSE) for details.