Bemanproject/beman issues

The repository bemanproject/beman seems not to be being maintained:

  • There is an example/ directory last updated four months ago that seems to have been superseded by bemanproject/exemplar
  • It contains a libraries.json file that only contains bemanproject/exemplar and eliaskosunen/scnlib
  • The instructions in “Getting Started” are broken:
$ git clone https://github.com/beman-org/beman.git
$ cd beman
$ cmake -S . -B build
$ cmake --build build
$ ctest --test-dir build

It builds scn and the old example directory successfully, but then ctest --test-dir build just tries and fails to run the tests from scn.

I think we should remove libraries.json and example/ and rewrite the README.md. We should also probably remove presentations/ because it isn’t being kept updated; it just has one presentation, but there have been a lot of Beman presentations by now.

1 Like

The project is currently maintained right now to organize the community itself. Including:

  • The Beman Project Standard
  • The Code of Conduct
  • The README for the repo serves as the project’s landing page, at least until we get a webpage that serves that purpose better

I agree that things like the presentations directory and the build system configuration in the repo are unmaintained. I’d rather those be removed than kept in the repo in their current state.

I don’t know that we even need a whole conversation in a weekly meeting to clean up the repo. I’m comfortable reviewing and merging a cleanup PR as long as nobody objects.

Background on the CMakeLists.txt, libraries.json, etc.

From day one of The Beman Project (the “Library in a Week” project from C++Now 2024), before there was a single Beman library or even a project name, there was interest in providing the libraries in the project as a single distribution of some sort to make it easy to just grab all of the projects and experiment with them. I wrote the CMakeLists.txt as a demonstration of how to use CMake’s FetchContent feature to provide that feature in a reasonably straightforward way. I added logic in those CMakeLists.txt to parse libraries.json to configure FetchContent to demonstrate how that distribution could be maintained without requiring continuous tweaks to a CMake file so that:

  • Engineers that are wary of CMake could still contribute
  • Tools could be trivially developed to bump versions as relevant projects evolve
  • Options would be available to maintain support for package managers like Conan and vcpkg without duplicating effort
    • i.e., enough automation would avoid the need to add new versions of libraries to all of Conan and vcpkg and whatever else we wanted to support

I still think those broad outcomes of ergonomic publishing and distribution workflows are were we want to be. But it’s fair to say we haven’t had enough volunteer effort to iterate on or even replace the initial proof-of-concept. So I’m OK removing that code and replacing it with one or more issues capturing a roadmap for where we’d like to end up.

1 Like

C++Now is coming rapidly and there maybe opportunity to make progress on the unified repo aspect of things – it still clearly a goal of the project. As for the presentations directory, if we’re going to remove that then I’ll want to snapshot my stuff there so it doesn’t fully disappear.

I will go make a thread about this, we should probably have a structured plan for things to be done before CppNow.

1 Like

Making a note here so I don’t forget, but also in case someone else is interested.

The link here is relevant: Tutorial: Package a library with vcpkg | Microsoft Learn

A good portion is describing an “overlay”. If I understand correctly, this approach would be a way to implement a full Beman release that can build on top of the vcpkg upstream packages in a github repo.

I’m flexible whether that sort of approach would go in the beman repo or in a separate repo. Whatever consensus indicates on that decision works for me.

1 Like