-
Notifications
You must be signed in to change notification settings - Fork 2.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
add clips_vendor to index of current distros #43450
base: master
Are you sure you want to change the base?
Conversation
Can you point to a license file for CLIPS? I see this on the website (https://clipsrules.net/):
but I can't find a license file here: https://svn.code.sf.net/p/clipsrules/code/branches/64x (or by searching the files after cloning it locally using |
The license is documented in the basic programming guide https://clipsrules.net/documentation/v641/bpg641.pdf Edit: Looking at it again, it seems a bit ambiguous. Sourceforge lists it as public domain on the project page: https://sourceforge.net/projects/clipsrules/ All documentation pdfs lists the MIT-O as follows (which is also the license I use in the vendor package):
I can also reach out to the author of CLIPS to clear this up, if needed. |
general comment: I think the license of the vendor package doesn't need to match that of the vendor, but I could be wrong Maybe @nuclearsandwich or @cottsay can say what we do in most of our vendor packages. |
It would be a lot cleaner if we had a definitive license/statement we could point to, but maybe others think this is enough.
I think we usually have both the license of the vendored software and the license of the vendor package itself (e.g., Apache 2.0) in the vendor package's
|
ah nice, I was not aware of that! I would like to keep the vendor package under MIT-O aswell, but should probably at least add a comment in the package.xml file to reflect that it applies to both the vendor and the vendored software. I also contacted the software author to request adding a LICENSE file (and if possible, update the license tag in sourceforge): https://sourceforge.net/p/clipsrules/discussion/776945/thread/f3176d3efe/ |
As per the discussion of ros/rosdistro#43450. Also, update the version to reflect the added license.txt, see: https://sourceforge.net/p/clipsrules/discussion/776945/thread/f3176d3efe/#e913
Per the author, the license is now part of the source code https://sourceforge.net/p/clipsrules/discussion/776945/thread/f3176d3efe/#e913 |
Please Add This Package to be indexed in the rosdistro.
humble jazzy and rolling
The source is here:
https://github.com/carologistics/clips_vendor
Checks
Explanation
I would like to vendor CLIPS (https://clipsrules.net/) as a preparation for releasing a high-level knowledge-based reasoning framework the CLIPS-Executive for ROS 2 using it. We have been using CLIPS for many years now, but never went through with actually making it available to the ROS ecosystem, which I now want to correct.
A very old version of CLIPS is available in Ubuntu already (https://packages.ubuntu.com/noble/clips) (Version 6.30-4.1build1) as well as on fedora (https://packages.fedoraproject.org/pkgs/clips/clips/) with version 6.31-10.
However, Version 6.4x has been around for years now, offering a more modern API and version 7 is currently being developed as well.
Packaging CLIPS is a bit of a hassle as it is plain C code and makefiles (and the build system in general is minimalistic, not compiling shared libraries).
The packaged versions for Ubuntu and Fedora use plain makefiles and provide pkg-config files for projects.
To make it broadly available in the ROS ecosystem I instead wrote a new CMake based buildsys that is used by the proposed clips_vendor package, which allows for a way easier integration with other ROS projects and offers some additional QoL things such as optionally building the java-based examples and IDE.
The vendor package exposes 3 ways of leveraging CLIPS, as plain C library, as C++ library or as C++ library with added namespaces (by automatically wrapping every code block with a namespace). The latter variant is what I would recommend for usage to minimize the amount of unintentional interference with other libraries (which is sadly still unavoidable to some extend due to the large number of preprocessor macros used throughout CLIPS).
The package is building fine on Ubuntu and Fedora (tested on humble and jazzy and saw no breaking changes in rolling), I have no Windows setup to test it on at the moment, but CLIPS itself is compatible with Windows and therefore I only expect some tweaking to be necessary (if at all) to make it available on Windows.
There will be two warnings when building (and I already oppressed many more):
I could patch them out in principle, but for maintainability I so far tried to stay away from patching individual things in CLIPS (I am not the maintainer of CLIPS, just an enthusiastic user).
Once the package is indexed I intend to start the release procedure, following the documentation of releasing a package.
So feedback is very welcome :)