Re: [cmake-developers] Making kwsys a proper library

2015-08-21 Thread David Cole via cmake-developers
Honestly, KWSys has always seemed like a boost-avoidance mechanism
from an outsider's perspective. Perhaps it should be replaced with
boost equivalents in projects that need to be packaged for Fedora.

I assume all the boost libraries are already packaged/available.


Fuel for the fire, ;-)
D



On Fri, Aug 21, 2015 at 9:27 AM, Brad King brad.k...@kitware.com wrote:
 On 08/20/2015 10:19 PM, Orion Poplawski wrote:
 The consensus of the FPC is that the current situation with KWSys is
 very undesirable.  While this approach may have been reasonable years
 ago with few consumers, it does not seem acceptable at this point.

 FWIW, the origin of this is the following:  Many, many projects have
 their own custom code for many of the things KWSys is doing, but they
 may not organize the implementations into a distinguishable library.
 This does not seem to be a problem for packaging these projects even
 though they could be using third-party libraries instead.

 We have several projects that all want some of these things as details
 of their implementation but we do not want to maintain a first-class
 library for them.  We could have had divergent implementations in
 each project like so many other unrelated projects do, but instead we
 decided to build infrastructure to share the common components of the
 source tree.  This gives our projects the benefits of common, well-
 tested infrastructure without the cost of maintaining a public-facing
 library for them.  If these implementations were not shared under the
 common KWSys banner then no one would have noticed that the projects
 appear to bundle a library.  How is this worse than other projects
 that do not share code at all?

 Yes, several components of KWSys appear to re-implement functionality
 that is now available in better third-party libraries.  However, much
 of it was added to our projects before those third-party libraries
 existed.  Things like the RegularExpression component came from other
 third-parties at the time who were also not providing first-class
 libraries for them.  Now they are kept in KWSys as a way to share the
 implementations among our projects at the source level.

 Any and all efforts by the KWSys maintainers to split out KWSys into
 proper libraries and perhaps pull out code that is only use by a single
 project into that project would be greatly appreciated.

 Some components of KWSys are present for historical reasons and
 can be factored out or removed now.  This will be a worthwhile
 cleanup regardless of the above discussion.

 be greatly appreciated if KWSys using projects would include in their
 tarballs only those components that they actually used.

 Prior to CastXML, KWSys has only been included in projects that are
 much, much larger than itself and use most of its components so its
 size has not stood out before.  I've now reduced the KWSys sources
 inside CastXML to the minimum it needs.  Further discussion on the
 CastXML side would be better held on its own mailing list.

 -Brad

 --

 Powered by www.kitware.com

 Please keep messages on-topic and check the CMake FAQ at: 
 http://www.cmake.org/Wiki/CMake_FAQ

 Kitware offers various services to support the CMake community. For more 
 information on each offering, please visit:

 CMake Support: http://cmake.org/cmake/help/support.html
 CMake Consulting: http://cmake.org/cmake/help/consulting.html
 CMake Training Courses: http://cmake.org/cmake/help/training.html

 Visit other Kitware open-source projects at 
 http://www.kitware.com/opensource/opensource.html

 Follow this link to subscribe/unsubscribe:
 http://public.kitware.com/mailman/listinfo/cmake-developers
-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake-developers


Re: [cmake-developers] Making kwsys a proper library

2015-08-21 Thread Brad King
On 08/20/2015 10:19 PM, Orion Poplawski wrote:
 The consensus of the FPC is that the current situation with KWSys is 
 very undesirable.  While this approach may have been reasonable years 
 ago with few consumers, it does not seem acceptable at this point.

FWIW, the origin of this is the following:  Many, many projects have
their own custom code for many of the things KWSys is doing, but they
may not organize the implementations into a distinguishable library.
This does not seem to be a problem for packaging these projects even
though they could be using third-party libraries instead.

We have several projects that all want some of these things as details
of their implementation but we do not want to maintain a first-class
library for them.  We could have had divergent implementations in
each project like so many other unrelated projects do, but instead we
decided to build infrastructure to share the common components of the
source tree.  This gives our projects the benefits of common, well-
tested infrastructure without the cost of maintaining a public-facing
library for them.  If these implementations were not shared under the
common KWSys banner then no one would have noticed that the projects
appear to bundle a library.  How is this worse than other projects
that do not share code at all?

Yes, several components of KWSys appear to re-implement functionality
that is now available in better third-party libraries.  However, much
of it was added to our projects before those third-party libraries
existed.  Things like the RegularExpression component came from other
third-parties at the time who were also not providing first-class
libraries for them.  Now they are kept in KWSys as a way to share the
implementations among our projects at the source level.

 Any and all efforts by the KWSys maintainers to split out KWSys into 
 proper libraries and perhaps pull out code that is only use by a single 
 project into that project would be greatly appreciated.

