Raivo Laanemets. Software consultant.

Beware of SWI-Prolog packs

The list of SWI-Prolog packs is not moderated (this is pointed out on the page!) and anyone can publish new versions of any pack. You get no mail notifications if someone does that to your package.

I had this happening to the arouter pack. I noticed it only after publishing a new version myself, with possibly incompatible changes to the fork. I had not received any issues or pull requests on the project's GitHub repo. The repo/issue tracker was clearly linked to in the README file.

I do not mind someone taking my code, making changes and publishing them. This is how Open Source works. However, I'm strongly against taking ownership and responsibility for code changes that I have not made. This has caused me trouble before. While the original code license shields me from legal responsibility, it does not shield me from moral responsibility. The forked package still refers to me as the author and refers to my GitHub project repo/tracker. This would definitely cause lots of issues for anyone trying to debug it as the actual code is coming from a totally different place.

The forked version of the pack uses GitHub URL for code location. I was able to track down the new publisher and contacted him about the changes. So far I have received no response in a week.

We had a similar problem in another project that used lots of packs as dependencies. The pack infrastructure cannot deal with pack versions. Some of the packs were co-developed with the project and needed to be used in lockstep with the main project. At some point we got sick of it and switched to git submodules for those packs and just included other packs in our repository.

There have been proposals to rewrite the current pack infrastructure. There are many issues about packs on the SWI-Prolog main tracker and on the roadmap tracker (compared to the total count of issues - more than an half). If you are using packs, switch to Git submodules too or include them in your repository, at least for now.


No comments have been added so far.

Email is not displayed anywhere.
URLs (max 3) starting with http:// or https:// can be used. Use @Name to mention someone.