01:18.52 |
*** join/#brlcad cadman
(40b2b147@gateway/web/freenode/ip.64.178.177.71) |
01:19.03 |
starseeker |
brlcad: the temptation to try what I was
originally planning with the libnurbs sf site is growing, so
probably easier to avoid conflicts ahead of time in case that does
happen |
01:19.40 |
starseeker |
plus, it matches the brep.h header name we
were already using everywhere |
01:27.44 |
Notify |
03BRL-CAD:starseeker * 54596
(brlcad/trunk/configure.ac
brlcad/trunk/misc/win32-msvc/Dll/CMakeLists.txt and 3 others): Tell
autotools and Dll about name change too. |
01:41.31 |
Notify |
03BRL-CAD Wiki:Gudaoshupi * 0
/wiki/User:Gudaoshupi: |
01:47.48 |
Notify |
03BRL-CAD:brlcad * 54597
(brlcad/trunk/src/other/openNURBS/CMakeLists.txt
brlcad/trunk/src/other/openNURBS/Makefile.am and 9 others):
re-re-revert to r54338 before I started causing damage. apparently
two different versions of opennurbs came out one month after the
other, both labeled as v5.0 and the latter removing substantial
functionality (3 functions) that we utilize. there are some files
to get a closer sync |
01:47.50 |
Notify |
with the latest sources, but we'll need to
either keep a *much* bigger patch set or implement even more
functionality in our libraries going forward. |
01:54.08 |
*** join/#brlcad merzo
(~merzo@106-51-133-95.pool.ukrtel.net) |
05:49.04 |
brlcad |
starseeker: sure, it's merely whether to align
the name with opennurbs or librt .. it was intently set up to not
rely on librt, so the name made sense |
05:49.32 |
brlcad |
I guess I saw it evolving into what you had
planned for the sf site |
05:50.37 |
brlcad |
because if it really is just for librt's brep,
then it's pointless as a top-level library and should get buried
back under librt |
06:26.03 |
Notify |
03BRL-CAD:brlcad * 54598
(brlcad/trunk/src/other/openNURBS/CMakeLists.txt
brlcad/trunk/src/other/openNURBS/Makefile.am and 10 others): redo
the merging of additional updates, adding in some overlooked
changes from the previous v5.0 update, without all the mess. adds
back the deleted opennurbs_brep_kinky.cpp and
opennurbs_brep_changesrf.cpp for reference since they seem highly
relevant to our needs (along with code |
06:26.05 |
Notify |
in opennurbs_brep so they'll compile).
remerges r54573 (partial), r54576 (partial), r54577, r54580, and
r54589. |
06:26.20 |
brlcad |
that should do it |
07:52.50 |
*** join/#brlcad caen23
(~cezar@92.83.186.143) |
11:30.36 |
``Erik |
'dark corners of C'
https://docs.google.com/presentation/d/1h49gY3TSiayLMXYmRMaAEMl05FaJ-Z6jDOWOz3EsqqQ/edit?usp=sharing |
13:36.39 |
*** join/#brlcad merzo
(~merzo@59-223-201-46.pool.ukrtel.net) |
15:27.40 |
starseeker |
brlcad: my sf libnurbs ambitions may not jibe
well with the direction you'd want to take though - I was planning
to add more primitives, for example, similar to the torus and
sphere they already have |
15:27.59 |
starseeker |
If I can figure out how, I may convert the
source code comments to doxygen format |
15:29.22 |
starseeker |
my take would be more to turn it into what I
would want in the library, then merge in changes from opennurbs
releases as appropriate - which I know is not how you want to go at
it <shrug> |
15:33.05 |
*** join/#brlcad Black_Rabbit
(~Black_Rab@115.248.130.148) |
15:33.28 |
*** join/#brlcad Blackrabbit
(~Black_Rab@115.248.130.148) |
15:34.12 |
brlcad |
starseeker: "which I know is not how you want
to go at it" ... non sequitor? :) |
15:34.39 |
starseeker |
eh? You've argued consistently in favor of
keeping opennurbs vanilla and working with that |
15:34.59 |
brlcad |
adding more prims, converting docs, merging
opernurbs releases, .. none of that is really concerning |
15:35.18 |
starseeker |
except it starts to involve extensive changes
to the opennurbs code |
15:35.25 |
brlcad |
and I wouldn't necessarily have to agree with
what you're wanting to do for it to be useful or good for you,
right? |
15:35.57 |
starseeker |
sure, but I'm not going to oppose you on
something like that within BRL-CAD - the bests interest of the
BRL-CAD project are what's important for its component
libraries |
15:36.23 |
starseeker |
my approach would fairly quickly result in a
de-facto fork, in the sense that a system opennurbs wouldn't be
compatible |
15:36.25 |
brlcad |
actually, I layed out two or three ways to
work with opennurbs and only one involved keeping vanilla, but
still that's not exactly opposition to anything |
15:37.02 |
brlcad |
I knew you had other ambitions and directions,
that's great frankly |
15:37.30 |
brlcad |
it's whether both needs can be fit, so it gets
more eyes an invovlement from my perspective |
15:37.39 |
starseeker |
um. OK. I may have gotten the wrong
impression - my distinct memory was you were very keen on keeping
compatibility with a hypothetical system opennurbs, but I could
have misunderstood |
15:38.24 |
brlcad |
example in point, I don't see the practical
point of doing incremental loading (at this point) in stepCODE, and
would probably voice entirely different priorities |
15:38.32 |
brlcad |
but that doesn't mean I'm actually against
it |
15:38.39 |
brlcad |
python bindings another great
example |
15:38.55 |
brlcad |
just doesn't solve my problems, but then it's
not supposed to -- just not a concern |
15:39.36 |
starseeker |
nods |
15:39.37 |
brlcad |
I am keep on keeping compatibility, but that
doesn't mean I'd be opposed to something else either |
15:39.47 |
brlcad |
s/keep on/keen on/ |
15:40.49 |
brlcad |
if you think it's too much work (or work you
don't care about) to try and fit your goals with our needs, that's
fine but I generally like to press for more active collaboration,
not less ;) |
15:41.08 |
starseeker |
hmm. looking at it from that perspective,
perhaps it doesn't make sense in any case for us to expose the
brep/nurbs API as a top-level BRL-CAD api |
15:42.06 |
starseeker |
brlcad: I was more concerned that I was going
to hare off in directions that quickly diverged from the opennurbs
vanilla goal, and I thought that was a non-starter |
15:42.44 |
brlcad |
it would entirely depend on how that direction
affects our integration |
15:43.28 |
brlcad |
you written down plans or a road map any
where? easy enough to go over something and see if there are
concerns |
15:43.56 |
starseeker |
only a few early thoughts - I'll write up a
little more of what I'm thinking this evening |
15:43.57 |
brlcad |
I mean I think I get what you're thinking,
turning it into some stand-alone framework for working with nurbs
geometry |
15:44.06 |
starseeker |
right |
15:44.21 |
starseeker |
but I wouldn't be shy about adding things like
mesh-related algorithms if they look useful |
15:44.29 |
brlcad |
but that statement by itself doesn't say much
of anything about integration concerns |
15:45.25 |
brlcad |
and if you did add algorithms, I wouldn't
exactly care either -- would start to treat it like any other
src/other with features we may or may not use |
15:45.34 |
starseeker |
nods |
15:45.38 |
brlcad |
it starts to matter when it's not
algorithms |
15:45.47 |
starseeker |
... api changes? |
15:46.12 |
brlcad |
when it's code and 3rd party depdencies or
implicit platform requirements, etc |
15:46.18 |
starseeker |
oh, gotcha |
15:46.41 |
brlcad |
you know, you decide that meshlab is pefect
for what you need |
15:46.47 |
brlcad |
*that* becomes a non-starter |
15:46.52 |
starseeker |
winces |
15:46.59 |
starseeker |
I wouldn't blame you a bit |
15:47.33 |
brlcad |
or more realistic, like if you relied on
opengl tessellation because it's fast and awesome, but we're not
yet ready to require it or some similar coupling |
15:48.08 |
starseeker |
I'll jot some notes down - it hadn't been very
high on my list lately, but opennurbs yanking working functionality
sort of makes the issue loom back above the radar horizon |
15:48.21 |
brlcad |
that's my concern |
15:48.38 |
brlcad |
they're actually making it a lot
easier |
15:48.52 |
starseeker |
O.o ? |
15:49.19 |
brlcad |
with the functions no longer stubbed empty,
it's a lot easier to either do an inheritance overlay or sister API
that adds functionality back in |
15:49.49 |
brlcad |
my concern is retaining our ray tracing
ability with as little effort as possible first, and later
preserving our ability to edit |
15:50.14 |
brlcad |
to me, that's just where does that code live
and how often will we have to do something to maintain it |
15:51.23 |
brlcad |
in going through all the changes that were
needed to preserve our tracing in this latest update, it's at least
3 functions that would need to be extracted (in my view, there are
certainly other approaches) |
15:51.44 |
starseeker |
nods - fair enough. I've got
some errands to run, but I'll work on what I'm thinking this
afternoon |
15:51.58 |
brlcad |
I'm going to assume that they'll keep
releasing updates, keep adding new features and fixing bugs, and
keep removing anything in the API not related to 3dm
conversion |
15:52.20 |
starseeker |
yeah, which is a real problem if we want to
use things like opennurbs_x.h |
15:52.34 |
brlcad |
it took me the better part of a day to go
through that last update, and I don't see that as viable to repeat
the further they divert |
15:52.49 |
brlcad |
if you have a plan for that, I'd love to hear
it ;) |
15:53.09 |
brlcad |
I see that functionality simply migrating as
functions in libnurbs |
15:53.33 |
brlcad |
one for each they removed frankly, and some
additional functionality |
15:54.56 |
starseeker |
nods - I may need to do some
experiments with git to see how difficult it's going to
be |
15:55.34 |
starseeker |
my hope was that as they get simplier, if we
retain a more complete set of APIs the merge areas where we
actually need to make real changes will become more
constrained |
15:55.55 |
starseeker |
but that may not be possible, since we may
*need* to add functionality they don't provide to preserve those
APIs |
15:57.57 |
starseeker |
I have the 20120914 tarball of opennurbs, so
I'll study the changes and see what we're up against |
15:58.51 |
brlcad |
they mostly are just cutting out
methods |
15:59.17 |
starseeker |
growl |
15:59.19 |
brlcad |
so it is certainly possible to readd those
methods and classes back in |
15:59.48 |
starseeker |
we'd need an inheritance API to do that right
though, correct? |
15:59.55 |
brlcad |
not necessarily |
16:00.08 |
brlcad |
like I said way back, there are like three
different ways to go about it |
16:00.30 |
brlcad |
inherit, replace, or supplant |
16:01.04 |
starseeker |
inherit == define our own classes that inherit
from theirs, correct? |
16:01.24 |
brlcad |
yep, arguably the most work, almost certainly
the most code |
16:02.06 |
starseeker |
replace == define new functions that provide
the capabilities yanked from the original code? |
16:02.27 |
brlcad |
you have to create nearly as many classes as
there are in opennurbs to provide an inheritance API |
16:03.01 |
starseeker |
not to mention every time they change their
classes we have to keep up... |
16:03.13 |
brlcad |
the downsides/upsides are your users would
have to adopt and use your API classes, not opennurbs, and you'd
have to track any class changes |
16:03.41 |
brlcad |
replace is defining new/old functions and
putting that code BACK into opennurbs, e.g., patches |
16:03.51 |
starseeker |
a quick grep identifies 370 class ON_CLASS
definitions |
16:04.19 |
brlcad |
that method lets users stick to opennurbs API
and basically becomes more and more of a free open source rhinosdk
implementation |
16:04.50 |
starseeker |
but gets progressively more difficult the
further we want to be from what the latest opennurbs
provides |
16:04.51 |
brlcad |
the downside is of course they can make it
arbitrarily hard to keep up patches |
16:05.03 |
brlcad |
but that's probably the only
downside |
16:05.22 |
starseeker |
that's a potentially significant one though -
they have an incentive to make that approach difficult |
16:05.32 |
brlcad |
another approach for "replace" is an outright
fork |
16:05.46 |
brlcad |
instead of patches, just track their releases
and integrate what you care about as they update |
16:05.46 |
starseeker |
thought that's what you ment
by supplant... |
16:05.57 |
brlcad |
supplant is what I saw libnurbs
being |
16:06.11 |
brlcad |
a sister library that works with
opennurbs |
16:06.41 |
starseeker |
ah - no, I was thinking fork and merge what we
care about |
16:06.54 |
starseeker |
at least for the sourceforge project |
16:07.02 |
brlcad |
when you see them yank,
ON_Curve::GetLength(...), the sister library implements a
GetLength(ON_Curve, ...) |
16:08.16 |
brlcad |
yeah, supplant might not be the best word,
maybe delegation or partnering |
16:08.30 |
starseeker |
a downside there is the collective API of the
two libraries gets trickier to navigate |
16:08.40 |
brlcad |
but still, creating a library that works
beside or on top of opennurbs |
16:08.54 |
starseeker |
where do I look for functionality, mixing API
styles, etc. |
16:09.16 |
brlcad |
that's where my thought was to literally just
implement the methods they remove -- they identify them neatly in
opennurbs_basic |
16:10.04 |
brlcad |
so you could follow the full rhinosdk, and if
you found something that didn't link, there would be a
function |
16:10.49 |
brlcad |
"overlay" .. that's the word I was looking
for |
16:11.20 |
brlcad |
inherit, restore, fork, or overlay |
16:11.32 |
brlcad |
all have merit and all are lots of work
:) |
16:12.08 |
starseeker |
you said based on you work with the 5.0
changes you though reviewing the changes and merging would be a
prohibitive amount of work? |
16:12.18 |
brlcad |
with your idea to add functionality not even
covered, that would undoubtedly influence the approach
taken |
16:13.26 |
brlcad |
not prohibitive, but *I* wouldn't want to do
it very frequently, I'd probably end up forking and implementing a
free rhinosdk |
16:13.45 |
brlcad |
easier to merge their changes than restore our
needs |
16:14.07 |
brlcad |
they're not going to change the API faster
than we can manage, because of their users/business |
16:14.41 |
brlcad |
but that's also politically the most impolite,
so I'd "want" to try one of the others first |
16:14.54 |
brlcad |
overlay seemed to be the route we were
going |
16:15.26 |
brlcad |
to me that really is, then, a "libnurbs" that
proides what they don't (and then some if you do what you're
thinking) |
16:15.27 |
starseeker |
in the BRL-CAD tree, yes - it wasn't actually
my own preference, but I had gotten the impression that that was
what I needed to do when working inside BRL-CAD |
16:16.50 |
brlcad |
so whatever you have in mind, even towards
becoming a bigger "nurbs" framework .. somewhere/somehow you're
going to need to get the length of a curve |
16:16.59 |
brlcad |
where were/are you seeing that
happening? |
16:17.25 |
starseeker |
yes. If we want to keep they API style
consistent, that would involve putting GetLength back where they
had it |
16:17.26 |
brlcad |
given they yanked ON_Curve::GetLength(), that
becomes a perfect simple case |
16:17.42 |
brlcad |
so you'd go for "restore" |
16:17.54 |
starseeker |
any thing else means we can't ask an ON_Curve
object for its length with GetLength, which means the API has
become that much less consistent |
16:18.07 |
starseeker |
my instinct would be to restore, yet |
16:18.12 |
starseeker |
s/yet/yes |
16:18.20 |
starseeker |
but I can't claim I've thought that all the
way through |
16:18.20 |
brlcad |
any one of inherit, restore, fork, or overlay
let you get a length |
16:18.32 |
brlcad |
three of them let you actually call a
GetLength() method even |
16:19.01 |
starseeker |
correct |
16:19.30 |
starseeker |
I was figuring enough "restore" becomes "fork"
by default |
16:19.59 |
brlcad |
inherit would be Cliff_Curve::GetLength(),
restore would be ON_Curve::GetLength(), fork would be
ON_Curve::GetLength(), overlay would be
GetLength(ON_Curve) |
16:20.36 |
starseeker |
right. So restore and fork preserve the API
as designed - is that a worthwhile goal? |
16:20.43 |
brlcad |
meh |
16:21.08 |
brlcad |
to me, it's more about the long term
maintainability |
16:21.31 |
starseeker |
on the other hand, a consistent API plays into
long term *usability*... |
16:21.34 |
brlcad |
fast forward 20 releases later to opennurbs
v9.4 |
16:21.41 |
brlcad |
what have you had to do |
16:21.56 |
brlcad |
and where did you end up |
16:22.35 |
brlcad |
again, I'm not apposed to any approach,
especially if I'm not doing it ;) |
16:22.58 |
starseeker |
what has to be done depends on how radical the
changes are in openNURBS |
16:23.07 |
brlcad |
I care about preserving our raytracing ability
with the least amount of effort (because we have a hell of a lot of
other things to worry about) |
16:23.49 |
brlcad |
given enough time, it becomes
radical |
16:24.09 |
brlcad |
even if the API isn't, they're a business with
momentum |
16:24.27 |
starseeker |
precisely - why is why I was thinking it might
make sense to encapsulate just what our raytracing abilities need
in a special purpose BRL-CAD library and let the libnurbs project
try the risker, higher effort stuff |
16:24.57 |
starseeker |
or even encapsulate them in librt, for that
matter |
16:25.29 |
starseeker |
because BRL-CAD isn't in the business of
general purpose NURBS library development, we have specific needs
that we need to satisfy |
16:28.53 |
starseeker |
so make it the business of
src/librt/primitives/brep to either a) talk to openNURBS or b)
supply the minimal pieces necessary for BRL-CAD's needs - that's
probably the safest, most focused approach we could take (the
overlay option, but only as librt internals and not an exposed,
public API) |
16:30.06 |
starseeker |
that may not be entirely practical when it
comes to things like the step converter, though |
16:31.03 |
starseeker |
so the minimal overlay library is probably the
most efficient way to get what we need to preserve our own
features |
16:32.41 |
Notify |
03BRL-CAD:n_reed * 54599
brlcad/trunk/src/libged/draw.c: use smarter point spacing
calculation for tgcs |
16:33.06 |
starseeker |
for the libnurbs project though, I'd be
hovering between restore and fork |
20:38.51 |
*** join/#brlcad merzo
(~merzo@22-8-133-95.pool.ukrtel.net) |
20:50.38 |
*** join/#brlcad merzo
(~merzo@160-120-132-95.pool.ukrtel.net) |
21:17.04 |
starseeker |
brlcad: do you happen to have any archived
sources of opennurbs older than the version 4 we have in the
repository? |
21:26.00 |
*** join/#brlcad ``Erik
(~erik@pool-74-103-121-45.bltmmd.fios.verizon.net) |
23:27.30 |
starseeker |
brlcad: I'm collecting what I can scare up as
far as opennurbs versions here, fwiw - http://brlcad.org/~starseeker/opennurbs/ |
23:28.11 |
starseeker |
http://brlcad.org/~starseeker/opennurbs/README
has the background - I may have a few more old original opennurbs
vanilla sources stashed away somewhere, but that's what I've been
able to locate or reconstruct to date |