Some components of KWSys are present for historical reasons and
can be factored out or removed now.  This will be a worthwhile
cleanup regardless of the above discussion.

 be greatly appreciated if KWSys using projects would include in their 
 tarballs only those components that they actually used.

Prior to CastXML, KWSys has only been included in projects that are
much, much larger than itself and use most of its components so its
size has not stood out before.  I've now reduced the KWSys sources
inside CastXML to the minimum it needs.  Further discussion on the
CastXML side would be better held on its own mailing list.

-Brad

-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake-developers


Re: [cmake-developers] Making kwsys a proper library

2015-08-21 Thread Brad King
On 08/21/2015 10:58 AM, Ben Boeckel wrote:
 CMake would have to ship with multiple versions of Boost, each subsetted
 and likely patched. That is hardly better.

This falls under the category of third-party libraries that are
candidates for use in the already-proposed cleanup of KWSys:

On 08/21/2015 09:27 AM, Brad King wrote:
 Some components of KWSys are present for historical reasons and
 can be factored out or removed now.  This will be a worthwhile
 cleanup regardless of the above discussion.

Some of the dependents may need to find alternatives as part of
this cleanup, but selections will need to be made on a per-case
basis.

-Brad

-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake-developers


Re: [cmake-developers] Making kwsys a proper library

2015-08-21 Thread Ben Boeckel
On Fri, Aug 21, 2015 at 10:35:58 -0400, David Cole via cmake-developers wrote:
 Honestly, KWSys has always seemed like a boost-avoidance mechanism
 from an outsider's perspective. Perhaps it should be replaced with
 boost equivalents in projects that need to be packaged for Fedora.
 
 I assume all the boost libraries are already packaged/available.

While I do love me some Boost, it doesn't provide process launching
APIs, so you'd still need to handle that. Plus, Boost's lack of a stable
API/ABI across the large range of versions that would need to be
supported (e.g., there is no Boost release which supports VS7.1 and
VS2015 at the same time, nevermind some of the more obscure compilers
CMake expects to self-host on). And you'd need to both support
filesystem2 and filesystem3 in client code, so it's not just a problem
at the get boost building level. IMO, it would be *much* worse since
CMake would have to ship with multiple versions of Boost, each subsetted
and likely patched. That is hardly better.

--Ben
-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake-developers


Re: [cmake-developers] Making kwsys a proper library

2015-08-20 Thread Orion Poplawski

On 08/17/2015 09:52 AM, Brad King wrote:

On 08/15/2015 12:20 AM, Orion Poplawski wrote:

What makes the kwsys code special in a way that makes creating a
shared library inappropriate?


We want to share the code across projects but we don't want it to
get in the way of those projects evolving or releasing.  KWSys has
no version number or API version level, and we don't want to maintain
one.  Exactly one version of KWSys is used by each version of our
consuming projects, down to the granularity of individual commits
on each side.  We want to remain free to make incompatible changes
at any time.  Dependents update their source and port to such changes
when they are ready, not when some user decides to try that particular
combination of versions.  We don't have to worry about mixing versions
in different dependents (due to prefix configuration), or about forward
or backward compatibility on either end of the dependency arrows (due
to version locking at the source level).

-Brad



The consensus of the FPC is that the current situation with KWSys is 
very undesirable.  While this approach may have been reasonable years 
ago with few consumers, it does not seem acceptable at this point.  In 
particular it contains string processing and process handling code that 
could be security sensitive.  See 
http://meetbot.fedoraproject.org/fedora-meeting-1/2015-08-20/fpc.2015-08-20-16.00.log.html 
for a full transcript of the meeting.


Any and all efforts by the KWSys maintainers to split out KWSys into 
proper libraries and perhaps pull out code that is only use by a single 
project into that project would be greatly appreciated.  It would also 
be greatly appreciated if KWSys using projects would include in their 
tarballs only those components that they actually used.


Currently Fedora will start marking KWSys using projects with a:

Provides: bundled(kwsys-COMPONENT)

tag to try to keep track of what each project uses.  We hope to revisit 
the situation in the future.


Thank you for your consideration.

--
Orion Poplawski
Technical Manager 303-415-9701 x222
NWRA/CoRA DivisionFAX: 303-415-9702
3380 Mitchell Lane  or...@cora.nwra.com
Boulder, CO 80301  http://www.cora.nwra.com
--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake-developers


Re: [cmake-developers] Making kwsys a proper library

2015-08-17 Thread Brad King
On 08/15/2015 12:20 AM, Orion Poplawski wrote:
 What makes the kwsys code special in a way that makes creating a 
 shared library inappropriate?

