Skip to content

Commit 87139dd

Browse files
authored
Update README with project status and focus (#1639)
* Update README with project status and focus Add project status and focus areas to README * Update README.md * 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.
1 parent dc45da8 commit 87139dd

1 file changed

Lines changed: 49 additions & 81 deletions

File tree

README.md

Lines changed: 49 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -16,121 +16,89 @@ serialization and deserialization to and from strings. It can also preserve
1616
existing comment in deserialization/serialization steps, making it a convenient
1717
format to store user input files.
1818

19-
## Documentation
19+
## Project Status
2020

21-
[JsonCpp documentation][JsonCpp-documentation] is generated using [Doxygen][].
21+
JsonCpp is a mature project in maintenance mode. Our priority is providing a stable,
22+
reliable JSON library for the long tail of C++ development.
2223

23-
[JsonCpp-documentation]: http://open-source-parsers.github.io/jsoncpp-docs/doxygen/index.html
24-
[Doxygen]: http://www.doxygen.org
24+
### Current Focus
2525

26-
## A note on backward-compatibility
26+
* **Security:** Addressing vulnerabilities and fuzzing results.
27+
* **Compatibility:** Ensuring the library builds without warnings on the latest versions of GCC,
28+
Clang, and MSVC.
29+
* **Reliability:** Fixing regressions and critical logical bugs.
2730

28-
* `1.y.z` is built with C++11.
29-
* `0.y.z` can be used with older compilers.
30-
* `00.11.z` can be used both in old and new compilers.
31-
* Major versions maintain binary-compatibility.
31+
### Out of Scope
3232

33-
### Special note
33+
* **Performance:** We are not competing with SIMD-accelerated or reflection-based parsers.
34+
* **Features:** We are generally not accepting requests for new data formats or major API changes.
3435

35-
The branch `00.11.z`is a new branch, its major version number `00` is to show
36-
that it is different from `0.y.z` and `1.y.z`, the main purpose of this branch
37-
is to make a balance between the other two branches. Thus, users can use some
38-
new features in this new branch that introduced in 1.y.z, but can hardly applied
39-
into 0.y.z.
36+
JsonCpp remains a primary choice for developers who require comment preservation and support for
37+
legacy toolchains where modern C++ standards are unavailable. The library is intended to be a
38+
reliable dependency that does not require frequent updates or major migration efforts.
4039

41-
## Using JsonCpp in your project
40+
## A note on backward-compatibility
4241

43-
### The vcpkg dependency manager
42+
* **`1.y.z` (master):** Actively maintained. Requires C++11.
4443

45-
You can download and install JsonCpp using the [vcpkg](https://github.com/Microsoft/vcpkg/)
46-
dependency manager, which has installation instruction dependent on your
47-
build system. For example, if you are in a CMake project, the
48-
[CMake install tutorial](https://learn.microsoft.com/en-us/vcpkg/get_started/get-started?pivots=shell-powershell)
49-
suggests the follow installation method.
44+
* **`0.y.z`:** Legacy support for pre-C++11 compilers. Maintenance is limited to critical security fixes.
5045

51-
First, clone and set up `vcpkg`.
46+
* **`00.11.z`:** Discontinued.
5247

53-
```sh
54-
git clone https://github.com/Microsoft/vcpkg.git
55-
cd vcpkg
56-
./bootstrap-vcpkg.sh
57-
```
48+
Major versions maintain binary compatibility. Critical security fixes are accepted for both the `master` and `0.y.z` branches.
5849

59-
Then, create a [vcpkg.json manifest](https://learn.microsoft.com/en-us/vcpkg/reference/vcpkg-json),
60-
enabling manifest mode and adding JsonCpp to the manifest's dependencies list.
50+
## Integration
6151

62-
```sh
63-
vcpkg new --application
64-
vcpkg add port jsoncpp
65-
```
66-
67-
> [!NOTE]: you can use vcpkg in either classic mode or manifest mode (recommended).
68-
69-
#### Classic mode
52+
> [!NOTE]
53+
> Package manager ports (vcpkg, Conan, etc.) are community-maintained. Please report outdated versions or missing generators to their respective repositories.
7054
71-
If your project does not have a `vcpkg.json`,
72-
your project is in [Classic mode](https://learn.microsoft.com/en-us/vcpkg/concepts/classic-mode)
73-
you can install JsonCpp by directly invoking the `install` command:
55+
### vcpkg
56+
Add `jsoncpp` to your `vcpkg.json` manifest:
7457

75-
```sh
76-
vcpkg install jsoncpp
58+
```json
59+
{
60+
"dependencies": ["jsoncpp"]
61+
}
7762
```
7863

79-
### Manifest mode
64+
Or install via classic mode: `vcpkg install jsoncpp`.
8065

81-
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)
82-
and you need to add JsonCpp to your package manifest dependencies, then invoke
83-
install with no arguments.
66+
### Conan
8467

8568
```sh
86-
vcpkg add port jsoncpp
87-
vcpkg install
69+
conan install --requires="jsoncpp/[*]" --build=missing
8870
```
8971

90-
Example manifest:
91-
92-
```sh
93-
{
94-
"name": "best-app-ever",
95-
"dependencies": [ "jsoncpp" ],
96-
}
97-
```
72+
If you are using a `conanfile.txt` in a Conan 2 project, ensure you use the appropriate generators:
9873

99-
> [!NOTE] The JsonCpp port in vcpkg is kept up to date by Microsoft team members and community contributors.
100-
> If the version is out of date, please [create an issue or pull request](https://github.com/Microsoft/vcpkg)
101-
> on the vcpkg repository.
74+
```ini
75+
[requires]
76+
jsoncpp/[*]
10277

103-
### Conan package manager
78+
[generators]
79+
CMakeToolchain
80+
CMakeDeps
81+
```
10482

105-
You can download and install JsonCpp using the [Conan](https://conan.io/)
106-
package manager:
83+
### Meson
10784

10885
```sh
109-
conan install -r conancenter --requires="jsoncpp/[*]" --build=missing
86+
meson wrap install jsoncpp
11087
```
11188

112-
The JsonCpp package in Conan Center is kept up to date by [ConanCenterIndex](https://github.com/conan-io/conan-center-index)
113-
contributors. If the version is out of date, please create an issue or pull request on the
114-
Conan Center Index repository.
115-
11689
### Amalgamated source
11790

118-
See the [Wiki entry on Amalgamated Source](https://github.com/open-source-parsers/jsoncpp/wiki/Amalgamated-(Possibly-outdated)).
91+
> [!NOTE]
92+
> This approach may be outdated.
11993
120-
### The Meson Build System
94+
For projects requiring a single-header approach, see the [Wiki entry](https://github.com/open-source-parsers/jsoncpp/wiki/Amalgamated-(Possibly-outdated)).
12195

122-
If you are using the [Meson Build System](http://mesonbuild.com), then you can
123-
get a wrap file by downloading it from [Meson WrapDB](https://mesonbuild.com/Wrapdb-projects.html),
124-
or simply use `meson wrap install jsoncpp`.
125-
126-
### Other ways
96+
## Documentation
12797

128-
If you have trouble, see the
129-
[Wiki](https://github.com/open-source-parsers/jsoncpp/wiki), or post a question
130-
as an Issue.
98+
Documentation is generated via [Doxygen](http://open-source-parsers.github.io/jsoncpp-docs/doxygen/index.html).
99+
Additional information is available on the [Project Wiki](https://github.com/open-source-parsers/jsoncpp/wiki).
131100

132101
## License
133102

134-
See the [LICENSE](./LICENSE) file for details. In summary, JsonCpp is licensed
135-
under the MIT license, or public domain if desired and recognized in your
136-
jurisdiction.
103+
JsonCpp is licensed under the MIT license, or public domain where recognized.
104+
See [LICENSE](./LICENSE) for details.

0 commit comments

Comments
 (0)