PointCloudLibrary / PointCloudLibrary/pcl
Move OpenNI and VTK support from io to their own modules
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 11.1k
- Forks
- 4.7k
- Avg merge
- 4d 10h
- Merged PRs (30d)
- 6
Description
In the https://github.com/cwi-dis/cwipc toolkit that I maintain I depend on libpcl for some features. Specifically for this bug report: I use the ply-file readers from the io package. My toolkit is cross-platform.
But the io package is rather heavy: it also depends on vtk and OpenNI (at least when it is built for the Windows all-in-one installer).
So this means my users have a whole lot of packages they need to install, even though my toolkit doesn't actually need them.
Both of the mentioned dependencies have their own specific problems, especially on Windows:
- vtk is large and unwieldy and versions seem to follow each other quickly, making it difficult to instal.
- OpenNI is very sensitive for how it is installed, and how it is added to
PATH.
(I have a similar issue with the boost dependency, but I get the impression that the libpcl developers are already moving away from boost as much as possible, so I'm hoping that problem will eventually go away by itself).
Context
See above.
Expected behavior
If the OpenNI and VTK I/O handlers were in their own package, in stead of in io, I wouldn't have to worry about them (because I don't use them).
Current Behavior
Currently all I/O is in a single package io, which means that the only way to disable (or enable) certain features is to build libpcl from source.
Describe the solution you'd like
If the OpenNI and VTK I/O handlers were in their own package, in stead of in io, I wouldn't have to worry about them (because I don't use them).
Describe alternatives you've considered
An alternative is that I build libpcl from source with exactly the options I need, and that I distribute that version with my cwipc package. But that would "lock in" the users of my package to have access only to the libpcl features that I happen to have selected, whereas with the setup where I don't distribute a private copy of libpcl my users have the freedom to use any libpcl feature they want (because I'm linking to the libpcl that they have installed).
Additional context
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the io package and its OpenNI and VTK handlers, then trace how their dependencies are included in the cross-platform builds and Windows all-in-one installer. Done means OpenNI and VTK support can be provided as separate packages or modules while users of the remaining io features no longer need those dependencies.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- build-system
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100