We want to share the code across projects but we don't want it to
get in the way of those projects evolving or releasing.  KWSys has
no version number or API version level, and we don't want to maintain
one.  Exactly one version of KWSys is used by each version of our
consuming projects, down to the granularity of individual commits
on each side.  We want to remain free to make incompatible changes
at any time.  Dependents update their source and port to such changes
when they are ready, not when some user decides to try that particular
combination of versions.  We don't have to worry about mixing versions
in different dependents (due to prefix configuration), or about forward
or backward compatibility on either end of the dependency arrows (due
to version locking at the source level).

-Brad
-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake-developers


Re: [cmake-developers] Making kwsys a proper library

2015-08-14 Thread Brad King
On 08/13/2015 10:36 PM, Orion Poplawski wrote:
 There is concern in Fedora that the kwsys code has become too large to 
 be an acceptable copylib.  However, as cmake is constructed at the 
 moment it would be a huge undertaking for the Fedora packagers (mostly 
 me) to remove it downstream.  So I'm asking if there is any support 
 upstream for making kwsys a proper library?

KWSys is a copylib by design.  Each project using it configures the
library with a different namespace/prefix, can enable different
subsets of the library, and can choose some behavior toggles.  Some
projects maintain local patches to their copy of KWSys that are
good enough for themselves but not for upstream.  KWSys cannot be
shared by multiple such clients as a single library and should
*never be distributed as a packaged binary*.

If each of Kitware's projects using KWSys maintained the code
separately under different hard-coded names (cmsys, vtksys, itksys,
etc.) then no one would be expecting it to be a separate library.
The shared KWSys source helps share maintenance among these projects
while still each getting a custom library that never conflicts with
the others.

-Brad

-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake-developers


Re: [cmake-developers] Making kwsys a proper library

2015-08-14 Thread Ben Boeckel
On Thu, Aug 13, 2015 at 20:36:55 -0600, Orion Poplawski wrote:
 There is concern in Fedora that the kwsys code has become too large to 
 be an acceptable copylib.  However, as cmake is constructed at the 
 moment it would be a huge undertaking for the Fedora packagers (mostly 
 me) to remove it downstream.  So I'm asking if there is any support 
 upstream for making kwsys a proper library?

Not right now. The thing is that each library which uses it mangles all
of the symbols individually by configuring the source files, so without
rewriting how kwsys is *used* in all of its downstream projects (cmake,
VTK, ITK, and likely others), kwsys would likely have to be shipped as
source anyways.

 https://fedorahosted.org/fpc/ticket/555

I commented here that castxml is more than a random xml app but will
be needed for an updated ITK (at least; other projects might migrate to
it from gccxml as time goes on).

--Ben
-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake-developers


Re: [cmake-developers] Making kwsys a proper library

2015-08-14 Thread Orion Poplawski

On 08/14/2015 08:27 AM, Ben Boeckel wrote:

On Thu, Aug 13, 2015 at 20:36:55 -0600, Orion Poplawski wrote:

There is concern in Fedora that the kwsys code has become too large to
be an acceptable copylib.  However, as cmake is constructed at the
moment it would be a huge undertaking for the Fedora packagers (mostly
me) to remove it downstream.  So I'm asking if there is any support
upstream for making kwsys a proper library?


Not right now. The thing is that each library which uses it mangles all
of the symbols individually by configuring the source files, so without
rewriting how kwsys is *used* in all of its downstream projects (cmake,
VTK, ITK, and likely others), kwsys would likely have to be shipped as
source anyways.


That's certainly what I've found at the moment.

--
Orion Poplawski
Technical Manager 303-415-9701 x222
NWRA/CoRA DivisionFAX: 303-415-9702
3380 Mitchell Lane  or...@cora.nwra.com
Boulder, CO 80301  http://www.cora.nwra.com
--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake-developers


[cmake-developers] Making kwsys a proper library

2015-08-13 Thread Orion Poplawski
There is concern in Fedora that the kwsys code has become too large to 
be an acceptable copylib.  However, as cmake is constructed at the 
moment it would be a huge undertaking for the Fedora packagers (mostly 
me) to remove it downstream.  So I'm asking if there is any support 
upstream for making kwsys a proper library?


See also:
https://bugzilla.redhat.com/show_bug.cgi?id=1251198
https://fedorahosted.org/fpc/ticket/555
https://bugzilla.redhat.com/show_bug.cgi?id=1251500

Thanks

--
Orion Poplawski
Technical Manager 303-415-9701 x222
NWRA/CoRA DivisionFAX: 303-415-9702
3380 Mitchell Lane  or...@cora.nwra.com
Boulder, CO 80301  http://www.cora.nwra.com
--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake-developers