# Request for Contribution

**URL:** <https://discourse.libcinder.org/t/request-for-contribution/892>\
**Category:** Developing Cinder\
**Created:** [October 9, 2017, 1:46am UTC](https://discourse.libcinder.org/t/request-for-contribution/892 "2017-10-09T01:46:25Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![andrewfb](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.libcinder.org/andrewfb/32/2_2.png) [@andrewfb](https://discourse.libcinder.org/u/andrewfb)\
**Post date:** [October 9, 2017, 1:46am UTC](https://discourse.libcinder.org/t/request-for-contribution/892/1 "2017-10-09T01:46:25Z")

</div>

It’s common for Cinder users to be interested in contributing code to the project, but they’re unsure where to begin. I’ll transpose a github comment [posted here](https://github.com/cinder/Cinder/issues/1915) with a few ideas of varying scales which would make for self-contained pull requests.

In particular, as we continue to transition away from a dependency on Boost, there’s some work to do to remove the last bits of usage.  
• There are several uses of Boost.preprocessor to instantiate template code for various types which I think at this point should simply be unrolled. Examples include code [like this](https://github.com/cinder/Cinder/blob/master/src/cinder/Stream.cpp#L795) or [like this](https://github.com/cinder/Cinder/blob/master/src/cinder/ip/Flip.cpp#L220)  
• The `ci::PolyLine` boolean operations use Boost.geometry, and I believe the [Clipper library](http://www.angusj.com/delphi/clipper.php) would make a suitable replacement  
• The `ci::split()` method in Utilities should be implemented without using Boost  
• Various string methods from Boost are used that we’d probably do well to replicate in Utilities.h - examples include `boost::trim()` and `boost::erase_all()` in `Svg.cpp`, among a few others. These are not UTF-8 friendly, but I believe still have their place.

Until Apple begins shipping a more recent Clang, we’ll have to retain a subset of Boost to enable `fs::path`. However I believe with those changes and perhaps a few others, we could build without Boost at all on Visual C++ 2015+, clang 3.9+ and gcc 5.3+, though I have not verified the latter two.

Thanks,  
Andrew

---

<div class="post-metadata">

**Author:** ![lithium](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.libcinder.org/lithium/32/38_2.png) [@lithium](https://discourse.libcinder.org/u/lithium)\
**Post date:** [October 9, 2017, 10:36am UTC](https://discourse.libcinder.org/t/request-for-contribution/892/2 "2017-10-09T10:36:30Z")

</div>

> <https://github.com/cinder/Cinder/pull/1918>
