# Remote ITKModule build on top of another

**URL:** https://discourse.itk.org/t/remote-itkmodule-build-on-top-of-another/1547
**Category:** Engineering
**Tags:** python, wrapping, cmake
**Created:** [January 25, 2019, 1:49pm UTC](https://discourse.itk.org/t/remote-itkmodule-build-on-top-of-another/1547 "2019-01-25T13:49:25Z")
**Posts on this page:** 17
**Page:** 1

<div class="post-metadata">

### Author: ![T4mmi](https://discourse.itk.org/user_avatar/discourse.itk.org/t4mmi/32/311_2.png) [@T4mmi](https://discourse.itk.org/u/T4mmi)
#### Post date: [January 25, 2019, 1:49pm UTC](https://discourse.itk.org/t/remote-itkmodule-build-on-top-of-another/1547/1 "2019-01-25T13:49:25Z")

</div>

Hi again,

I did not found any tool for 3D object thickness measurement in ITK…  
So I used a composition of [ITKBinaryThinning3D](https://github.com/T4mmi/ITKBinaryThinning3D) and [EuclideanDistance](https://itk.org/Doxygen/html/classitk_1_1SignedMaurerDistanceMapImageFilter.html) to compute the distance from medial axis to the outside as the object thickness.  
_the ultimate goal is to retro-propagate the medial axis thickness to adjacent voxels, but hey walk before you run_

**I’m trying to build an ITK composite filter with that could wrap in a single instruction such behavior**

I started a module : [ITKThickness3D](https://github.com/T4mmi/ITKThickness3D) but how to point another “remote” module in its project cmake conf ?

I added [ITKBinaryThinning3D](https://github.com/T4mmi/ITKBinaryThinning3D) and [EuclideanDistance](https://itk.org/Doxygen/html/classitk_1_1SignedMaurerDistanceMapImageFilter.html) in the [itk-module.cmake](https://github.com/T4mmi/ITKThickness3D/blob/master/itk-module.cmake), but ofc it does not compile since it is not part of ITK “core”.

Thanks

---

<div class="post-metadata">

### Author: ![matt.mccormick](https://discourse.itk.org/user_avatar/discourse.itk.org/matt.mccormick/32/7_2.png) [@matt.mccormick](https://discourse.itk.org/u/matt.mccormick)
#### Post date: [January 25, 2019, 2:24pm UTC](https://discourse.itk.org/t/remote-itkmodule-build-on-top-of-another/1547/2 "2019-01-25T14:24:38Z")

</div>

Hi there Thomas,

> [@T4mmi](#):
>
> the ultimate goal is to retro-propagate the medial axis thickness to adjacent voxels, but hey walk before you run

🆒

> [@T4mmi](#):
>
> I started a module : [ITKThickness3D](https://github.com/T4mmi/ITKThickness3D) but how to point another “remote” module in its project cmake conf ?

Yes, in the module dependencies, (itk-module.cmake) add `BinaryThinning3D` (note there should be no `ITK` prefix because we are referencing the [module name](https://github.com/T4mmi/ITKBinaryThinning3D/blob/54452141dee6b1e6b496a4acb2e3df62af3b59c5/itk-module.cmake#L14).

Build ITKBinaryThinning3D first against your ITK build tree. Then, build `ITKThickness3D`.

For an example, see [this module’s build configuration](https://github.com/KitwareMedical/ITKUltrasound/blob/master/.circleci/config.yml).

HTH,  
Matt

---

<div class="post-metadata">

### Author: ![T4mmi](https://discourse.itk.org/user_avatar/discourse.itk.org/t4mmi/32/311_2.png) [@T4mmi](https://discourse.itk.org/u/T4mmi)
#### Post date: [January 28, 2019, 3:39pm UTC](https://discourse.itk.org/t/remote-itkmodule-build-on-top-of-another/1547/3 "2019-01-28T15:39:02Z")

</div>

Thanks for explanations and links, I managed to do it _I think_ …  
**But** I still have issues with the compilation and I don’t know where they come from…

- CircleCI / Linux : fails to test (complains about the TestDriver that can’t be found `Could not find executable /ITK-build/bin/Thickness3DTestDriver`) and packaging does not find the dependency …
- TravisCI / OSX : flags errors about itkConceptChecking …
- Appveyor / Windows : runs smoothly but no artifacts produced…

kinda lost here

also a crelated issue: **can you compile such project (ITKModule with wrapping) within a conda environnement ?**  
_to avoid hundreads of commits on github and appveyor/circle/travis overload/latency…_

---

<div class="post-metadata">

### Author: ![matt.mccormick](https://discourse.itk.org/user_avatar/discourse.itk.org/matt.mccormick/32/7_2.png) [@matt.mccormick](https://discourse.itk.org/u/matt.mccormick)
#### Post date: [January 28, 2019, 4:08pm UTC](https://discourse.itk.org/t/remote-itkmodule-build-on-top-of-another/1547/4 "2019-01-28T16:08:38Z")

</div>

> [@T4mmi](#):
>
> Thanks for explanations and links, I managed to do it _I think_ …  
> **But** I still have issues with the compilation and I don’t know where they come from…
> 
> - CircleCI / Linux : fails to test (complains about the TestDriver that can’t be found `Could not find executable /ITK-build/bin/Thickness3DTestDriver` ) and packaging does not find the dependency …
> - TravisCI / OSX : flags errors about itkConceptChecking …
> - Appveyor / Windows : runs smoothly but no artifacts produced…

The errors / warnings on the CI are pointing to issues that we can resolve. I created a few issues on the repository with some pointers and suggestions. E.g. the concept check errors are likely related to [wrapping for 2D images algorithms that are only defined for 3D images](https://github.com/T4mmi/ITKThickness3D/issues/3).

> [@T4mmi](#):
>
> also a crelated issue: **can you compile such project (ITKModule with wrapping) within a conda environnement ?**  
> _to avoid hundreads of commits on github and appveyor/circle/travis overload/latency…_

A conda environment unfortunately does not help us here due to details related to the build system, CI resources, and binary compatibility.

That said, a migration to Azure Pipelines should help greatly. I will look into this over the next month and include you for review.

---

<div class="post-metadata">

### Author: ![T4mmi](https://discourse.itk.org/user_avatar/discourse.itk.org/t4mmi/32/311_2.png) [@T4mmi](https://discourse.itk.org/u/T4mmi)
#### Post date: [January 28, 2019, 4:42pm UTC](https://discourse.itk.org/t/remote-itkmodule-build-on-top-of-another/1547/5 "2019-01-28T16:42:31Z")

</div>

Thanks a lot for your help,  
_contributing to ITK is delightful thanks to your support_

> [@matt.mccormick](#):
>
> That said, a migration to Azure Pipelines should help greatly. I will look into this over the next month and include you for review.

Just had a look at azure pipelines, that seems like a real nice thing to use !

---

<div class="post-metadata">

### Author: ![T4mmi](https://discourse.itk.org/user_avatar/discourse.itk.org/t4mmi/32/311_2.png) [@T4mmi](https://discourse.itk.org/u/T4mmi)
#### Post date: [January 30, 2019, 4:00pm UTC](https://discourse.itk.org/t/remote-itkmodule-build-on-top-of-another/1547/6 "2019-01-30T16:00:00Z")

</div>

Hi again,

I finally manage to get rid of most errors and pass tests&build !  
_Travis CI manage to build one wheel for python 3.6, how to provide 2.7, 3.5 and 3.7 wheels ?_

**But** CircleCI provides me an include error at wrapping step:

```auto
[9/16] Generating ../../../../../../ITK-cp27-cp27m-manylinux1_x64/Wrapping/itkThickness3D.xml
FAILED: ../../../ITK-cp27-cp27m-manylinux1_x64/Wrapping/itkThickness3D.xml 
cd /work/_skbuild/linux-x86_64-2.7/cmake-build/Wrapping/Modules/Thickness3D && /work/_skbuild/linux-x86_64-2.7/cmake-build/Wrapping/Generators/CastXML/castxml/bin/castxml -o /work/ITK-cp27-cp27m-manylinux1_x64/Wrapping/itkThickness3D.xml --castxml-gccxml --target=x86_64-linux-gnu --castxml-start _wrapping_ --castxml-cc-gnu "(" /opt/rh/devtoolset-2/root/usr/bin/g++ -Wno-array-bounds -Wno-array-bounds -std=c++11 ")" -w -c @/work/ITK-cp27-cp27m-manylinux1_x64/Wrapping/Thickness3D.castxml.inc /work/ITK-cp27-cp27m-manylinux1_x64/Wrapping/itkThickness3D.cxx
In file included from /work/ITK-cp27-cp27m-manylinux1_x64/Wrapping/itkThickness3D.cxx:16:
/work/include/itkMedialThicknessImageFilter3D.h:22:10: fatal error: 'itkBinaryThinningImageFilter3D.h' file not found
#include "itkBinaryThinningImageFilter3D.h"
         ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.

```

Appveyor runs smoothly but does not produce artifacts … 😕

---

<div class="post-metadata">

### Author: ![matt.mccormick](https://discourse.itk.org/user_avatar/discourse.itk.org/matt.mccormick/32/7_2.png) [@matt.mccormick](https://discourse.itk.org/u/matt.mccormick)
#### Post date: [January 30, 2019, 4:27pm UTC](https://discourse.itk.org/t/remote-itkmodule-build-on-top-of-another/1547/7 "2019-01-30T16:27:26Z")

</div>

> [@T4mmi](#):
>
> I finally manage to get rid of most errors and pass tests&build !

Well done! 👏 🌮 ☀

> [@T4mmi](#):
>
> Travis CI manage to build one wheel for python 3.6, how to provide 2.7, 3.5 and 3.7 wheels ?

In the TravisCI configuration, change:

> <https://github.com/T4mmi/ITKThickness3D/blob/056b7615f73a4973f024e0ab1645583822991559/.travis.yml#L18>

to:

```auto
/Users/Kitware/Dashboards/ITK/ITKPythonPackage/scripts/macpython-build-module-wheels.sh 3.6

```

Note that some projects restricted the Travis CI buildsd ot Python 3.6 due to timeout issues. This will not be an issue after moving to Azure Pipelines.

> [@T4mmi](#):
>
> **But** CircleCI provides me an include error at wrapping step:

I think changing

> <https://github.com/T4mmi/ITKThickness3D/blob/056b7615f73a4973f024e0ab1645583822991559/.circleci/config.yml#L72>

to:

```auto
./ITKPythonPackage/scripts/dockcross-manylinux-build-module-wheels.sh

```

should do the trick (the previous command overwrite the existing build with ITKBinaryThinning3D).

> [@T4mmi](#):
>
> Appveyor runs smoothly but does not produce artifacts … 😕

There is the output:

```auto
   package init file '_skbuild\win-amd64-3.7\cmake-install\itk\ __init__.py' not found (or not a regular file)

```

which may be an issue with scikit-build or the ITK builds – the ITK 5.0 RC 1 is coming out soon. Let’s try again building against it.

CC: @jcfr

---

<div class="post-metadata">

### Author: ![T4mmi](https://discourse.itk.org/user_avatar/discourse.itk.org/t4mmi/32/311_2.png) [@T4mmi](https://discourse.itk.org/u/T4mmi)
#### Post date: [January 30, 2019, 4:38pm UTC](https://discourse.itk.org/t/remote-itkmodule-build-on-top-of-another/1547/8 "2019-01-30T16:38:00Z")

</div>

Ok,

I’ll try to build against different python versions with Travis  
Thanks for CircleCI … i didn’t know where it could comes from…  
For AppVeyor, I’ll wait to build against ITKv5.

Meanwhile I’ll try to build the wheels against ITKv4  
_hope I wont get the same [issue](https://github.com/T4mmi/ITKBinaryThinning3D/issues/7) than with ITKBinaryThinning3D…_

---

<div class="post-metadata">

### Author: ![T4mmi](https://discourse.itk.org/user_avatar/discourse.itk.org/t4mmi/32/311_2.png) [@T4mmi](https://discourse.itk.org/u/T4mmi)
#### Post date: [January 31, 2019, 11:45am UTC](https://discourse.itk.org/t/remote-itkmodule-build-on-top-of-another/1547/9 "2019-01-31T11:45:15Z")

</div>

> [@matt.mccormick](#):
>
> ```auto
> ./dockcross-manylinux-download-cache-and-build-module-wheels.sh
> 
> ```
> 
> to:
> 
> ```auto
> ./ITKPythonPackage/scripts/dockcross-manylinux-build-module-wheels.sh
> 
> ```

still no luck, ikeep ending with the same error

```auto
[8/16] Generating ../../../../../../ITK-cp27-cp27m-manylinux1_x64/Wrapping/itkThickness3D.xml[9/16] Generating ../../../../../../ITK-cp27-cp27m-manylinux1_x64/Wrapping/itkThickness3D.xml
FAILED: ../../../ITK-cp27-cp27m-manylinux1_x64/Wrapping/itkThickness3D.xml 
cd /work/_skbuild/linux-x86_64-2.7/cmake-build/Wrapping/Modules/Thickness3D && /work/_skbuild/linux-x86_64-2.7/cmake-build/Wrapping/Generators/CastXML/castxml/bin/castxml -o /work/ITK-cp27-cp27m-manylinux1_x64/Wrapping/itkThickness3D.xml --castxml-gccxml --target=x86_64-linux-gnu --castxml-start _wrapping_ --castxml-cc-gnu "(" /opt/rh/devtoolset-2/root/usr/bin/g++ -Wno-array-bounds -Wno-array-bounds -std=c++11 ")" -w -c @/work/ITK-cp27-cp27m-manylinux1_x64/Wrapping/Thickness3D.castxml.inc /work/ITK-cp27-cp27m-manylinux1_x64/Wrapping/itkThickness3D.cxx
In file included from /work/ITK-cp27-cp27m-manylinux1_x64/Wrapping/itkThickness3D.cxx:16:
/work/include/itkMedialThicknessImageFilter3D.h:22:10: fatal error: 'itkBinaryThinningImageFilter3D.h' file not found
#include "itkBinaryThinningImageFilter3D.h"
         ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.

```

---

<div class="post-metadata">

### Author: ![T4mmi](https://discourse.itk.org/user_avatar/discourse.itk.org/t4mmi/32/311_2.png) [@T4mmi](https://discourse.itk.org/u/T4mmi)
#### Post date: [February 5, 2019, 3:37pm UTC](https://discourse.itk.org/t/remote-itkmodule-build-on-top-of-another/1547/10 "2019-02-05T15:37:21Z")

</div>

_Ok so I’ve been trying several things but I’m kinda stuck with this :_

# Travis is fine 🙏🍾

- Added multiple python versions in [travis.yml](https://github.com/T4mmi/ITKThickness3D/blob/master/.travis.yml#18):

```auto
- /Users/Kitware/Dashboards/ITK/ITKPythonPackage/scripts/macpython-build-module-wheels.sh 2.7 3.5 3.6 3.7

```

> Everything is OK, build runs smoothly and wheels are produced

# Appveyor is ok, but…

The error about skbuild was not the cause _(it also appears in the [build log of the dependency](https://ci.appveyor.com/project/T4mmi/itkbinarythinning3d/builds/22138186) that still produces wheels)_.

```auto
package init file '_skbuild\win-amd64-3.7\cmake-install\itk\ __init__.py' not found (or not a regular file)

```

The error came from a wrong path, it [has been fixed](https://github.com/T4mmi/ITKThickness3D/commit/712b51f27ee4ee948af35c35ab0c702941fa3ca1)..

> But how to provide python 2 wheel ?

# CircleCI [does not find dependencies’ sources](https://circleci.com/gh/T4mmi/ITKThickness3D/222) 😣

I copied the config from the [ITKUltrasound](https://github.com/KitwareMedical/ITKUltrasound/blob/master/.circleci/config.yml) module, but still CircleCI does not found the dependency headers…

- **Build Module Dependencies** : OK
- **Build Python packages** : Fails
- Changed the [config.yml](https://github.com/T4mmi/ITKThickness3D/blob/dev/.circleci/config.yml#72) to package using `./ITKPythonPackage/scripts/dockcross-manylinux-build-module-wheels.sh` didn’t change anything…

```auto
/work/include/itkMedialThicknessImageFilter3D.h:22:10: fatal error: 'itkBinaryThinningImageFilter3D.h' file not found

```

---

<div class="post-metadata">

### Author: ![matt.mccormick](https://discourse.itk.org/user_avatar/discourse.itk.org/matt.mccormick/32/7_2.png) [@matt.mccormick](https://discourse.itk.org/u/matt.mccormick)
#### Post date: [February 6, 2019, 1:04am UTC](https://discourse.itk.org/t/remote-itkmodule-build-on-top-of-another/1547/11 "2019-02-06T01:04:45Z")

</div>

> [@T4mmi](#):
>
> # Travis is fine 🍾🍾
> 
> - Added multiple python versions in [travis.yml](https://github.com/T4mmi/ITKThickness3D/blob/master/.travis.yml#18):
> 
> ```auto
> - /Users/Kitware/Dashboards/ITK/ITKPythonPackage/scripts/macpython-build-module-wheels.sh 2.7 3.5 3.6 3.7
> 
> ```
> 
> > Everything is OK, build runs smoothly and wheels are produced

Well done! 🌞 🌮 🍾

> [@T4mmi](#):
>
> The error about skbuild was not the cause _(it also appears in the [build log of the dependency](https://ci.appveyor.com/project/T4mmi/itkbinarythinning3d/builds/22138186) that still produces wheels)_ .
> 
> ```auto
> package init file '_skbuild\win-amd64-3.7\cmake-install\itk\ __init__.py' not found (or not a regular file)
> 
> ```
> 
> The error came from a wrong path, it [has been fixed](https://github.com/T4mmi/ITKThickness3D/commit/712b51f27ee4ee948af35c35ab0c702941fa3ca1)…

Nice catch. 🦅 👁

> [@T4mmi](#):
>
> But how to provide python 2 wheel ?

Since ITK 5 requires C++11, we cannot provide a Python 2 wheel on Windows because binary compatibility with the Python 2 distribution requires Visual Studio 2008.

> [@T4mmi](#):
>
> # CircleCI [does not find dependencies’ sources](https://circleci.com/gh/T4mmi/ITKThickness3D/222) 😣
> 
> I copied the config from the [ITKUltrasound](https://github.com/KitwareMedical/ITKUltrasound/blob/master/.circleci/config.yml) module, but still CircleCI does not found the dependency headers…
> 
> - **Build Module Dependencies** : OK
> - **Build Python packages** : Fails
> - Changed the [config.yml](https://github.com/T4mmi/ITKThickness3D/blob/dev/.circleci/config.yml#72) to package using `./ITKPythonPackage/scripts/dockcross-manylinux-build-module-wheels.sh` didn’t change anything…
> 
> ```auto
> /work/include/itkMedialThicknessImageFilter3D.h:22:10: fatal error: 'itkBinaryThinningImageFilter3D.h' file not found
> 
> ```

I created a [pull request to work around this issue](https://github.com/T4mmi/ITKThickness3D/pull/4), but I will continue to investigate. There may be interaction with the remote modules and their use in the build. Would you like to submit _ITKBinaryThinning3D_ as a remote module in ITK? This means adding a file to [_ITK/Modules/Remote_](https://github.com/InsightSoftwareConsortium/ITK/tree/master/Modules/Remote) similar to the other files there by [submitting a pull request](https://github.com/InsightSoftwareConsortium/ITK/blob/master/CONTRIBUTING.md). The community would also benefit from improved awareness and access to your module. 🌲 🥁

---

<div class="post-metadata">

### Author: ![T4mmi](https://discourse.itk.org/user_avatar/discourse.itk.org/t4mmi/32/311_2.png) [@T4mmi](https://discourse.itk.org/u/T4mmi)
#### Post date: [February 6, 2019, 8:53am UTC](https://discourse.itk.org/t/remote-itkmodule-build-on-top-of-another/1547/12 "2019-02-06T08:53:08Z")

</div>

> [@matt.mccormick](#):
>
> I created a [pull request to work around this issue](https://github.com/T4mmi/ITKThickness3D/pull/4)

![CircleCI](https://discourse.itk.org/uploads/default/original/1X/cfd4ea3303ba763a2a81fa23c01b2523b8011b46.svg)🍾🤯🙌🍾

**Thanks a lot !**

> [@matt.mccormick](#):
>
> Would you like to submit _ITKBinaryThinning3D_ as a remote module in ITK? This means adding a file to [_ITK/Modules/Remote_](https://github.com/InsightSoftwareConsortium/ITK/tree/master/Modules/Remote) similar to the other files there by [submitting a pull request](https://github.com/InsightSoftwareConsortium/ITK/blob/master/CONTRIBUTING.md). The community would also benefit from improved awareness and access to your module.

Sure I would, I’ll look into it since I never did such thing … (_might disturb you again through the process 😉_).  
Maybe I should work a bit on the `itk::LocalThicknessImageFilter3D<TInputImage, TOutputImage>` prior to remote module ?

> [edit]
> 
> - if you have a starting point / doc / example(s) for such contributions …
> - should I do it also for [ITKBinaryThinning3D](https://github.com/T4mmi/ITKBinaryThinning3D) since it does not appear in the list (however published in the Insight Journal) ? (or merge both modules…)

---

<div class="post-metadata">

### Author: ![T4mmi](https://discourse.itk.org/user_avatar/discourse.itk.org/t4mmi/32/311_2.png) [@T4mmi](https://discourse.itk.org/u/T4mmi)
#### Post date: [February 6, 2019, 10:44am UTC](https://discourse.itk.org/t/remote-itkmodule-build-on-top-of-another/1547/13 "2019-02-06T10:44:08Z")

</div>

If I read correctly the [documentation](https://itk.org/ITKSoftwareGuide/html/Book1/ITKSoftwareGuide-Book1ch9.html#x55-1640009.7) I should submit an IJ paper prior to the remote module. But then I might wait a bit longer to add the `LocalThicknessImageFilter3D`…

For ITKBInaryThinning3D, It could be directed to the [original](http://hdl.handle.net/1926/1292) since I only provided the wrapping.

> <https://gist.github.com/T4mmi/20449a97dce99f71eec8a9bb6e8853d4>

Also all the remote modules listed are hosted inside [github.com/InsightSoftwareConsortium](http://github.com/InsightSoftwareConsortium). I have no problem transfering the repo to kitware, but how does this work for maintenance (e.g. build/deploy new wheels as for ITKBoneMorphometry not available for python 3.7)?

---

<div class="post-metadata">

### Author: ![dzenanz](https://discourse.itk.org/user_avatar/discourse.itk.org/dzenanz/32/1093_2.png) [@dzenanz](https://discourse.itk.org/u/dzenanz)
#### Post date: [February 6, 2019, 2:12pm UTC](https://discourse.itk.org/t/remote-itkmodule-build-on-top-of-another/1547/14 "2019-02-06T14:12:49Z")

</div>

Since there is already an [IJ article](http://hdl.handle.net/1926/1292) for the thinning filter, you might not need to do a lot of work to adjust the current [repo](https://github.com/T4mmi/ITKBinaryThinning3D) to the [model](https://github.com/InsightSoftwareConsortium/ITKModuleTemplate). You could go through the steps described in the module template, examine the differences with the current repo and apply them.

---

<div class="post-metadata">

### Author: ![T4mmi](https://discourse.itk.org/user_avatar/discourse.itk.org/t4mmi/32/311_2.png) [@T4mmi](https://discourse.itk.org/u/T4mmi)
#### Post date: [February 6, 2019, 2:36pm UTC](https://discourse.itk.org/t/remote-itkmodule-build-on-top-of-another/1547/15 "2019-02-06T14:36:30Z")

</div>

Thanks @dzenanz,

I think that both [ITKBinaryThinning3D](https://github.com/T4mmi/ITKBinaryThinning3D) and [ITKThickness3D](https://github.com/T4mmi/ITKThickness3D) repo match the [model](https://github.com/InsightSoftwareConsortium/ITKModuleTemplate) since they were created using coockiecutter and the `ITKModuleTemplate` (following this [tuto](https://itkpythonpackage.readthedocs.io/en/latest/Build_ITK_Module_Python_packages.html)).

My concern is more about the maintenance of the pull request on ITK including the [remote.cmake](https://gist.github.com/T4mmi/20449a97dce99f71eec8a9bb6e8853d4) file.

- Should I do point to my own `T4mmi` repo or should I transfer it to `InsightSoftwareConsortium` ?
- In the second case who will maintain PyPI up-to-date ?
- Is it better to decompose a module in separate filters (i.e. one for thinning, one for medial thickness, one for local thickness transform) or group them (got second thoughts using someone else implementation in a module with my name on it) ?

---

<div class="post-metadata">

### Author: ![dzenanz](https://discourse.itk.org/user_avatar/discourse.itk.org/dzenanz/32/1093_2.png) [@dzenanz](https://discourse.itk.org/u/dzenanz)
#### Post date: [February 6, 2019, 2:59pm UTC](https://discourse.itk.org/t/remote-itkmodule-build-on-top-of-another/1547/16 "2019-02-06T14:59:36Z")

</div>

The module template has been updated over time. So some update of modules created some time ago might be needed.

It is better to transfer the repositories. After transferring the repo to `InsightSoftwareConsortium`, we will give you write permissions on it (in case you don’t retain them). And you will be the maintainer of that repo. Its address will have changed and more people will have write access, but that should be it. So you should maintain PyPI up to date.

I think it is better to group the filters - that’s what modules are for. Especially given there is some overhead for each module.

---

<div class="post-metadata">

### Author: ![T4mmi](https://discourse.itk.org/user_avatar/discourse.itk.org/t4mmi/32/311_2.png) [@T4mmi](https://discourse.itk.org/u/T4mmi)
#### Post date: [February 6, 2019, 3:05pm UTC](https://discourse.itk.org/t/remote-itkmodule-build-on-top-of-another/1547/17 "2019-02-06T15:05:30Z")

</div>

Ok then,  
I’ll merge ITKBinaryThinning3D into ITKThickness3D and check the module before transfering them 😉
