PointCloudLibrary / PointCloudLibrary/pcl

Move OpenNI and VTK support from io to their own modules

Open
#5,798 6 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

kind: request status: triage
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.