CauldronDevelopmentLLC / cbang

C! (cbang) is a library for cross-platform C++ development.
GNU Lesser General Public License v2.1
57 stars 40 forks source link

Which open source projects use Cbang? #105

Open bkmgit opened 2 years ago

bkmgit commented 2 years ago

Cbang is used in Camotics and JmpAPI. As indicated at https://github.com/CauldronDevelopmentLLC/cbang/issues/16 it is not expected to be used in many other projects. Are there any others notable projects using Cbang for which a packaged Cbang in linux repositories may be helpful?

jcoffland commented 2 years ago

Also, the new Open-Source Folding@home client: https://github.com/FoldingAtHome/fah-client-bastet and the image server https://github.com/buildbotics/duerer (Edit: duerer is retired)

petterreinholdtsen commented 2 weeks ago

With three users of the library, I guess it is time to stabilize the API and ABI to make it possible to use various versions of the library.

jcoffland commented 2 weeks ago

All the projects that use cbang are developed by one person, me. I don't want to give up the flexibility to be able to change the API at will. Whenever I make breaking changes I rebuild all the dependent projects, make any necessary updates to those projects and push the changes to GitHub. This way all the dependent projects always (almost) build with the latest cbang.

I understand this is not the traditional approach but it's allows me to be more productive. I have limited time for these projects so any extra burden means I get less done.

petterreinholdtsen commented 1 week ago

[Joseph Coffland]

All the projects that use cbang are developed by one person, me. I don't want to give up the flexibility to be able to change the API at will. Whenever I make breaking changes I rebuild all the dependent projects, make any necessary updates to those projects and push the changes to GitHub. This way all the dependent projects always (almost) build with the latest cbang.

Sadly a contiously changing and API-breaking support library approach only work well for one person. Renaming structs and methods changing content and behaviour and updating the SONAME major number every time it is done is not really much extra work. But sure, if require more disipline and making sure such API-breaking behaviour is done consiously.

-- Happy hacking Petter Reinholdtsen

jcoffland commented 1 week ago

That's one way to look at it. Another is that I loose the flexibility make even minor changes to the API with out creating a lot of extra work.

In C++ it is especially difficult to maintain API compatibility. With templates the entire class must exist in a header file. Any change to any part of the template code triggers a breaking API change. It's much easier in C where the API is a few structs and function calls.