From 949a9d4e6531abec0ad1c33aa61b606385443bee Mon Sep 17 00:00:00 2001 From: Jordan Bayles Date: Mon, 2 Mar 2026 17:08:06 -0800 Subject: [PATCH 1/3] Update README with project status and focus Add project status and focus areas to README --- README.md | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index fbdd0bee6..52cd95d8a 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,30 @@ 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. +## Project Status + +JsonCpp is a mature project in maintenance mode. Our priority is providing a stable, +reliable JSON library for the long tail of C++ development. + +### Current Focus + +**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. + +### Out of Scope + +**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. + +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. + ## Documentation [JsonCpp documentation][JsonCpp-documentation] is generated using [Doxygen][]. @@ -30,13 +54,9 @@ format to store user input files. * `00.11.z` can be used both in old and new compilers. * Major versions maintain binary-compatibility. -### Special note - -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. +> [!NOTE] +> We are happy to take critical security features for any of these three branches, however at this +> point in the project only the `1.y.z` is receiving somewhat regular updates. ## Using JsonCpp in your project From 634ba24ad542ae03c27a4d3f39dbbabc647ebc64 Mon Sep 17 00:00:00 2001 From: Jordan Bayles Date: Mon, 2 Mar 2026 17:23:34 -0800 Subject: [PATCH 2/3] Update README.md --- README.md | 123 ++++++++++++------------------------------------------ 1 file changed, 27 insertions(+), 96 deletions(-) diff --git a/README.md b/README.md index 52cd95d8a..ff1c674e5 100644 --- a/README.md +++ b/README.md @@ -23,134 +23,65 @@ reliable JSON library for the long tail of C++ development. ### Current Focus -**Security:** Addressing vulnerabilities and fuzzing results. - -**Compatibility:** Ensuring the library builds without warnings on the latest versions of GCC, +* **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. +* **Reliability:** Fixing regressions and critical logical bugs. ### Out of Scope -**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. +* **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. 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. -## Documentation - -[JsonCpp documentation][JsonCpp-documentation] is generated using [Doxygen][]. - -[JsonCpp-documentation]: http://open-source-parsers.github.io/jsoncpp-docs/doxygen/index.html -[Doxygen]: http://www.doxygen.org - ## A note on backward-compatibility -* `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. - -> [!NOTE] -> We are happy to take critical security features for any of these three branches, however at this -> point in the project only the `1.y.z` is receiving somewhat regular updates. +* **`1.y.z` (master):** Actively maintained. Requires C++11. -## Using JsonCpp in your project +* **`0.y.z`:** Legacy support for pre-C++11 compilers. Maintenance is limited to critical security fixes. -### The vcpkg dependency manager - -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. - -First, clone and set up `vcpkg`. - -```sh - git clone https://github.com/Microsoft/vcpkg.git - cd vcpkg - ./bootstrap-vcpkg.sh -``` - -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. - -```sh - vcpkg new --application - vcpkg add port jsoncpp -``` +* **`00.11.z`:** Discontinued. -> [!NOTE]: you can use vcpkg in either classic mode or manifest mode (recommended). +Major versions maintain binary compatibility. Critical security fixes are accepted for both the `master` and `0.y.z` branches. -#### Classic mode +## Integration -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 - -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. - -```sh - vcpkg add port jsoncpp - vcpkg install -``` +Or install via classic mode: `vcpkg install jsoncpp`. -Example manifest: +### Conan ```sh -{ - "name": "best-app-ever", - "dependencies": [ "jsoncpp" ], -} +conan install --requires="jsoncpp/[*]" --build=missing ``` -> [!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. - -### Conan package manager - -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)). - -### The Meson Build System +For projects requiring a single-header approach, see the [Wiki entry](https://github.com/open-source-parsers/jsoncpp/wiki/Amalgamated). -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. From 7ddfd9544fbb93fd8f33e9975b2d0879573503bf Mon Sep 17 00:00:00 2001 From: Jordan Bayles Date: Tue, 3 Mar 2026 16:52:32 -0800 Subject: [PATCH 3/3] docs: Restore maintainer disclaimers and fix Conan instructions This commit adds back the warning about community-maintained package managers and the warning about the Amalgamated Source being possibly outdated to prevent misdirected issues. It also includes the necessary generators for Conan 2 in the README's Conan section to resolve issue #1629 while preserving the brevity of the new layout. --- README.md | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ff1c674e5..25b2d2b83 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,9 @@ Major versions maintain binary compatibility. Critical security fixes are accept ## Integration +> [!NOTE] +> Package manager ports (vcpkg, Conan, etc.) are community-maintained. Please report outdated versions or missing generators to their respective repositories. + ### vcpkg Add `jsoncpp` to your `vcpkg.json` manifest: @@ -66,6 +69,17 @@ Or install via classic mode: `vcpkg install jsoncpp`. conan install --requires="jsoncpp/[*]" --build=missing ``` +If you are using a `conanfile.txt` in a Conan 2 project, ensure you use the appropriate generators: + +```ini +[requires] +jsoncpp/[*] + +[generators] +CMakeToolchain +CMakeDeps +``` + ### Meson ```sh @@ -74,7 +88,10 @@ meson wrap install jsoncpp ### Amalgamated source -For projects requiring a single-header approach, see the [Wiki entry](https://github.com/open-source-parsers/jsoncpp/wiki/Amalgamated). +> [!NOTE] +> This approach may be outdated. + +For projects requiring a single-header approach, see the [Wiki entry](https://github.com/open-source-parsers/jsoncpp/wiki/Amalgamated-(Possibly-outdated)). ## Documentation