<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<id>tag:www.nabble.com,2006:forum-3701</id>
	<title>Nabble - Aqsis Renderer</title>
	<updated>2008-11-24T21:40:55Z</updated>
	<link rel="self" type="application/atom+xml" href="http://www.nabble.com/Aqsis-Renderer-f3701.xml" />
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Aqsis-Renderer-f3701.html" />
	<subtitle type="html">Aqsis is a Renderman(tm) compliant 3D rendering toolkit.   Aqsis is based on the Reyes rendering architecture.   Features include :  Programmable Shading  True Displacements  NURBS  CSG  Motion Blur  Subdivision Surfaces Aqsis Renderer home is &lt;a href=&quot;http://sourceforge.net/projects/aqsis/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;here&lt;/a&gt;.</subtitle>
	
<entry>
	<id>tag:www.nabble.com,2006:post-20675511</id>
	<title>Re: Bucket refactor thoughts</title>
	<published>2008-11-24T21:40:55Z</published>
	<updated>2008-11-24T21:40:55Z</updated>
	<author>
		<name>Chris Foster</name>
	</author>
	<content type="html">On Fri, Nov 21, 2008 at 09:54:11PM +0000, Paul Gregory wrote:
&lt;br&gt;&amp;gt; [...]
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Currently, there is a lot of unnecessary information associated with a
&lt;br&gt;&amp;gt; bucket (I'll not get into data ownership yet, the data is shared between
&lt;br&gt;&amp;gt; CqBucket and CqBucketData, for now we'll treat them as one). This
&lt;br&gt;&amp;gt; information can be pared down to the following...
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; [...]
&lt;br&gt;&lt;br&gt;I think we discussed this on IRC - generally I agree wholeheartedly with
&lt;br&gt;what you're saying. &amp;nbsp;Some of our classes have become quite unfocused
&lt;br&gt;over time and end up doing a lot of separate things, and data is often
&lt;br&gt;stored redundently in various places the pipeline. &amp;nbsp;The proposed cleanup
&lt;br&gt;sounds great to me :-)
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Once this is established, we need to think about data ownership. In the
&lt;br&gt;&amp;gt; proposed system, you can see from the diagrams in the wiki page that the
&lt;br&gt;&amp;gt; buckets are not uniform in size, the top left corner is bigger in both x and
&lt;br&gt;&amp;gt; y, and the top row, and left column are bigger in y and x respectivley. As
&lt;br&gt;&amp;gt; such, it's going to be important that the buckets themselves hold the Origin
&lt;br&gt;&amp;gt; and S/D-Region's, while the heavy data should be stored on the bucket data
&lt;br&gt;&amp;gt; class, as they only get instantiated when a bucket is actually being
&lt;br&gt;&amp;gt; processed.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; A more radical idea. the only reason for the necessity to instantiate all
&lt;br&gt;&amp;gt; buckets up front is to provide somewhere to put primitive references as they
&lt;br&gt;&amp;gt; are processed. The other downside to this approach is that it forces a
&lt;br&gt;&amp;gt; processing order for the buckets. An alternative approach, as suggested by
&lt;br&gt;&amp;gt; Chris on IRC, may be to use a completely separate space partitioning
&lt;br&gt;&amp;gt; structure to record primitive references. This way, a primitive is put into
&lt;br&gt;&amp;gt; the cell at the appropriate level that completely encapsulates the
&lt;br&gt;&amp;gt; primitive. Then during processing, any bucket that is within that cell is
&lt;br&gt;&amp;gt; able to grab the primitive for further processing.
&lt;/div&gt;&lt;br&gt;I've been thinking more about this, and I think it's would be the way to
&lt;br&gt;go, _provided_ we can think of a data structure which allows us to
&lt;br&gt;answer the important question
&lt;br&gt;&lt;br&gt;&amp;quot;What is the topmost surface for the current bucket?&amp;quot;
&lt;br&gt;&lt;br&gt;for arbitrary bucket orders. &amp;nbsp;If we can answer this question efficiently
&lt;br&gt;I think we've also solved the threading problem, apart from some locking
&lt;br&gt;of the data structures.
&lt;br&gt;&lt;br&gt;Unfortunately I haven't managed to think of a way to do this yet. &amp;nbsp;As
&lt;br&gt;mentioned by Paul above, we could imagine putting the surfaces into a
&lt;br&gt;spatial partition of some kind, but there seems to be some reasons why a
&lt;br&gt;tree-like structure won't work easily:
&lt;br&gt;&amp;nbsp; * Primitives which are localized in screen space should not effect
&lt;br&gt;&amp;nbsp; &amp;nbsp; buckets which are a long way away from them. &amp;nbsp;However, if tree nodes
&lt;br&gt;&amp;nbsp; &amp;nbsp; were to fully contain a bounding box, then even small primitives
&lt;br&gt;&amp;nbsp; &amp;nbsp; which sit on top of the top-level subdivision of the tree would have
&lt;br&gt;&amp;nbsp; &amp;nbsp; to sit in the root node of the tree, and effect all buckets.
&lt;br&gt;&amp;nbsp; * Primitives should be sorted so that the topmost surface is
&lt;br&gt;&amp;nbsp; &amp;nbsp; accessible in O(1) time. &amp;nbsp;If we maintain multiple lists of
&lt;br&gt;&amp;nbsp; &amp;nbsp; primitives in different tree nodes, then at best we have to compare
&lt;br&gt;&amp;nbsp; &amp;nbsp; the topmost surface from each node which overlaps a bucket to get
&lt;br&gt;&amp;nbsp; &amp;nbsp; the topmost surface in the bucket.
&lt;br&gt;&lt;br&gt;A possible way to avoid the first objection is to allow surfaces to be
&lt;br&gt;placed into multiple tree nodes, and to choose a tree level which is
&lt;br&gt;consistent with the size of the object bounding box, so that the
&lt;br&gt;primitive never gets placed in more than 4 nodes at once (say). &amp;nbsp;Keeping
&lt;br&gt;such redundent lists up to date seems like an unnecessary amount of work
&lt;br&gt;though. &amp;nbsp;In all, I'm starting to become less keen on the spatial
&lt;br&gt;subdivision idea, since it seems like we have the &amp;quot;perfect&amp;quot; scheme at
&lt;br&gt;the moment for a single thread, and and I want to avoid loosing that for
&lt;br&gt;the single-threaded case.
&lt;br&gt;&lt;br&gt;If we continue to store surfaces in buckets, we may be able to get
&lt;br&gt;arbitrary bucket orders working by computing the bucket order in
&lt;br&gt;advance. &amp;nbsp;We could probably use that precomputed list to work out which
&lt;br&gt;bucket to place a primitive in so that it is encountered in the correct
&lt;br&gt;order.
&lt;br&gt;&lt;br&gt;I read some sourcecode from a few other renderers which do
&lt;br&gt;bucket-rendering: Pixie, blender and sunflow. &amp;nbsp;It turns out that only
&lt;br&gt;Pixie is relevant, since the reyes splitting procedure presents unique
&lt;br&gt;challanges (continuous creation of new primitives as rendering
&lt;br&gt;proceeds). &amp;nbsp;Pixie doesn't support arbitrary bucket orderings, but they
&lt;br&gt;do have a scheme for multithreading which I haven't fully understood
&lt;br&gt;yet. &amp;nbsp;AFAICT it revolves around an extension of the straightforward
&lt;br&gt;left-to-right, top-to-bottom scheme which is used in aqsis.
&lt;br&gt;&lt;br&gt;&amp;gt; What about MPGs?
&lt;br&gt;&lt;br&gt;Well, I think we should get rid of MPGs as distinct objects, and deal
&lt;br&gt;entirely with grids. &amp;nbsp;Andrew suggested something like this ages ago on
&lt;br&gt;IRC and I tend to agree. &amp;nbsp;The main reason is that a lot of decisions
&lt;br&gt;about which code path to take should be made at the grid level, rather
&lt;br&gt;than for individual micropolygons. &amp;nbsp;For instance, motion is on or off
&lt;br&gt;for an entire grid, not for individual micropolys. &amp;nbsp;(I'll also note that
&lt;br&gt;this happens to be the way that Pixie works, not that this is
&lt;br&gt;necessarily a good thing in itself.)
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; If a primitive passes the dicable check, and produces
&lt;br&gt;&amp;gt; micropolygons that cover multiple buckets, without the buckets being ready
&lt;br&gt;&amp;gt; to go there is nowhere to put the MPGs ready for sampling. It's possible to
&lt;br&gt;&amp;gt; store the MPG references in the same structure. One possible advantage of
&lt;br&gt;&amp;gt; this is that it may be possible to choose the best next bucket to process by
&lt;br&gt;&amp;gt; looking at which cells in the structure have waiting Primitives or MPGs to
&lt;br&gt;&amp;gt; process. So, instead of arbitrarily chosen bucket orders, the system would
&lt;br&gt;&amp;gt; process the buckets in the most efficient order determined by which buckets
&lt;br&gt;&amp;gt; are in most need of processing. The core could then choose buckets based on
&lt;br&gt;&amp;gt; which have the most waiting, if there are any with MPGs, they get priority
&lt;br&gt;&amp;gt; in order to reduce memory overhead, if not, then the next bucket with the
&lt;br&gt;&amp;gt; most primitives. When there are no buckets with stuff waiting we're done,
&lt;br&gt;&amp;gt; and any buckets that didn't get processed just get passed as empty buckets
&lt;br&gt;&amp;gt; to the display. &amp;nbsp;This approach would also mean that bucket/bucketdata can be
&lt;br&gt;&amp;gt; combined again, as we don't need the buckets around at the start to hold
&lt;br&gt;&amp;gt; primtives, so they can just be built when they get processed.
&lt;/div&gt;&lt;br&gt;This all sounds very nice, provided we can think of an appropriate
&lt;br&gt;heiarchial scheme for the storage of gprims...
&lt;br&gt;&lt;br&gt;~Chris.
&lt;br&gt;&lt;br&gt;-------------------------------------------------------------------------
&lt;br&gt;This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
&lt;br&gt;Build the coolest Linux based applications with Moblin SDK &amp; win great prizes
&lt;br&gt;Grand prize is a trip for two to an Open Source event anywhere in the world
&lt;br&gt;&lt;a href=&quot;http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Aqsis-development mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=20675511&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Aqsis-development@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/aqsis-development&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/aqsis-development&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/aqsis-development-f3702.html&quot; embed=&quot;fixTarget[3702]&quot; target=&quot;_top&quot; &gt;aqsis-development&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Bucket-refactor-thoughts-tp20630157p20675511.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-20630157</id>
	<title>Bucket refactor thoughts</title>
	<published>2008-11-21T13:54:11Z</published>
	<updated>2008-11-21T13:54:11Z</updated>
	<author>
		<name>Paul Gregory</name>
	</author>
	<content type="html">I&amp;#39;ve been spending some train journeys this week thinking over the current and future bucket code. As mentioned on the bucket overlap cache, the current implementation of buckets is overly complex and confusing, and is marked as one of the areas for refactoring. I&amp;#39;ve been mulling over some ideas about how they might change.&lt;br&gt;
&lt;br&gt;I&amp;#39;ve been trying to consider the implementation while I&amp;#39;m doing this, so I&amp;#39;d like to come up with a solution that can be implemented in phases, so it has to fit quite well into the current approach at least to begin with during the refactor. I think some of the ideas I&amp;#39;ve come up with warrant discussion, so before I put anything on the Wiki, I thought I&amp;#39;d put some information up here on the mailing list for some discussion, in case anyone has any better ideas or could form it into a better shape.&lt;br&gt;
&lt;br&gt;Currently, there is a lot of unnecessary information associated with a bucket (I&amp;#39;ll not get into data ownership yet, the data is shared between CqBucket and CqBucketData, for now we&amp;#39;ll treat them as one). This information can be pared down to the following...&lt;br&gt;
&lt;br&gt;&lt;ul&gt;&lt;li&gt;Origin&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;The raster space coordinates of the upper left pixel of the bucket, as integer values. All sample positions are stored relative to this origin.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;S-Region&lt;/li&gt;&lt;ul&gt;&lt;li&gt;The area of the bucket that is used for valid sampling. This area is subject to reduction by the crop window, and to enlargement by the filter expansion. The bucket processor will use this information to determine the valid extents when placing primitives and micro-polygons into the bucket.&lt;br&gt;
The S-Region is represented as real values, expanding only enough to provide the necessary sample space. For example, a filter width of 1.0 will only expand the S-Region by 0.5 in each direction to accommodate the samples, not the full 1 pixel. This reduces the load when sampling, avoiding MPGs and primitives that are not appropriate being added to the bucket list forconsideration.&lt;br&gt;
The S-Region is calculated by applying the following steps to the original bucket position and size.&lt;/li&gt;&lt;ol&gt;&lt;li&gt;Crop the region to the display extents.&lt;/li&gt;&lt;li&gt;Crop the region to the specified crop window.&lt;/li&gt;&lt;li&gt;Expand to accommodate extra samples required during filtering.&lt;/li&gt;
&lt;li&gt;Reduce to skip cached samples.&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;The S-Region is stored as a 3D bound, the Z values being the camera depth clipping planes, used to view cull micropolygons. This allows for simple clarity when culling micropolygons.&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;D-Region&lt;/li&gt;&lt;ul&gt;&lt;li&gt;This is the area that is passed to the display. It can be different to the S-Region as it represents the actual bucket position and size, which can include additional information from the overlap cache, and not include some information that is destined for the cache, or included only for the purpose of filtering.&lt;br&gt;
The D-Region is specified in integer raster values, as it makes no sense passing partial pixels to the display driver.&lt;br&gt;The D-Region is calculated by applying the following steps to the original bucket position and size.&lt;/li&gt;
&lt;ol&gt;&lt;li&gt;Crop the region to the display extents.&lt;/li&gt;&lt;li&gt;Crop the region to the specified crop window.&lt;/li&gt;&lt;/ol&gt;&lt;/ul&gt;&lt;li&gt;Samples&lt;/li&gt;&lt;ul&gt;&lt;li&gt;The sample structure array will be configured to accommodate the largest bucket configuration, that is a bucket of the standard size, expanded to accommodate filter requirements. From this array the bucket will use what is necessary for it&amp;#39;s requirements using the S-Region to crop the array of samples.&lt;br&gt;
When initialising a bucket, the cache will be use to fill in any areas of the sample array that match. This means that the filtering and code to pass the final data onto the display device doesn&amp;#39;t need to care about where the data came from, only that it is valid. &lt;br&gt;
&lt;i&gt;Q: as it&amp;#39;s only ever possible for cache values to be used in one further bucket, would it be possible to store them directly on that bucket, rather than in a separate cache structure?&lt;/i&gt;&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;Those 4 items of information should be enough to efficiently process a bucket, moreover, the amount of knowledge regarding filtering, bucketsizes etc. is reduced, the code that processes a bucket only needs know about the two regions and the origin, the fact that the two regions are different, and why is irrelevant. &lt;br&gt;
&lt;br&gt;Once this is established, we need to think about data ownership. In the proposed system, you can see from the diagrams in the wiki page that the buckets are not uniform in size, the top left corner is bigger in both x and y, and the top row, and left column are bigger in y and x respectivley. As such, it&amp;#39;s going to be important that the buckets themselves hold the Origin and S/D-Region&amp;#39;s, while the heavy data should be stored on the bucket data class, as they only get instantiated when a bucket is actually being processed. &lt;br&gt;
&lt;br&gt;A more radical idea. the only reason for the necessity to instantiate all buckets up front is to provide somewhere to put primitive references as they are processed. The other downside to this approach is that it forces a processing order for the buckets. An alternative approach, as suggested by Chris on IRC, may be to use a completely separate space partitioning structure to record primitive references. This way, a primitive is put into the cell at the appropriate level that completely encapsulates the primitive. Then during processing, any bucket that is within that cell is able to grab the primitive for further processing.&amp;nbsp; &lt;br&gt;
&lt;br&gt;What about MPGs? If a primitive passes the dicable check, and produces micropolygons that cover multiple buckets, without the buckets being ready to go there is nowhere to put the MPGs ready for sampling. It&amp;#39;s possible to store the MPG references in the same structure. One possible advantage of this is that it may be possible to choose the best next bucket to process by looking at which cells in the structure have waiting Primitives or MPGs to process. So, instead of arbitrarily chosen bucket orders, the system would process the buckets in the most efficient order determined by which buckets are in most need of processing. The core could then choose buckets based on which have the most waiting, if there are any with MPGs, they get priority in order to reduce memory overhead, if not, then the next bucket with the most primitives. When there are no buckets with stuff waiting we&amp;#39;re done, and any buckets that didn&amp;#39;t get processed just get passed as empty buckets to the display.&amp;nbsp; This approach would also mean that bucket/bucketdata can be combined again, as we don&amp;#39;t need the buckets around at the start to hold primtives, so they can just be built when they get processed.&lt;br&gt;
&lt;br&gt;&lt;br&gt;Thoughts and suggestions welcome, please.&lt;br&gt;&lt;br&gt;&lt;br&gt;Cheers&lt;br clear=&quot;all&quot;&gt;&lt;br&gt;-- &lt;br&gt;Paul Gregory&lt;br&gt;&lt;a href=&quot;http://www.aqsis.org&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.aqsis.org&lt;/a&gt;&lt;br&gt;
&lt;br /&gt;-------------------------------------------------------------------------
&lt;br&gt;This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
&lt;br&gt;Build the coolest Linux based applications with Moblin SDK &amp; win great prizes
&lt;br&gt;Grand prize is a trip for two to an Open Source event anywhere in the world
&lt;br&gt;&lt;a href=&quot;http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/&lt;/a&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;Aqsis-development mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=20630157&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Aqsis-development@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/aqsis-development&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/aqsis-development&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/aqsis-development-f3702.html&quot; embed=&quot;fixTarget[3702]&quot; target=&quot;_top&quot; &gt;aqsis-development&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Bucket-refactor-thoughts-tp20630157p20630157.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-20534516</id>
	<title>weekly update</title>
	<published>2008-11-16T22:47:32Z</published>
	<updated>2008-11-16T22:47:32Z</updated>
	<author>
		<name>Chris Foster</name>
	</author>
	<content type="html">Hi all,
&lt;br&gt;&lt;br&gt;I couldn't make it to the meeting earlier today since a thunderstorm
&lt;br&gt;fried our router on Sunday - my home machine now lacks a net connection
&lt;br&gt;:-( &amp;nbsp;In the absence of that, here's what I did this week.
&lt;br&gt;&lt;br&gt;I mainly spent a lot of time writing a code generator for RIB request
&lt;br&gt;handlers in the new RIB parser. &amp;nbsp;I've finally got 95 of the request
&lt;br&gt;handlers generated, and wrote the remaining 11 which required custom
&lt;br&gt;implementations by hand. &amp;nbsp;None of that's compiled yet, so there's
&lt;br&gt;probably plenty of work left to get that going smoothly. &amp;nbsp;The work
&lt;br&gt;required significant rearrangment of the XML description in api.xml and
&lt;br&gt;I made some minor changes so that the generated ri.inl now looks much
&lt;br&gt;cleaner.
&lt;br&gt;&lt;br&gt;I also spent some time writing on the wiki: I wrote a page detailing
&lt;br&gt;data storage changes for the pipeline and rearranged the remaining
&lt;br&gt;proposals on the beaker wiki page.
&lt;br&gt;&lt;br&gt;Later,
&lt;br&gt;~Chris.
&lt;br&gt;&lt;br&gt;-------------------------------------------------------------------------
&lt;br&gt;This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
&lt;br&gt;Build the coolest Linux based applications with Moblin SDK &amp; win great prizes
&lt;br&gt;Grand prize is a trip for two to an Open Source event anywhere in the world
&lt;br&gt;&lt;a href=&quot;http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Aqsis-development mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=20534516&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Aqsis-development@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/aqsis-development&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/aqsis-development&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/aqsis-development-f3702.html&quot; embed=&quot;fixTarget[3702]&quot; target=&quot;_top&quot; &gt;aqsis-development&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/weekly-update-tp20534516p20534516.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-20374276</id>
	<title>Profiling with valgrind</title>
	<published>2008-11-06T19:39:51Z</published>
	<updated>2008-11-06T19:39:51Z</updated>
	<author>
		<name>Chris Foster</name>
	</author>
	<content type="html">Hi all,
&lt;br&gt;&lt;br&gt;I spent some time today trying to better understand the costs which
&lt;br&gt;valgrind presents after a cachegrind run. &amp;nbsp;I've never spent the time to
&lt;br&gt;investigate this before, so I was moderately surprised to find that
&lt;br&gt;kcachegrind doesn't show the computation time on the call graph.
&lt;br&gt;&lt;br&gt;Instead it shows (by default) a quantity called &amp;quot;Instruction Fetch&amp;quot;
&lt;br&gt;which is just a count of the number of processor instructions
&lt;br&gt;encountered inside each function call. &amp;nbsp;If you turn on cache profiling
&lt;br&gt;in a callgrind run, you can also view a bunch of other costs, including
&lt;br&gt;L1 and L2 cache misses etc. &amp;nbsp;If the computation is cache-bound,
&lt;br&gt;kcachegrind does provide a way to estimate the real cost
&lt;br&gt;- &amp;quot;Cycle Estimation&amp;quot; - which includes an estimate of the time lost due
&lt;br&gt;to cache misses.
&lt;br&gt;&lt;br&gt;Note that to get any information about cache misses, callgrind has to be
&lt;br&gt;run with the --simulate-cache=yes option. &amp;nbsp;For example:
&lt;br&gt;&lt;br&gt;valgrind --tool=callgrind --simulate-cache=yes &amp;nbsp;aqsis --progress capsules.rib
&lt;br&gt;&lt;br&gt;Running valgrind using these options suggests that aqsis trunk has
&lt;br&gt;significant cache problems, one major culprit being
&lt;br&gt;CqOcclusionTree::updateDepths() (propagateDepths() is fine). &amp;nbsp;This is
&lt;br&gt;unambiguously due to memory-incoherent accesses touching all the sample
&lt;br&gt;points in the bucket...
&lt;br&gt;&lt;br&gt;Here's a helpful thread I found which discusses these issues:
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://thread.gmane.org/gmane.comp.debugging.valgrind/5997&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://thread.gmane.org/gmane.comp.debugging.valgrind/5997&lt;/a&gt;&lt;br&gt;&lt;br&gt;Cheers,
&lt;br&gt;~Chris.
&lt;br&gt;&lt;br&gt;-------------------------------------------------------------------------
&lt;br&gt;This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
&lt;br&gt;Build the coolest Linux based applications with Moblin SDK &amp; win great prizes
&lt;br&gt;Grand prize is a trip for two to an Open Source event anywhere in the world
&lt;br&gt;&lt;a href=&quot;http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Aqsis-development mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=20374276&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Aqsis-development@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/aqsis-development&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/aqsis-development&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/aqsis-development-f3702.html&quot; embed=&quot;fixTarget[3702]&quot; target=&quot;_top&quot; &gt;aqsis-development&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Profiling-with-valgrind-tp20374276p20374276.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-20287470</id>
	<title>Re: Non-uniqeness of hashing</title>
	<published>2008-11-01T23:36:55Z</published>
	<updated>2008-11-01T23:36:55Z</updated>
	<author>
		<name>Chris Foster</name>
	</author>
	<content type="html">Hi Andrew,
&lt;br&gt;&lt;br&gt;On Sun, Nov 02, 2008 at 01:41:00AM -0400, &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=20287470&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ajb@...&lt;/a&gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Quoting Chris Foster &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=20287470&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;foster@...&lt;/a&gt;&amp;gt;:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt;Let me share a disturbing revelation with you...
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; The hash collisions don't disturb me too much, though the hash function
&lt;br&gt;&amp;gt; could be better.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; However, this does disturb me:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt;Unfortunately our code has lots of instances of assuming that hashes are
&lt;br&gt;&amp;gt; &amp;gt;unique...
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; That's a bug. &amp;nbsp;Can you give some examples of places where this happens?
&lt;/div&gt;&lt;br&gt;Sure, search for CqString::hash() in ri.cpp and you'll find plenty, for
&lt;br&gt;instance in ProcessPrimitiveVariables(). &amp;nbsp;There's probably other places
&lt;br&gt;in the code where this happens as well.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Incidentally, some comments on the state of the art in hashing:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Back in the day, it was thought that it was best to use a cheap hash
&lt;br&gt;&amp;gt; function, and make the size of the hash table to be prime. &amp;nbsp;The prime
&lt;br&gt;&amp;gt; size meant that any weakness in the hash function could be compensated
&lt;br&gt;&amp;gt; for by the fact that there would be &amp;nbsp;no factors in common between the
&lt;br&gt;&amp;gt; hash table size and the hash value most of the time.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Modern thinking is that division is such an expensive operation on
&lt;br&gt;&amp;gt; today's CPUs that it's better to have a slightly more expensive hash
&lt;br&gt;&amp;gt; function if it means that your hash tables can be a power of 2 in
&lt;br&gt;&amp;gt; size. &amp;nbsp;The final &amp;quot;modulo hash table size&amp;quot; then becomes a single-cycle
&lt;br&gt;&amp;gt; logical and instruction rather than a fairly expensive division.
&lt;/div&gt;&lt;br&gt;Interesting. I definitely agree that modulo should be avoided in
&lt;br&gt;performance-critical code if at all possible... &amp;nbsp;Modulo is only 2x
&lt;br&gt;faster than computing sin() on my machine, which seems to be 100's of
&lt;br&gt;times slower than something like integer addition.
&lt;br&gt;&lt;br&gt;&amp;gt; Try this one: &lt;a href=&quot;http://www.azillionmonkeys.com/qed/hash.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.azillionmonkeys.com/qed/hash.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;I read the page - from what they say it seems like a really nice hash
&lt;br&gt;function, and the writeup is good too. &amp;nbsp;Thanks for pointing it out.
&lt;br&gt;&lt;br&gt;~Chris.
&lt;br&gt;&lt;br&gt;-------------------------------------------------------------------------
&lt;br&gt;This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
&lt;br&gt;Build the coolest Linux based applications with Moblin SDK &amp; win great prizes
&lt;br&gt;Grand prize is a trip for two to an Open Source event anywhere in the world
&lt;br&gt;&lt;a href=&quot;http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Aqsis-development mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=20287470&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Aqsis-development@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/aqsis-development&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/aqsis-development&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/aqsis-development-f3702.html&quot; embed=&quot;fixTarget[3702]&quot; target=&quot;_top&quot; &gt;aqsis-development&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Non-uniqeness-of-hashing-tp20287151p20287470.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-20287151</id>
	<title>Non-uniqeness of hashing</title>
	<published>2008-11-01T21:56:46Z</published>
	<updated>2008-11-01T21:56:46Z</updated>
	<author>
		<name>Chris Foster</name>
	</author>
	<content type="html">Hi all,
&lt;br&gt;&lt;br&gt;Let me share a disturbing revelation with you...
&lt;br&gt;&lt;br&gt;I was comparing the speed of our hashing algorithm today for finding a
&lt;br&gt;string in a set of strings, and at the same time I decided to test out
&lt;br&gt;how unique the hashes are. &amp;nbsp;Of course, I know that there *will* be
&lt;br&gt;collisions given a sufficiently large number of strings, but it was
&lt;br&gt;scary to see the reality of it with strings of length 2.
&lt;br&gt;&lt;br&gt;Consider the following test code, which finds hash collisions between
&lt;br&gt;two-character words and and the token &amp;quot;Pw&amp;quot;
&lt;br&gt;&lt;br&gt;//------------------------------------------------------------------------------
&lt;br&gt;#include &amp;lt;iostream&amp;gt;
&lt;br&gt;&lt;br&gt;typedef unsigned long hash_type;
&lt;br&gt;&lt;br&gt;inline static hash_type hash(const char *strName)
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; hash_type retval = 0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; const char *p = strName;
&lt;br&gt;&amp;nbsp; &amp;nbsp; retval = *p;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; if(retval)
&lt;br&gt;&amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (p += 1; *p != '\0'; p++)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; retval = (retval &amp;lt;&amp;lt; 5) - retval + *p;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; return retval;
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;int main()
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; // Find hash collisions of two-letter printable words with &amp;quot;Pw&amp;quot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; hash_type h = hash(&amp;quot;Pw&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; for(unsigned char c1 = 32; c1 &amp;lt; 127; ++c1)
&lt;br&gt;&amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for(unsigned char c2 = 32; c2 &amp;lt; 127; ++c2)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; char str[] = {c1, c2, 0};
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(hash(str) == h)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; std::cout &amp;lt;&amp;lt; &amp;quot;\&amp;quot;&amp;quot; &amp;lt;&amp;lt; str &amp;lt;&amp;lt; &amp;quot;\&amp;quot;\n&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;}
&lt;br&gt;//------------------------------------------------------------------------------
&lt;br&gt;&lt;br&gt;Results are
&lt;br&gt;&amp;quot;Pw&amp;quot;
&lt;br&gt;&amp;quot;QX&amp;quot;
&lt;br&gt;&amp;quot;R9&amp;quot;
&lt;br&gt;&lt;br&gt;Unfortunately our code has lots of instances of assuming that hashes are
&lt;br&gt;unique... &amp;nbsp;This doesn't seem very robust to me given that the user can
&lt;br&gt;provide any name as an input token. &amp;nbsp;The functional
&lt;br&gt;boost::hash&amp;lt;std::string&amp;gt;() is more unique, but still collides with &amp;quot;Q6&amp;quot;.
&lt;br&gt;boost::hash&amp;lt;T&amp;gt; seems very versatile and almost as fast as our
&lt;br&gt;CqString::hash() for strings.
&lt;br&gt;&lt;br&gt;&lt;br&gt;As an aside, comparing a given string with multiple strings is very fast
&lt;br&gt;when using prehashed values, since it's all inlined. &amp;nbsp;strcmp() is
&lt;br&gt;competitive, but std::string::operator==() seems to be relatively slow
&lt;br&gt;with g++ since it's not inlined for some reason.
&lt;br&gt;&lt;br&gt;~Chris.
&lt;br&gt;&lt;br&gt;-------------------------------------------------------------------------
&lt;br&gt;This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
&lt;br&gt;Build the coolest Linux based applications with Moblin SDK &amp; win great prizes
&lt;br&gt;Grand prize is a trip for two to an Open Source event anywhere in the world
&lt;br&gt;&lt;a href=&quot;http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Aqsis-development mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=20287151&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Aqsis-development@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/aqsis-development&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/aqsis-development&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/aqsis-development-f3702.html&quot; embed=&quot;fixTarget[3702]&quot; target=&quot;_top&quot; &gt;aqsis-development&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Non-uniqeness-of-hashing-tp20287151p20287151.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-20162693</id>
	<title>Re: [Aqsis-commits] SF.net SVN: aqsis:[2549] trunk/aqsis/misc/hairgen/CMakeLists.txt</title>
	<published>2008-10-25T02:47:18Z</published>
	<updated>2008-10-25T02:47:18Z</updated>
	<author>
		<name>Chris Foster</name>
	</author>
	<content type="html">On Sat, Oct 25, 2008 at 09:39:40AM +0000, &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=20162693&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;pgregory@...&lt;/a&gt; wrote:
&lt;br&gt;&amp;gt; Revision: 2549
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://aqsis.svn.sourceforge.net/aqsis/?rev=2549&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://aqsis.svn.sourceforge.net/aqsis/?rev=2549&amp;view=rev&lt;/a&gt;&lt;br&gt;&amp;gt; Author: &amp;nbsp; pgregory
&lt;br&gt;&amp;gt; Date: &amp;nbsp; &amp;nbsp; 2008-10-25 09:39:39 +0000 (Sat, 25 Oct 2008)
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Log Message:
&lt;br&gt;&amp;gt; -----------
&lt;br&gt;&amp;gt; Update the build for hairgen on Windows to include some important defines for the aqsis libraries to work.
&lt;br&gt;&lt;br&gt;Hey Paul, &amp;nbsp;Wouldn't both these defines be better in aqsis_compiler.h as
&lt;br&gt;mentioned the other day?
&lt;br&gt;&lt;br&gt;~Chris.
&lt;br&gt;&lt;br&gt;-------------------------------------------------------------------------
&lt;br&gt;This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
&lt;br&gt;Build the coolest Linux based applications with Moblin SDK &amp; win great prizes
&lt;br&gt;Grand prize is a trip for two to an Open Source event anywhere in the world
&lt;br&gt;&lt;a href=&quot;http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Aqsis-development mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=20162693&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Aqsis-development@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/aqsis-development&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/aqsis-development&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/aqsis-development-f3702.html&quot; embed=&quot;fixTarget[3702]&quot; target=&quot;_top&quot; &gt;aqsis-development&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Re%3A--Aqsis-commits--SF.net-SVN%3A-aqsis%3A-2549--trunk-aqsis-misc-hairgen-CMakeLists.txt-tp20162693p20162693.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19986311</id>
	<title>Re: [Aqsis-commits] SF.net SVN: aqsis:[2521] trunk/aqsis/misc/hairgen</title>
	<published>2008-10-14T20:48:35Z</published>
	<updated>2008-10-14T20:48:35Z</updated>
	<author>
		<name>Chris Foster</name>
	</author>
	<content type="html">On Wed, Oct 15, 2008 at 03:34:57AM +0000, &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19986311&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;c42f@...&lt;/a&gt; wrote:
&lt;br&gt;&amp;gt; Revision: 2521
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://aqsis.svn.sourceforge.net/aqsis/?rev=2521&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://aqsis.svn.sourceforge.net/aqsis/?rev=2521&amp;view=rev&lt;/a&gt;&lt;br&gt;&amp;gt; Author: &amp;nbsp; c42f
&lt;br&gt;&amp;gt; Date: &amp;nbsp; &amp;nbsp; 2008-10-15 03:34:56 +0000 (Wed, 15 Oct 2008)
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Log Message:
&lt;br&gt;&amp;gt; -----------
&lt;br&gt;&amp;gt; * Add a some documentation for the hairgen procedural
&lt;br&gt;&amp;gt; * Change the default install prefix for aqsis to be /usr/local in the cmake script.
&lt;br&gt;&lt;br&gt;s/aqsis/hairgen/
&lt;br&gt;&lt;br&gt;... oops.
&lt;br&gt;&lt;br&gt;-------------------------------------------------------------------------
&lt;br&gt;This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
&lt;br&gt;Build the coolest Linux based applications with Moblin SDK &amp; win great prizes
&lt;br&gt;Grand prize is a trip for two to an Open Source event anywhere in the world
&lt;br&gt;&lt;a href=&quot;http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Aqsis-development mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19986311&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Aqsis-development@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/aqsis-development&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/aqsis-development&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/aqsis-development-f3702.html&quot; embed=&quot;fixTarget[3702]&quot; target=&quot;_top&quot; &gt;aqsis-development&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Re%3A--Aqsis-commits--SF.net-SVN%3A-aqsis%3A-2521--trunk-aqsis-misc-hairgen-tp19986311p19986311.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19982444</id>
	<title>Re: aqsis source tree rearrangement</title>
	<published>2008-10-14T14:19:11Z</published>
	<updated>2008-10-14T14:19:11Z</updated>
	<author>
		<name>Chris Foster</name>
	</author>
	<content type="html">On Tue, Oct 14, 2008 at 09:19:55PM +0100, Matthias Baas wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Chris Foster wrote:
&lt;br&gt;&amp;gt; &amp;gt; aqsis/
&lt;br&gt;&amp;gt; &amp;gt; |-- config.h
&lt;br&gt;&amp;gt; &amp;gt; |-- ...
&lt;br&gt;&amp;gt; &amp;gt; |-- ri/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; # &amp;lt;-- tranditional C headers for RI and friends
&lt;br&gt;&amp;gt; &amp;gt; | &amp;nbsp; |-- ri.h
&lt;br&gt;&amp;gt; &amp;gt; | &amp;nbsp; |-- ndspy.h
&lt;br&gt;&amp;gt; &amp;gt; | &amp;nbsp; |-- slo.h
&lt;br&gt;&amp;gt; &amp;gt; | &amp;nbsp; |-- ...
&lt;br&gt;&amp;gt; &amp;gt; |-- ...
&lt;br&gt;&amp;gt; &amp;gt; |-- types/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# &amp;lt;-- stuff that is currently in the aqsistypes library
&lt;br&gt;&amp;gt; &amp;gt; | &amp;nbsp; |-- ...
&lt;br&gt;&amp;gt; &amp;gt; | &amp;nbsp; |-- integer.h
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Personally, I'd vote for a structure where the files deeper down the 
&lt;br&gt;&amp;gt; hierarchy are the more specialized files and files further up are the 
&lt;br&gt;&amp;gt; generic ones that the user is supposed to include in his applications.
&lt;br&gt;&amp;gt; Then I could still decide myself if I wanted to add $INCLUDE/aqsis to 
&lt;br&gt;&amp;gt; the include paths and just do a #include &amp;lt;ri.h&amp;gt; or if I'd rather want to 
&lt;br&gt;&amp;gt; include via &amp;lt;aqsis/ri.h&amp;gt;. From a user's point of view, it also appears 
&lt;br&gt;&amp;gt; to be cleaner to me as I could just have a look into the root directory 
&lt;br&gt;&amp;gt; to get an overview of what is there and what the headers are that I may 
&lt;br&gt;&amp;gt; want to include.
&lt;/div&gt;&lt;br&gt;I totally agree - having ri.h at aqsis/ri.h really makes sense to me.
&lt;br&gt;Unfortunately this is just plain in compatible with having generic names
&lt;br&gt;in the aqsis directory, so aqsis/types/ is out.
&lt;br&gt;&lt;br&gt;aqsis/aqsistypes
&lt;br&gt;aqsis/aqsistex
&lt;br&gt;aqsis/aqsiscore
&lt;br&gt;&lt;br&gt;it just looks plain ugly to me. &amp;nbsp;Hence my thought of using aqsis-c or
&lt;br&gt;aqsis/ri/ or something. &amp;nbsp;Argh, the tradeoffs are killing me ;-)
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; But of course, with proper documentation I may not even have to look at 
&lt;br&gt;&amp;gt; that directory at all (which would even be better) and I would then just 
&lt;br&gt;&amp;gt; include whatever you tell me to include. :)
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; The extra complexity comes from exposing some of the aqsis internals for
&lt;br&gt;&amp;gt; &amp;gt; outside use. &amp;nbsp;Imagine if you had a fully-fleged shader virtual machine
&lt;br&gt;&amp;gt; &amp;gt; to link to. &amp;nbsp;Surely this would be useful and cool? &amp;nbsp;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Speaking of which, I had a look at the release notes of 3Delight 8.0 and 
&lt;br&gt;&amp;gt; &amp;nbsp; there seems to be just that now:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;quot;Introducing a new shader evaluation API and library: Sx. This API 
&lt;br&gt;&amp;gt; exposes methods to load and execute RenderMan shaders, in SIMD.&amp;quot;
&lt;/div&gt;&lt;br&gt;Sigh... those guys are a hard act to follow.
&lt;br&gt;&lt;br&gt;In general I hear what you're saying, which mostly boils down to &amp;quot;keep
&lt;br&gt;things simple if possible&amp;quot;.
&lt;br&gt;&lt;br&gt;Unfortunately there's always the tradeoff between power and simplicity
&lt;br&gt;and I think we were looking at this from different sides of that
&lt;br&gt;tradeoff. &amp;nbsp;You now have me quite worried about where the balance lies,
&lt;br&gt;but I think that's probably a good thing ;-)
&lt;br&gt;&lt;br&gt;I guess this also underlines the difference between the apparent
&lt;br&gt;complexity of C and C++ headers. &amp;nbsp;IMO, well-written C++ is very rich in
&lt;br&gt;user-defined types; this makes such an interface more complicated to
&lt;br&gt;understand but also more powerful. &amp;nbsp;C interfaces OTOH tend to use arrays
&lt;br&gt;of the builting types, and some relatively simple structs. &amp;nbsp;They have
&lt;br&gt;less ability to protect the user from stupid mistakes, but are much
&lt;br&gt;simpler at face value.
&lt;br&gt;&lt;br&gt;So I will keep simplicity in mind. &amp;nbsp;Thanks!
&lt;br&gt;~Chris.
&lt;br&gt;&lt;br&gt;-------------------------------------------------------------------------
&lt;br&gt;This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
&lt;br&gt;Build the coolest Linux based applications with Moblin SDK &amp; win great prizes
&lt;br&gt;Grand prize is a trip for two to an Open Source event anywhere in the world
&lt;br&gt;&lt;a href=&quot;http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Aqsis-development mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19982444&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Aqsis-development@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/aqsis-development&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/aqsis-development&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/aqsis-development-f3702.html&quot; embed=&quot;fixTarget[3702]&quot; target=&quot;_top&quot; &gt;aqsis-development&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/aqsis-source-tree-rearrangement-tp19627491p19982444.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19981421</id>
	<title>Re: aqsis source tree rearrangement</title>
	<published>2008-10-14T13:19:55Z</published>
	<updated>2008-10-14T13:19:55Z</updated>
	<author>
		<name>Matthias Baas-3</name>
	</author>
	<content type="html">Chris Foster wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; aqsis/
&lt;br&gt;&amp;gt; |-- config.h
&lt;br&gt;&amp;gt; |-- ...
&lt;br&gt;&amp;gt; |-- ri/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; # &amp;lt;-- tranditional C headers for RI and friends
&lt;br&gt;&amp;gt; | &amp;nbsp; |-- ri.h
&lt;br&gt;&amp;gt; | &amp;nbsp; |-- ndspy.h
&lt;br&gt;&amp;gt; | &amp;nbsp; |-- slo.h
&lt;br&gt;&amp;gt; | &amp;nbsp; |-- ...
&lt;br&gt;&amp;gt; |-- ...
&lt;br&gt;&amp;gt; |-- types/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# &amp;lt;-- stuff that is currently in the aqsistypes library
&lt;br&gt;&amp;gt; | &amp;nbsp; |-- ...
&lt;br&gt;&amp;gt; | &amp;nbsp; |-- integer.h
&lt;/div&gt;&lt;br&gt;Personally, I'd vote for a structure where the files deeper down the 
&lt;br&gt;hierarchy are the more specialized files and files further up are the 
&lt;br&gt;generic ones that the user is supposed to include in his applications.
&lt;br&gt;Then I could still decide myself if I wanted to add $INCLUDE/aqsis to 
&lt;br&gt;the include paths and just do a #include &amp;lt;ri.h&amp;gt; or if I'd rather want to 
&lt;br&gt;include via &amp;lt;aqsis/ri.h&amp;gt;. From a user's point of view, it also appears 
&lt;br&gt;to be cleaner to me as I could just have a look into the root directory 
&lt;br&gt;to get an overview of what is there and what the headers are that I may 
&lt;br&gt;want to include.
&lt;br&gt;But of course, with proper documentation I may not even have to look at 
&lt;br&gt;that directory at all (which would even be better) and I would then just 
&lt;br&gt;include whatever you tell me to include. :)
&lt;br&gt;&lt;br&gt;&amp;gt; The extra complexity comes from exposing some of the aqsis internals for
&lt;br&gt;&amp;gt; outside use. &amp;nbsp;Imagine if you had a fully-fleged shader virtual machine
&lt;br&gt;&amp;gt; to link to. &amp;nbsp;Surely this would be useful and cool? &amp;nbsp;
&lt;br&gt;&lt;br&gt;Speaking of which, I had a look at the release notes of 3Delight 8.0 and 
&lt;br&gt;&amp;nbsp; there seems to be just that now:
&lt;br&gt;&lt;br&gt;&amp;quot;Introducing a new shader evaluation API and library: Sx. This API 
&lt;br&gt;exposes methods to load and execute RenderMan shaders, in SIMD.&amp;quot;
&lt;br&gt;&lt;br&gt;But I haven't downloaded the new version yet.
&lt;br&gt;&lt;br&gt;- Matthias -
&lt;br&gt;&lt;br&gt;-------------------------------------------------------------------------
&lt;br&gt;This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
&lt;br&gt;Build the coolest Linux based applications with Moblin SDK &amp; win great prizes
&lt;br&gt;Grand prize is a trip for two to an Open Source event anywhere in the world
&lt;br&gt;&lt;a href=&quot;http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Aqsis-development mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19981421&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Aqsis-development@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/aqsis-development&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/aqsis-development&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/aqsis-development-f3702.html&quot; embed=&quot;fixTarget[3702]&quot; target=&quot;_top&quot; &gt;aqsis-development&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/aqsis-source-tree-rearrangement-tp19627491p19981421.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19967560</id>
	<title>Re: aqsis source tree rearrangement</title>
	<published>2008-10-13T23:07:09Z</published>
	<updated>2008-10-13T23:07:09Z</updated>
	<author>
		<name>Chris Foster</name>
	</author>
	<content type="html">On Mon, Oct 13, 2008 at 10:50:43PM +0100, Matthias Baas wrote:
&lt;br&gt;&amp;gt; &amp;gt; Ah, true (at least on g++/linux). &amp;nbsp;I hadn't taken note about the way
&lt;br&gt;&amp;gt; &amp;gt; that including with &amp;quot;&amp;quot; quotes searches first from the directory of the
&lt;br&gt;&amp;gt; &amp;gt; parent include file. &amp;nbsp;Note however that this is platform dependent - the
&lt;br&gt;&amp;gt; &amp;gt; C++ standard unfortunately doesn't specify the detailed behaviour of
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Ugh, that's bad, I wasn't aware of that.
&lt;br&gt;&lt;br&gt;Yeah, it's ugly. &amp;nbsp;I'm not claiming that anything I'm proposing really
&lt;br&gt;helps solve this problem.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; &amp;gt; If we consistently use the aqsis directory as a namespace this isn't
&lt;br&gt;&amp;gt; &amp;gt; really a problem. &amp;nbsp;Note that many of the boost headers have generic
&lt;br&gt;&amp;gt; &amp;gt; names (some examples - any.hpp, array.hpp, assert.hpp, ...) and they
&lt;br&gt;&amp;gt; &amp;gt; don't seem to have problems with this.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Well, I was mainly referring to the confusion it could cause on the 
&lt;br&gt;&amp;gt; *people*, not the compiler. :) In emails you may refer to &amp;quot;math.h&amp;quot; and 
&lt;br&gt;&amp;gt; newcomers may think you're talking about the system header.
&lt;br&gt;&amp;gt; Boost uses the suffix .hpp which already gives an indication that 
&lt;br&gt;&amp;gt; assert.hpp is not the same as the system assert.h.
&lt;/div&gt;&lt;br&gt;If our headers are always included with the aqsis/ prefix, I think the
&lt;br&gt;confusion will be minimized. &amp;nbsp;I really think this is a relatively minor
&lt;br&gt;consideration.
&lt;br&gt;&lt;br&gt;&amp;gt; &amp;gt; (This is only a valid point if the content of ri.h etc actually
&lt;br&gt;&amp;gt; &amp;gt; resides in aqsis-c.) &amp;nbsp;It also explicilty indicates to users which
&lt;br&gt;&amp;gt; &amp;gt; headers they may use in their C programs, and which are C++ only.
&lt;br&gt;&amp;gt; &amp;gt; Everyone knows that valid C is also valid C++,
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I tended to think the same, but then you sent me a patch for the RPly 
&lt;br&gt;&amp;gt; lib in cgkit so that it can also be compiled with a C++ compiler. Before 
&lt;br&gt;&amp;gt; that, it could only be compiled with a C compiler. :)
&lt;br&gt;&lt;br&gt;Hehe, yeah I thought of that as I wrote the above. &amp;nbsp;Note though that the
&lt;br&gt;problem in the case of rply.c resulted from gcc compiling something that
&lt;br&gt;is not standard C ;-)
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; &amp;gt; Ok, so how about the following scheme instead. &amp;nbsp;We could put the C
&lt;br&gt;&amp;gt; &amp;gt; includes in a subdirectory of $prefix/aqsis, for instance (as suggested
&lt;br&gt;&amp;gt; &amp;gt; by Tristan):
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; $prefix/include/aqsis/ri/
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; ri.h
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; slx.h
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; ndspy.h
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; ...
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; Unfortunately some of these C headers already depend on other headers
&lt;br&gt;&amp;gt; &amp;gt; (aqsis_config.h, aqsis_compiler.h, ri.inl); I'm not sure how to deal
&lt;br&gt;&amp;gt; &amp;gt; with these yet. &amp;nbsp;Including by relative path is possible but not entirely
&lt;br&gt;&amp;gt; &amp;gt; portable.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; A relative path doesn't look right to me. Aren't the above names already 
&lt;br&gt;&amp;gt; unique enough that it is quite unlikely that they will ever produce a clash?
&lt;/div&gt;&lt;br&gt;The point is that aqsis_config.h is needed by lots of the C++ aqsis
&lt;br&gt;libs, and it would be somewhat inappropriate (IMO) to place it in the
&lt;br&gt;same directory as C headers such as ndspy.h, especially since I'd like
&lt;br&gt;to rename it as (uh-oh) aqsis/config.h.
&lt;br&gt;&lt;br&gt;In the case it's not in the same directory as the C headers, we either
&lt;br&gt;need to include it by relative path, or by a path rooted at the base of
&lt;br&gt;the aqsis include tree. &amp;nbsp;Suppose that we have the following include
&lt;br&gt;layout inside $prefix/include:
&lt;br&gt;&lt;br&gt;aqsis/
&lt;br&gt;|-- config.h
&lt;br&gt;|-- ...
&lt;br&gt;|-- ri/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; # &amp;lt;-- tranditional C headers for RI and friends
&lt;br&gt;| &amp;nbsp; |-- ri.h
&lt;br&gt;| &amp;nbsp; |-- ndspy.h
&lt;br&gt;| &amp;nbsp; |-- slo.h
&lt;br&gt;| &amp;nbsp; |-- ...
&lt;br&gt;|-- ...
&lt;br&gt;|-- types/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# &amp;lt;-- stuff that is currently in the aqsistypes library
&lt;br&gt;| &amp;nbsp; |-- ...
&lt;br&gt;| &amp;nbsp; |-- integer.h
&lt;br&gt;&lt;br&gt;Now, ndspy.h has two choices:
&lt;br&gt;&lt;br&gt;#include &amp;lt;aqsis/config.h&amp;gt; &amp;nbsp;// presumes that $prefix/include is in the compiler include path
&lt;br&gt;#include &amp;quot;../config.h&amp;quot; &amp;nbsp; &amp;nbsp; // Ugh.
&lt;br&gt;&lt;br&gt;Now, you're probably going to counter that config.h should be called
&lt;br&gt;aqsis_config.h, and should go in the same directory as ri.h. &amp;nbsp;I don't
&lt;br&gt;like this since I want to think of aqsis as a set of C++ libraries which
&lt;br&gt;happen to have some C interfaces - in that case the C++ directory
&lt;br&gt;structure is the right place for config.h to go.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; &amp;gt; I think this consideration is overruled by needing a standard way for
&lt;br&gt;&amp;gt; &amp;gt; external programs to include aqsis headers. &amp;nbsp;Imagine that we distributed
&lt;br&gt;&amp;gt; &amp;gt; our headers in nested directories by default, and someone writes a
&lt;br&gt;&amp;gt; &amp;gt; program which expects to
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; #include &amp;lt;aqsis/types/vector.h&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; #include &amp;lt;aqsis/ribparse/ribparser.h&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; // ... etc
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; If a studio then goes and installs the aqsis headers all in one big
&lt;br&gt;&amp;gt; &amp;gt; directory then any program which includes aqsis as above will fail to
&lt;br&gt;&amp;gt; &amp;gt; compile without modifications.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Correct. In this particular example, the studio would either *not* 
&lt;br&gt;&amp;gt; install all headers in one big directory or change the headers of the 
&lt;br&gt;&amp;gt; application.
&lt;br&gt;&amp;gt; However, in the scenario I was thinking of, the studio would decide to 
&lt;br&gt;&amp;gt; install the Aqsis libs to be able to use them for *their own* plugins 
&lt;br&gt;&amp;gt; and utilities and then they might have their own guidelines how headers 
&lt;br&gt;&amp;gt; should be included (and this may or may not be the same as the official 
&lt;br&gt;&amp;gt; guidelines).
&lt;/div&gt;&lt;br&gt;Is there any evidence that studios would want to rearrange headers from
&lt;br&gt;external libraries in such a way? &amp;nbsp;This sounds quite odd from my
&lt;br&gt;perspective, but I've got no experience installing software at a
&lt;br&gt;company.
&lt;br&gt;&lt;br&gt;Actually, there's a way to support odd situations like this without
&lt;br&gt;compromising our install tree: use forwarding headers. &amp;nbsp;Imagine ri.h was
&lt;br&gt;installed into $prefix/install/aqsis/ri/ri.h but the studio wanted ri.h
&lt;br&gt;to go into $prefix/install. &amp;nbsp;The easy way around this is to simply
&lt;br&gt;install a &amp;quot;forwarding&amp;quot; ri.h into $prefix/install containing a single
&lt;br&gt;line:
&lt;br&gt;&lt;br&gt;#include &amp;lt;aqsis/ri/ri.h&amp;gt;
&lt;br&gt;&lt;br&gt;That way people can have things both ways.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Whereas if they only wanted to compile a *third-party* 
&lt;br&gt;&amp;gt; application that uses the Aqsis libs, then all the effort of using 
&lt;br&gt;&amp;gt; in-house build environments would probably not be worthwhile and they 
&lt;br&gt;&amp;gt; would build that tool like everyone else does and just make the binaries 
&lt;br&gt;&amp;gt; available.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; My point just is, enforce as much as necessary to get a consistent 
&lt;br&gt;&amp;gt; layout, but still leave as much as possible open. &amp;nbsp;(And don't make it
&lt;br&gt;&amp;gt; more complex than necessary. After all, Aqsis is not a gigantic
&lt;br&gt;&amp;gt; framework with dozens of components. I think there are only a few
&lt;br&gt;&amp;gt; components that will be of interest to other users)
&lt;/div&gt;&lt;br&gt;I disagree here, and this is the main sticking point I think. &amp;nbsp;As
&lt;br&gt;described in previous mails, I'd love aqsis to become a generally useful
&lt;br&gt;set of C++ graphics libraries, but to do so we need a coherent policy on
&lt;br&gt;what to do with our header files. &amp;nbsp;For aqsis-1.6, I'd really like to see
&lt;br&gt;the aqsistex headers installed, along with the new RIB parser as well as
&lt;br&gt;the traditional C headers.
&lt;br&gt;&lt;br&gt;Now consider this: There's 52 header files in aqsistex alone, which
&lt;br&gt;makes for a very crowded include directory. &amp;nbsp;What's more, to use the
&lt;br&gt;aqsistex library effectively in C++ you probably need to install most of
&lt;br&gt;these. &amp;nbsp;A subset would only suffice for the limited set of filtering
&lt;br&gt;operations which are already supported for use in the shading language.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; &amp;gt; In any case, other libraries (again, boost) manage perfectly well with a
&lt;br&gt;&amp;gt; &amp;gt; builtin nested directory structure. &amp;nbsp;What I'm proposing is exactly like
&lt;br&gt;&amp;gt; &amp;gt; what they've been doing for years.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I'm actually only using a rather small subset of all the Boost libs, so 
&lt;br&gt;&amp;gt; I don't have an overview of all of them. But at least in the case of 
&lt;br&gt;&amp;gt; Boost.Python there actually is a sub-directory &amp;quot;python&amp;quot;, but when I use 
&lt;br&gt;&amp;gt; Boost.Python in my programs, I always include like this:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; #include &amp;lt;boost/python.hpp&amp;gt;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I don't have to mention the &amp;quot;python&amp;quot; sub-directory explicitly, this is 
&lt;br&gt;&amp;gt; all done within python.hpp.
&lt;br&gt;&amp;gt; Is there any Boost lib where you actually have to include files from the 
&lt;br&gt;&amp;gt; sub-directory, i.e.:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; #include &amp;lt;boost/libname/lib.hpp&amp;gt;
&lt;/div&gt;&lt;br&gt;Plenty, for example anything in boost/iostreams/. &amp;nbsp;Even without this,
&lt;br&gt;there's a good reason for being specific in the headers which you
&lt;br&gt;include: It decreases the compile times if you pull in less headers,
&lt;br&gt;especially when lots of template implementations are involved.
&lt;br&gt;&lt;br&gt;&amp;gt; I would prefer if I could use the major Aqsis components just by 
&lt;br&gt;&amp;gt; including stuff from &amp;lt;aqsis/component.h&amp;gt;. component.h could then still 
&lt;br&gt;&amp;gt; include stuff from sub-directories.
&lt;br&gt;&lt;br&gt;There's definitely something to be said for making it easy for the user
&lt;br&gt;in this way. &amp;nbsp;I'll probably think about doing this for some parts of
&lt;br&gt;aqsistex.
&lt;br&gt;&lt;br&gt;&amp;gt; I'd just like to avoid that things get too complex just for a few header 
&lt;br&gt;&amp;gt; files. Speaking of which, how many of the header files really need to 
&lt;br&gt;&amp;gt; get distributed? On Windows, Aqsis ships with 39 header files (205kb), 
&lt;br&gt;&amp;gt; whereas Pixie just has 7 (32kb) and 3Delight 19 (178kb, in 2 
&lt;br&gt;&amp;gt; directories). Not that it really matters, but I'm just wondering where 
&lt;br&gt;&amp;gt; this additional complexity comes from?
&lt;br&gt;&lt;br&gt;The extra complexity comes from exposing some of the aqsis internals for
&lt;br&gt;outside use. &amp;nbsp;Imagine if you had a fully-fleged shader virtual machine
&lt;br&gt;to link to. &amp;nbsp;Surely this would be useful and cool? &amp;nbsp;Up until now, the
&lt;br&gt;extra stuff we distribute hasn't been very useful - I'm trying to change
&lt;br&gt;this.
&lt;br&gt;&lt;br&gt;Typically other renderers expose only very specific details through a
&lt;br&gt;narrow set of well-defined interfaces. &amp;nbsp;This is perfectly ok if the
&lt;br&gt;focus is on using the libs with the renderer itself, but the user cannot
&lt;br&gt;go further than this and use the libs in their own projects.
&lt;br&gt;&lt;br&gt;~Chris.
&lt;br&gt;&lt;br&gt;-------------------------------------------------------------------------
&lt;br&gt;This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
&lt;br&gt;Build the coolest Linux based applications with Moblin SDK &amp; win great prizes
&lt;br&gt;Grand prize is a trip for two to an Open Source event anywhere in the world
&lt;br&gt;&lt;a href=&quot;http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Aqsis-development mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19967560&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Aqsis-development@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/aqsis-development&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/aqsis-development&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/aqsis-development-f3702.html&quot; embed=&quot;fixTarget[3702]&quot; target=&quot;_top&quot; &gt;aqsis-development&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/aqsis-source-tree-rearrangement-tp19627491p19967560.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19963910</id>
	<title>Re: aqsis source tree rearrangement</title>
	<published>2008-10-13T14:50:43Z</published>
	<updated>2008-10-13T14:50:43Z</updated>
	<author>
		<name>Matthias Baas-3</name>
	</author>
	<content type="html">Chris Foster wrote:
&lt;br&gt;&amp;gt;&amp;gt; Why is that? As long as the headers are in the same directory, they
&lt;br&gt;&amp;gt;&amp;gt; could include each other just by name:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;#include &amp;quot;math.h&amp;quot;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Ah, true (at least on g++/linux). &amp;nbsp;I hadn't taken note about the way
&lt;br&gt;&amp;gt; that including with &amp;quot;&amp;quot; quotes searches first from the directory of the
&lt;br&gt;&amp;gt; parent include file. &amp;nbsp;Note however that this is platform dependent - the
&lt;br&gt;&amp;gt; C++ standard unfortunately doesn't specify the detailed behaviour of
&lt;br&gt;&lt;br&gt;Ugh, that's bad, I wasn't aware of that.
&lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt; (but to prevent confusion, I wouldn't recommend naming header files
&lt;br&gt;&amp;gt;&amp;gt; after well-known system headers such as math.h, even when a &amp;quot;namespace&amp;quot;
&lt;br&gt;&amp;gt;&amp;gt; scheme such as the above is set up)
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; If we consistently use the aqsis directory as a namespace this isn't
&lt;br&gt;&amp;gt; really a problem. &amp;nbsp;Note that many of the boost headers have generic
&lt;br&gt;&amp;gt; names (some examples - any.hpp, array.hpp, assert.hpp, ...) and they
&lt;br&gt;&amp;gt; don't seem to have problems with this.
&lt;br&gt;&lt;br&gt;Well, I was mainly referring to the confusion it could cause on the 
&lt;br&gt;*people*, not the compiler. :) In emails you may refer to &amp;quot;math.h&amp;quot; and 
&lt;br&gt;newcomers may think you're talking about the system header.
&lt;br&gt;Boost uses the suffix .hpp which already gives an indication that 
&lt;br&gt;assert.hpp is not the same as the system assert.h.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;&amp;gt; If not, then 
&lt;br&gt;&amp;gt;&amp;gt; ri.h is a perfectly valid C++ header file and the directory name is 
&lt;br&gt;&amp;gt;&amp;gt; misleading, isn't it? (I still would have to use that directory even 
&lt;br&gt;&amp;gt;&amp;gt; when I'm writing a pure C++ application) It's just that the library file 
&lt;br&gt;&amp;gt;&amp;gt; uses C linkage, but that doesn't make the header a C-only header (or the 
&lt;br&gt;&amp;gt;&amp;gt; library a C library). So in what way does the separation increase clarity?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; For one thing, it might help remind developers that anything going into
&lt;br&gt;&amp;gt; aqsis-c deserves special attention so that it's C-compatible rather than
&lt;br&gt;&amp;gt; C++ only. 
&lt;/div&gt;&lt;br&gt;Fair enough.
&lt;br&gt;&lt;br&gt;&amp;gt; (This is only a valid point if the content of ri.h etc actually
&lt;br&gt;&amp;gt; resides in aqsis-c.) &amp;nbsp;It also explicilty indicates to users which
&lt;br&gt;&amp;gt; headers they may use in their C programs, and which are C++ only.
&lt;br&gt;&amp;gt; Everyone knows that valid C is also valid C++,
&lt;br&gt;&lt;br&gt;I tended to think the same, but then you sent me a patch for the RPly 
&lt;br&gt;lib in cgkit so that it can also be compiled with a C++ compiler. Before 
&lt;br&gt;that, it could only be compiled with a C compiler. :)
&lt;br&gt;But I agree that for practical reasons, the above assumption is ok, 
&lt;br&gt;especially as you are in control of the header files.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;&amp;gt; I can see the point you made earlier in your mail though, that having 
&lt;br&gt;&amp;gt;&amp;gt; all headers in one directory may lead to name clashes at some point.
&lt;br&gt;&amp;gt;&amp;gt; But I think having sub-directories inside the main Aqsis include 
&lt;br&gt;&amp;gt;&amp;gt; directory already fixes this, so that it is not necessary to have two 
&lt;br&gt;&amp;gt;&amp;gt; separate &amp;quot;main&amp;quot; include directories.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Ok, so how about the following scheme instead. &amp;nbsp;We could put the C
&lt;br&gt;&amp;gt; includes in a subdirectory of $prefix/aqsis, for instance (as suggested
&lt;br&gt;&amp;gt; by Tristan):
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; $prefix/include/aqsis/ri/
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; ri.h
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; slx.h
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; ndspy.h
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; ...
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Unfortunately some of these C headers already depend on other headers
&lt;br&gt;&amp;gt; (aqsis_config.h, aqsis_compiler.h, ri.inl); I'm not sure how to deal
&lt;br&gt;&amp;gt; with these yet. &amp;nbsp;Including by relative path is possible but not entirely
&lt;br&gt;&amp;gt; portable.
&lt;/div&gt;&lt;br&gt;A relative path doesn't look right to me. Aren't the above names already 
&lt;br&gt;unique enough that it is quite unlikely that they will ever produce a clash?
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;&amp;gt; Some other things that haven't been mentioned in your mail:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; - As already indicated above I think it would be beneficial if the 
&lt;br&gt;&amp;gt;&amp;gt; headers were written in a way that allows the user to package them up in 
&lt;br&gt;&amp;gt;&amp;gt; a different way. Studios may have their own software installation scheme 
&lt;br&gt;&amp;gt;&amp;gt; or OS distributions may have their own rules where to put header and 
&lt;br&gt;&amp;gt;&amp;gt; library files and it would be good if they could do what they want 
&lt;br&gt;&amp;gt;&amp;gt; without having to patch the header files.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I think this consideration is overruled by needing a standard way for
&lt;br&gt;&amp;gt; external programs to include aqsis headers. &amp;nbsp;Imagine that we distributed
&lt;br&gt;&amp;gt; our headers in nested directories by default, and someone writes a
&lt;br&gt;&amp;gt; program which expects to
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; #include &amp;lt;aqsis/types/vector.h&amp;gt;
&lt;br&gt;&amp;gt; #include &amp;lt;aqsis/ribparse/ribparser.h&amp;gt;
&lt;br&gt;&amp;gt; // ... etc
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; If a studio then goes and installs the aqsis headers all in one big
&lt;br&gt;&amp;gt; directory then any program which includes aqsis as above will fail to
&lt;br&gt;&amp;gt; compile without modifications.
&lt;/div&gt;&lt;br&gt;Correct. In this particular example, the studio would either *not* 
&lt;br&gt;install all headers in one big directory or change the headers of the 
&lt;br&gt;application.
&lt;br&gt;However, in the scenario I was thinking of, the studio would decide to 
&lt;br&gt;install the Aqsis libs to be able to use them for *their own* plugins 
&lt;br&gt;and utilities and then they might have their own guidelines how headers 
&lt;br&gt;should be included (and this may or may not be the same as the official 
&lt;br&gt;guidelines). Whereas if they only wanted to compile a *third-party* 
&lt;br&gt;application that uses the Aqsis libs, then all the effort of using 
&lt;br&gt;in-house build environments would probably not be worthwhile and they 
&lt;br&gt;would build that tool like everyone else does and just make the binaries 
&lt;br&gt;available.
&lt;br&gt;&lt;br&gt;My point just is, enforce as much as necessary to get a consistent 
&lt;br&gt;layout, but still leave as much as possible open. (And don't make it 
&lt;br&gt;more complex than necessary. After all, Aqsis is not a gigantic 
&lt;br&gt;framework with dozens of components. I think there are only a few 
&lt;br&gt;components that will be of interest to other users)
&lt;br&gt;&lt;br&gt;&amp;gt; In any case, other libraries (again, boost) manage perfectly well with a
&lt;br&gt;&amp;gt; builtin nested directory structure. &amp;nbsp;What I'm proposing is exactly like
&lt;br&gt;&amp;gt; what they've been doing for years.
&lt;br&gt;&lt;br&gt;I'm actually only using a rather small subset of all the Boost libs, so 
&lt;br&gt;I don't have an overview of all of them. But at least in the case of 
&lt;br&gt;Boost.Python there actually is a sub-directory &amp;quot;python&amp;quot;, but when I use 
&lt;br&gt;Boost.Python in my programs, I always include like this:
&lt;br&gt;&lt;br&gt;&amp;nbsp; #include &amp;lt;boost/python.hpp&amp;gt;
&lt;br&gt;&lt;br&gt;I don't have to mention the &amp;quot;python&amp;quot; sub-directory explicitly, this is 
&lt;br&gt;all done within python.hpp.
&lt;br&gt;Is there any Boost lib where you actually have to include files from the 
&lt;br&gt;sub-directory, i.e.:
&lt;br&gt;&lt;br&gt;&amp;nbsp; #include &amp;lt;boost/libname/lib.hpp&amp;gt;
&lt;br&gt;&lt;br&gt;I would prefer if I could use the major Aqsis components just by 
&lt;br&gt;including stuff from &amp;lt;aqsis/component.h&amp;gt;. component.h could then still 
&lt;br&gt;include stuff from sub-directories.
&lt;br&gt;&lt;br&gt;I'd just like to avoid that things get too complex just for a few header 
&lt;br&gt;files. Speaking of which, how many of the header files really need to 
&lt;br&gt;get distributed? On Windows, Aqsis ships with 39 header files (205kb), 
&lt;br&gt;whereas Pixie just has 7 (32kb) and 3Delight 19 (178kb, in 2 
&lt;br&gt;directories). Not that it really matters, but I'm just wondering where 
&lt;br&gt;this additional complexity comes from? It seems that quite a few of them 
&lt;br&gt;are only necessary when building Aqsis itself.
&lt;br&gt;&lt;br&gt;Cheers,
&lt;br&gt;&lt;br&gt;- Matthias -
&lt;br&gt;&lt;br&gt;-------------------------------------------------------------------------
&lt;br&gt;This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
&lt;br&gt;Build the coolest Linux based applications with Moblin SDK &amp; win great prizes
&lt;br&gt;Grand prize is a trip for two to an Open Source event anywhere in the world
&lt;br&gt;&lt;a href=&quot;http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Aqsis-development mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19963910&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Aqsis-development@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/aqsis-development&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/aqsis-development&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/aqsis-development-f3702.html&quot; embed=&quot;fixTarget[3702]&quot; target=&quot;_top&quot; &gt;aqsis-development&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/aqsis-source-tree-rearrangement-tp19627491p19963910.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19949864</id>
	<title>Re: aqsis source tree rearrangement</title>
	<published>2008-10-13T00:17:09Z</published>
	<updated>2008-10-13T00:17:09Z</updated>
	<author>
		<name>Chris Foster</name>
	</author>
	<content type="html">Hi Matthias,
&lt;br&gt;&lt;br&gt;On Wed, Sep 24, 2008 at 05:56:36PM +0200, Matthias Baas wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; &amp;gt; However, it requires significant changes to our source tree layout,
&lt;br&gt;&amp;gt; &amp;gt; since the above method of #inclusion must be reflected in the aqsis
&lt;br&gt;&amp;gt; &amp;gt; headers as well or they won't work for users of our libs. &amp;nbsp;OTOH, they
&lt;br&gt;&amp;gt; &amp;gt; also need to work when we're building aqsis itself.
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; That is, inside files such as vector3d.h, we would need to
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; #include &amp;lt;aqsis/types/math.h&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; instead of
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; #include &amp;quot;aqsismath.h&amp;quot;
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; for example.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Why is that? As long as the headers are in the same directory, they
&lt;br&gt;&amp;gt; could include each other just by name:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;#include &amp;quot;math.h&amp;quot;
&lt;/div&gt;&lt;br&gt;Ah, true (at least on g++/linux). &amp;nbsp;I hadn't taken note about the way
&lt;br&gt;that including with &amp;quot;&amp;quot; quotes searches first from the directory of the
&lt;br&gt;parent include file. &amp;nbsp;Note however that this is platform dependent - the
&lt;br&gt;C++ standard unfortunately doesn't specify the detailed behaviour of
&lt;br&gt;either form,
&lt;br&gt;&lt;br&gt;#include &amp;lt;blah.h&amp;gt;
&lt;br&gt;&lt;br&gt;or
&lt;br&gt;&lt;br&gt;#include &amp;quot;blah.h&amp;quot;
&lt;br&gt;&lt;br&gt;IIRC, about the only thing the standard guarantees is that &amp;quot;&amp;quot; searches
&lt;br&gt;using some extra method, followed by searching using the method of &amp;lt;&amp;gt; if
&lt;br&gt;no headers are found in the first step. &amp;nbsp;On the systems I've used the
&lt;br&gt;extra method happens to be looking in the path of the parent header
&lt;br&gt;file.
&lt;br&gt;&lt;br&gt;&amp;gt; (but to prevent confusion, I wouldn't recommend naming header files
&lt;br&gt;&amp;gt; after well-known system headers such as math.h, even when a &amp;quot;namespace&amp;quot;
&lt;br&gt;&amp;gt; scheme such as the above is set up)
&lt;br&gt;&lt;br&gt;If we consistently use the aqsis directory as a namespace this isn't
&lt;br&gt;really a problem. &amp;nbsp;Note that many of the boost headers have generic
&lt;br&gt;names (some examples - any.hpp, array.hpp, assert.hpp, ...) and they
&lt;br&gt;don't seem to have problems with this.
&lt;br&gt;&lt;br&gt;&amp;gt; Using only the local names has the advantage that the directory
&lt;br&gt;&amp;gt; structure of the header files wouldn't be dictated by the header files
&lt;br&gt;&amp;gt; themselves. Instead, any user/packager could decide to use a different
&lt;br&gt;&amp;gt; scheme.
&lt;br&gt;&lt;br&gt;If we expect people to use the aqsis headers in external projects we
&lt;br&gt;really need a standard way to package those headers - either all in one
&lt;br&gt;directory or in a well-organized directory heiarchy. &amp;nbsp;Without
&lt;br&gt;consistency of the installed headers, people will have a lot of
&lt;br&gt;difficulty compiling any third party programs... &amp;nbsp;So I don't think we
&lt;br&gt;want to support packagers who have weird and wonderful ways to rearrange
&lt;br&gt;the header directory structure. &amp;nbsp;See also some additional comments at
&lt;br&gt;the end of this mail.
&lt;br&gt;&lt;br&gt;&amp;gt; &amp;gt; [...]
&lt;br&gt;&amp;gt; &amp;gt; It seems prudent to separate the C and C++ headers for two reasons: 1)
&lt;br&gt;&amp;gt; &amp;gt; clarity, and 2) Traditionally programs expect to #include &amp;lt;ri.h&amp;gt; rather
&lt;br&gt;&amp;gt; &amp;gt; than #include &amp;lt;aqsis/ri.h&amp;gt;, so will need to add aqsis-c to their include
&lt;br&gt;&amp;gt; &amp;gt; path. &amp;nbsp;We probably don't want generic names like the types directory
&lt;br&gt;&amp;gt; &amp;gt; (aqsis/types) in the global include path.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I'm not so sure if I like this separation. Doesn't that mean I might 
&lt;br&gt;&amp;gt; have to add both paths to the include search paths?
&lt;br&gt;&lt;br&gt;It depends. &amp;nbsp;On posix what I've written makes sense, since the files
&lt;br&gt;will typically be installed into /usr/include which is in the system
&lt;br&gt;include path by default. &amp;nbsp;On windows it may make less sense however.
&lt;br&gt;&lt;br&gt;&amp;gt; Will the C++ header directory also contain C++ versions of ri.h et al? 
&lt;br&gt;&amp;gt; This would be consistent but probably somewhat impractical.
&lt;br&gt;&lt;br&gt;Ugh, having duplicate versions of the same header sounds wrong to me.
&lt;br&gt;An alternative is to include a trivial &amp;quot;forwarding&amp;quot; header for the C
&lt;br&gt;directory to the C++ versions. &amp;nbsp;Say we put ri.h into
&lt;br&gt;$prefix/include/aqsis/ri.h, then we could have
&lt;br&gt;$prefix/includ/aqsis-c/ri.h which simply includes the &amp;quot;real&amp;quot; ri.h:
&lt;br&gt;&lt;br&gt;#include &amp;quot;../aqsis/ri.h&amp;quot;
&lt;br&gt;&lt;br&gt;still... I'm not sure about that.
&lt;br&gt;&lt;br&gt;&amp;gt; If not, then 
&lt;br&gt;&amp;gt; ri.h is a perfectly valid C++ header file and the directory name is 
&lt;br&gt;&amp;gt; misleading, isn't it? (I still would have to use that directory even 
&lt;br&gt;&amp;gt; when I'm writing a pure C++ application) It's just that the library file 
&lt;br&gt;&amp;gt; uses C linkage, but that doesn't make the header a C-only header (or the 
&lt;br&gt;&amp;gt; library a C library). So in what way does the separation increase clarity?
&lt;br&gt;&lt;br&gt;For one thing, it might help remind developers that anything going into
&lt;br&gt;aqsis-c deserves special attention so that it's C-compatible rather than
&lt;br&gt;C++ only. &amp;nbsp;(This is only a valid point if the content of ri.h etc actually
&lt;br&gt;resides in aqsis-c.) &amp;nbsp;It also explicilty indicates to users which
&lt;br&gt;headers they may use in their C programs, and which are C++ only.
&lt;br&gt;Everyone knows that valid C is also valid C++, so I don't think it's
&lt;br&gt;inconsistent to be including something from aqsis-c in a C++ project.
&lt;br&gt;&lt;br&gt;&amp;gt; The second point only says that you have to add a search path to your 
&lt;br&gt;&amp;gt; list of include search paths, but that's always the case, no matter if 
&lt;br&gt;&amp;gt; the headers are separate or not.
&lt;br&gt;&lt;br&gt;Not exactly, I think I was unclear on the point I was trying to make
&lt;br&gt;here. &amp;nbsp;I was trying to say that having generic names in include/aqsis
&lt;br&gt;would be very convenient, but we cannot afford to do that if people
&lt;br&gt;should also add $prefix/include/aqsis to their include path to get at
&lt;br&gt;stuff like ri.h (because of name clashes).
&lt;br&gt;&lt;br&gt;&amp;gt; I can see the point you made earlier in your mail though, that having 
&lt;br&gt;&amp;gt; all headers in one directory may lead to name clashes at some point.
&lt;br&gt;&amp;gt; But I think having sub-directories inside the main Aqsis include 
&lt;br&gt;&amp;gt; directory already fixes this, so that it is not necessary to have two 
&lt;br&gt;&amp;gt; separate &amp;quot;main&amp;quot; include directories.
&lt;br&gt;&lt;br&gt;Ok, so how about the following scheme instead. &amp;nbsp;We could put the C
&lt;br&gt;includes in a subdirectory of $prefix/aqsis, for instance (as suggested
&lt;br&gt;by Tristan):
&lt;br&gt;&lt;br&gt;$prefix/include/aqsis/ri/
&lt;br&gt;&amp;nbsp; &amp;nbsp; ri.h
&lt;br&gt;&amp;nbsp; &amp;nbsp; slx.h
&lt;br&gt;&amp;nbsp; &amp;nbsp; ndspy.h
&lt;br&gt;&amp;nbsp; &amp;nbsp; ...
&lt;br&gt;&lt;br&gt;Unfortunately some of these C headers already depend on other headers
&lt;br&gt;(aqsis_config.h, aqsis_compiler.h, ri.inl); I'm not sure how to deal
&lt;br&gt;with these yet. &amp;nbsp;Including by relative path is possible but not entirely
&lt;br&gt;portable.
&lt;br&gt;&lt;br&gt;&amp;gt; Some other things that haven't been mentioned in your mail:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; - As already indicated above I think it would be beneficial if the 
&lt;br&gt;&amp;gt; headers were written in a way that allows the user to package them up in 
&lt;br&gt;&amp;gt; a different way. Studios may have their own software installation scheme 
&lt;br&gt;&amp;gt; or OS distributions may have their own rules where to put header and 
&lt;br&gt;&amp;gt; library files and it would be good if they could do what they want 
&lt;br&gt;&amp;gt; without having to patch the header files.
&lt;br&gt;&lt;br&gt;I think this consideration is overruled by needing a standard way for
&lt;br&gt;external programs to include aqsis headers. &amp;nbsp;Imagine that we distributed
&lt;br&gt;our headers in nested directories by default, and someone writes a
&lt;br&gt;program which expects to
&lt;br&gt;&lt;br&gt;#include &amp;lt;aqsis/types/vector.h&amp;gt;
&lt;br&gt;#include &amp;lt;aqsis/ribparse/ribparser.h&amp;gt;
&lt;br&gt;// ... etc
&lt;br&gt;&lt;br&gt;If a studio then goes and installs the aqsis headers all in one big
&lt;br&gt;directory then any program which includes aqsis as above will fail to
&lt;br&gt;compile without modifications.
&lt;br&gt;&lt;br&gt;In any case, other libraries (again, boost) manage perfectly well with a
&lt;br&gt;builtin nested directory structure. &amp;nbsp;What I'm proposing is exactly like
&lt;br&gt;what they've been doing for years.
&lt;br&gt;&lt;br&gt;&amp;gt; - What's the recommended way to have several versions of the Aqsis libs 
&lt;br&gt;&amp;gt; installed?
&lt;br&gt;&lt;br&gt;Good question; AFAIK there's no recommended way at present. &amp;nbsp;However, we
&lt;br&gt;do have an INCLUDEDIR build variable which may be modified by the user
&lt;br&gt;at will; this should be enough to easily support multiple versions of
&lt;br&gt;the headers in different directories. &amp;nbsp;In addition, our libraries use
&lt;br&gt;proper SO-versioning (at least on linux).
&lt;br&gt;&lt;br&gt;&amp;gt; - Will OSX use exactly the same scheme as POSIX/Windows? Will the 
&lt;br&gt;&amp;gt; libraries be available as Frameworks? Your proposed way to include files 
&lt;br&gt;&amp;gt; via a directory name (or path) seems to fit nicely into Apple's 
&lt;br&gt;&amp;gt; Framework scheme. But I think at least the installation procedure would 
&lt;br&gt;&amp;gt; be quite a bit different. (I still need to read a bit more about how 
&lt;br&gt;&amp;gt; exactly those Frameworks are set up)
&lt;br&gt;&lt;br&gt;I'm afraid I can't really answer this question since I know very little
&lt;br&gt;about OSX frameworks. &amp;nbsp;However, I'd like to stress that the method for
&lt;br&gt;including aqsis headers in any third party program should be consistent
&lt;br&gt;with our default install across platforms. &amp;nbsp;If not, people will have
&lt;br&gt;unnecessary difficulty writing portable code which uses the aqsis
&lt;br&gt;headers.
&lt;br&gt;&lt;br&gt;Thanks for your thoughts! &amp;nbsp;I've started a wiki page on this topic, and
&lt;br&gt;will continue to fill it in as the issues become clearer. &amp;nbsp;See
&lt;br&gt;&lt;a href=&quot;http://wiki.aqsis.org/dev/source_tree&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://wiki.aqsis.org/dev/source_tree&lt;/a&gt;&lt;br&gt;&lt;br&gt;~Chris.
&lt;br&gt;&lt;br&gt;-------------------------------------------------------------------------
&lt;br&gt;This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
&lt;br&gt;Build the coolest Linux based applications with Moblin SDK &amp; win great prizes
&lt;br&gt;Grand prize is a trip for two to an Open Source event anywhere in the world
&lt;br&gt;&lt;a href=&quot;http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Aqsis-development mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19949864&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Aqsis-development@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/aqsis-development&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/aqsis-development&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/aqsis-development-f3702.html&quot; embed=&quot;fixTarget[3702]&quot; target=&quot;_top&quot; &gt;aqsis-development&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/aqsis-source-tree-rearrangement-tp19627491p19949864.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19911500</id>
	<title>Re: Contributor License Agreements</title>
	<published>2008-10-09T20:46:47Z</published>
	<updated>2008-10-09T20:46:47Z</updated>
	<author>
		<name>Chris Foster</name>
	</author>
	<content type="html">On Thu, Oct 09, 2008 at 11:39:21PM +0100, Matthias Baas wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Chris Foster wrote:
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;nbsp; As for the licensing issue, we could add an exemption to allow
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; linking to the public interfaces from non-GPL/OSS code, but I'm not
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; sure that is really needed. I don't think something linking to Aqsis
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; via the RI interface could be considered a derivative work of Aqsis, 
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; any more than an application passing the Aqsis binary a lump of RIB
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; could.
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; Again I agree. &amp;nbsp;The RI interface isn't even our work!
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; The RI interface specification is not your work, but this particular 
&lt;br&gt;&amp;gt; implementation is.
&lt;/div&gt;&lt;br&gt;True, but I cannot see the difference between producing RIB as an
&lt;br&gt;intermediate step versus calling the RI directly. &amp;nbsp;It seems pretty clear
&lt;br&gt;that commercial programs can produce RIB which is then rendered by
&lt;br&gt;aqsis; why not allow them the extra convenience?
&lt;br&gt;&lt;br&gt;&amp;gt; It was always my understanding that it would be illegal to link GPL
&lt;br&gt;&amp;gt; libs against other code that uses a license which is incompatible with
&lt;br&gt;&amp;gt; the GPL (but of course, I'm not an expert on this subject).
&lt;br&gt;&lt;br&gt;AFAICT this is pretty debatable. &amp;nbsp;What is clear however is that the FSF
&lt;br&gt;intended that linking be disallowed, and they state so in the _appendix_
&lt;br&gt;to the GPL:
&lt;br&gt;&lt;br&gt;&amp;quot;&amp;quot;&amp;quot;
&lt;br&gt;&amp;nbsp; This General Public License does not permit incorporating your program into
&lt;br&gt;&amp;nbsp; proprietary programs. &amp;nbsp;If your program is a subroutine library, you may
&lt;br&gt;&amp;nbsp; consider it more useful to permit linking proprietary applications with the
&lt;br&gt;&amp;nbsp; library. &amp;nbsp;If this is what you want to do, use the GNU Library General
&lt;br&gt;&amp;nbsp; Public License instead of this License.
&lt;br&gt;&amp;quot;&amp;quot;&amp;quot;
&lt;br&gt;&lt;br&gt;Note however that this is not part of the license terms, and it is the
&lt;br&gt;terms which are legally binding.
&lt;br&gt;&lt;br&gt;(The FSF website is even more explicit; see
&lt;br&gt;&lt;a href=&quot;http://www.fsf.org/licensing/licenses/gpl-faq.html#LinkingWithGPL&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.fsf.org/licensing/licenses/gpl-faq.html#LinkingWithGPL&lt;/a&gt;&amp;nbsp;)
&lt;br&gt;&lt;br&gt;&lt;br&gt;Some people think differently about this however, and (surprise
&lt;br&gt;surprise) Linus is one of them. &amp;nbsp;Here's a nice post from Linus on the
&lt;br&gt;LKML describing his point of view:
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://lkml.org/lkml/2006/12/17/79&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lkml.org/lkml/2006/12/17/79&lt;/a&gt;&lt;br&gt;&lt;br&gt;The discussion centres about the difference between &amp;quot;derived work&amp;quot; and
&lt;br&gt;&amp;quot;aggregate work&amp;quot;, and argues that the act of linking doesn't imply one
&lt;br&gt;or the other, but depends on the situation.
&lt;br&gt;&lt;br&gt;&lt;br&gt;Finally, I'll note that the FSF does give a well-defined way to allow
&lt;br&gt;proprietry code to link with GPL'd code via a specific interface:
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://www.fsf.org/licensing/licenses/gpl-faq.html#LinkingOverControlledInterface&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.fsf.org/licensing/licenses/gpl-faq.html#LinkingOverControlledInterface&lt;/a&gt;&lt;br&gt;&lt;br&gt;it's pretty verbose though...
&lt;br&gt;&lt;br&gt;&lt;br&gt;~Chris.
&lt;br&gt;&lt;br&gt;-------------------------------------------------------------------------
&lt;br&gt;This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
&lt;br&gt;Build the coolest Linux based applications with Moblin SDK &amp; win great prizes
&lt;br&gt;Grand prize is a trip for two to an Open Source event anywhere in the world
&lt;br&gt;&lt;a href=&quot;http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Aqsis-development mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19911500&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Aqsis-development@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/aqsis-development&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/aqsis-development&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/aqsis-development-f3702.html&quot; embed=&quot;fixTarget[3702]&quot; target=&quot;_top&quot; &gt;aqsis-development&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Contributor-License-Agreements-tp19874047p19911500.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19909367</id>
	<title>Re: Contributor License Agreements</title>
	<published>2008-10-09T16:33:09Z</published>
	<updated>2008-10-09T16:33:09Z</updated>
	<author>
		<name>ajb-2</name>
	</author>
	<content type="html">G'day all.
&lt;br&gt;&lt;br&gt;Quoting Chris Foster &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19909367&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;foster@...&lt;/a&gt;&amp;gt;:
&lt;br&gt;&lt;br&gt;&amp;gt; I agree. &amp;nbsp;It seems like the only reason to require a CLA would be to
&lt;br&gt;&amp;gt; allow relicensing in the future, and I don't think this is enough of an
&lt;br&gt;&amp;gt; issue to justify the pain.
&lt;br&gt;&lt;br&gt;That's not the only reason. &amp;nbsp;If someone infringes on the copyright of
&lt;br&gt;Aqsis (e.g. disobeys the open source licence), it helps in the legal
&lt;br&gt;fight if the copyright is held by one entity.
&lt;br&gt;&lt;br&gt;Incidentally, I'd also be happy to assign copyright for anything I
&lt;br&gt;contributed to the project.
&lt;br&gt;&lt;br&gt;Cheers,
&lt;br&gt;Andrew Bromage
&lt;br&gt;&lt;br&gt;-------------------------------------------------------------------------
&lt;br&gt;This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
&lt;br&gt;Build the coolest Linux based applications with Moblin SDK &amp; win great prizes
&lt;br&gt;Grand prize is a trip for two to an Open Source event anywhere in the world
&lt;br&gt;&lt;a href=&quot;http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Aqsis-development mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19909367&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Aqsis-development@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/aqsis-development&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/aqsis-development&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/aqsis-development-f3702.html&quot; embed=&quot;fixTarget[3702]&quot; target=&quot;_top&quot; &gt;aqsis-development&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Contributor-License-Agreements-tp19874047p19909367.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19908686</id>
	<title>Re: Contributor License Agreements</title>
	<published>2008-10-09T15:39:21Z</published>
	<updated>2008-10-09T15:39:21Z</updated>
	<author>
		<name>Matthias Baas-3</name>
	</author>
	<content type="html">Chris Foster wrote:
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; As for the licensing issue, we could add an exemption to allow
&lt;br&gt;&amp;gt;&amp;gt; linking to the public interfaces from non-GPL/OSS code, but I'm not
&lt;br&gt;&amp;gt;&amp;gt; sure that is really needed. I don't think something linking to Aqsis
&lt;br&gt;&amp;gt;&amp;gt; via the RI interface could be considered a derivative work of Aqsis, 
&lt;br&gt;&amp;gt;&amp;gt; any more than an application passing the Aqsis binary a lump of RIB
&lt;br&gt;&amp;gt;&amp;gt; could.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Again I agree. &amp;nbsp;The RI interface isn't even our work!
&lt;br&gt;&lt;br&gt;The RI interface specification is not your work, but this particular 
&lt;br&gt;implementation is. It was always my understanding that it would be 
&lt;br&gt;illegal to link GPL libs against other code that uses a license which is 
&lt;br&gt;incompatible with the GPL (but of course, I'm not an expert on this 
&lt;br&gt;subject).
&lt;br&gt;&lt;br&gt;A while ago I was also looking at this licensing stuff for cgkit (I even 
&lt;br&gt;bought a book on this subject). For cgkit2 I switched from BSD to a 
&lt;br&gt;GPL/LGPL/MPL tri-license. The MPL (which was used by Liquid) seemed to 
&lt;br&gt;be quite reasonable to me and it allowed using the code in a commercial 
&lt;br&gt;application as well (I didn't want to restrict usage to the Open Source 
&lt;br&gt;world). But it is incompatible to the GPL, so I went for this 
&lt;br&gt;tri-license which I took from the Mozilla project. My thinking was that 
&lt;br&gt;Open Source projects who wanted to use cgkit could pick GPL or LGPL 
&lt;br&gt;whereas commercial apps could pick the MPL.
&lt;br&gt;&lt;br&gt;&amp;gt; Given what I said in the previous mail, I believe that the LGPL doesn't
&lt;br&gt;&amp;gt; offer much on the legal side of things. &amp;nbsp;It does try to make the linking
&lt;br&gt;&amp;gt; issue clearer in a wishy-washy way, but we can do that just as easily by
&lt;br&gt;&amp;gt; simply stating so in our documentation or FAQ.
&lt;br&gt;&lt;br&gt;That would be useful in any case. I guess the essence can always be 
&lt;br&gt;expressed in a few simple sentences instead of several pages of 
&lt;br&gt;lawyer-speak. And the rest should be common sense... :)
&lt;br&gt;&lt;br&gt;- Matthias -
&lt;br&gt;&lt;br&gt;-------------------------------------------------------------------------
&lt;br&gt;This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
&lt;br&gt;Build the coolest Linux based applications with Moblin SDK &amp; win great prizes
&lt;br&gt;Grand prize is a trip for two to an Open Source event anywhere in the world
&lt;br&gt;&lt;a href=&quot;http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Aqsis-development mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19908686&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Aqsis-development@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/aqsis-development&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/aqsis-development&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/aqsis-development-f3702.html&quot; embed=&quot;fixTarget[3702]&quot; target=&quot;_top&quot; &gt;aqsis-development&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Contributor-License-Agreements-tp19874047p19908686.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19896135</id>
	<title>Re: Contributor License Agreements</title>
	<published>2008-10-09T03:20:19Z</published>
	<updated>2008-10-09T03:20:19Z</updated>
	<author>
		<name>Tristan Colgate</name>
	</author>
	<content type="html">I think stating the fact that we aren't going to sue anyone for
&lt;br&gt;linking to Aqsis is probably a good idea. If we can put some legal
&lt;br&gt;element around that with a statment in the license (the GPL allows
&lt;br&gt;for this kind of thing), then even better, but I don't think it is
&lt;br&gt;needed.
&lt;br&gt;&lt;br&gt;&amp;nbsp; SImply stating somewhere that...
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;quot;In our view, linking to the Aqsis libraries does not constitute
&lt;br&gt;&amp;nbsp; &amp;nbsp; a derivative work.&amp;quot;
&lt;br&gt;&lt;br&gt;&amp;nbsp; We could limit that to the public interfaces or RI specifically if
&lt;br&gt;&amp;nbsp; people prefer that, but I think we are only really doing it to ease
&lt;br&gt;&amp;nbsp; the concerns of corporates.
&lt;br&gt;&lt;br&gt;On Thu, Oct 09, 2008 at 08:02:52PM +1000, Chris Foster wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Thu, Oct 09, 2008 at 09:01:57AM +0100, Tristan Colgate wrote:
&lt;br&gt;&amp;gt; &amp;gt; My take on this....
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; Whilst I think I'm generally in favour of copyright assignment and
&lt;br&gt;&amp;gt; &amp;gt; CLAs (it just makes things clearer, and prevents the kind of issue
&lt;br&gt;&amp;gt; &amp;gt; around relicensing of legacy code that we face). But it is rather too
&lt;br&gt;&amp;gt; &amp;gt; late, and I suspect, rather too much pain, to implement it now.
&lt;br&gt;&amp;gt; &amp;gt; A CLA would also provide an additional barrier to entry for many
&lt;br&gt;&amp;gt; &amp;gt; potential contributors and I don't think that is wise at this time.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I agree. &amp;nbsp;It seems like the only reason to require a CLA would be to
&lt;br&gt;&amp;gt; allow relicensing in the future, and I don't think this is enough of an
&lt;br&gt;&amp;gt; issue to justify the pain.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; As for the licensing issue, we could add an exemption to allow
&lt;br&gt;&amp;gt; &amp;gt; linking to the public interfaces from non-GPL/OSS code, but I'm not
&lt;br&gt;&amp;gt; &amp;gt; sure that is really needed. I don't think something linking to Aqsis
&lt;br&gt;&amp;gt; &amp;gt; via the RI interface could be considered a derivative work of Aqsis, 
&lt;br&gt;&amp;gt; &amp;gt; any more than an application passing the Aqsis binary a lump of RIB
&lt;br&gt;&amp;gt; &amp;gt; could.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Again I agree. &amp;nbsp;The RI interface isn't even our work!
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; LGPL might make things a bit clearer, but I am not sure that
&lt;br&gt;&amp;gt; &amp;gt; the additional level of clarity is so great as to warrant the effort.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Given what I said in the previous mail, I believe that the LGPL doesn't
&lt;br&gt;&amp;gt; offer much on the legal side of things. &amp;nbsp;It does try to make the linking
&lt;br&gt;&amp;gt; issue clearer in a wishy-washy way, but we can do that just as easily by
&lt;br&gt;&amp;gt; simply stating so in our documentation or FAQ.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; ~Chris.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; -------------------------------------------------------------------------
&lt;br&gt;&amp;gt; This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
&lt;br&gt;&amp;gt; Build the coolest Linux based applications with Moblin SDK &amp; win great prizes
&lt;br&gt;&amp;gt; Grand prize is a trip for two to an Open Source event anywhere in the world
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/&lt;/a&gt;&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; Aqsis-development mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19896135&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Aqsis-development@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/aqsis-development&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/aqsis-development&lt;/a&gt;&lt;/div&gt;&lt;br&gt;-- 
&lt;br&gt;Tristan Colgate
&lt;br&gt;e-mail: &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19896135&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;tristan@...&lt;/a&gt;
&lt;br&gt;---------
&lt;br&gt;&amp;nbsp; &amp;quot;You can get all of your daily vitamins from
&lt;br&gt;42 pints of Guinness and a glass of milk&amp;quot;
&lt;br&gt;&lt;br&gt;-------------------------------------------------------------------------
&lt;br&gt;This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
&lt;br&gt;Build the coolest Linux based applications with Moblin SDK &amp; win great prizes
&lt;br&gt;Grand prize is a trip for two to an Open Source event anywhere in the world
&lt;br&gt;&lt;a href=&quot;http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Aqsis-development mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19896135&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Aqsis-development@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/aqsis-development&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/aqsis-development&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/aqsis-development-f3702.html&quot; embed=&quot;fixTarget[3702]&quot; target=&quot;_top&quot; &gt;aqsis-development&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Contributor-License-Agreements-tp19874047p19896135.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19895890</id>
	<title>Re: Contributor License Agreements</title>
	<published>2008-10-09T03:02:52Z</published>
	<updated>2008-10-09T03:02:52Z</updated>
	<author>
		<name>Chris Foster</name>
	</author>
	<content type="html">On Thu, Oct 09, 2008 at 09:01:57AM +0100, Tristan Colgate wrote:
&lt;br&gt;&amp;gt; My take on this....
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; Whilst I think I'm generally in favour of copyright assignment and
&lt;br&gt;&amp;gt; CLAs (it just makes things clearer, and prevents the kind of issue
&lt;br&gt;&amp;gt; around relicensing of legacy code that we face). But it is rather too
&lt;br&gt;&amp;gt; late, and I suspect, rather too much pain, to implement it now.
&lt;br&gt;&amp;gt; A CLA would also provide an additional barrier to entry for many
&lt;br&gt;&amp;gt; potential contributors and I don't think that is wise at this time.
&lt;br&gt;&lt;br&gt;I agree. &amp;nbsp;It seems like the only reason to require a CLA would be to
&lt;br&gt;allow relicensing in the future, and I don't think this is enough of an
&lt;br&gt;issue to justify the pain.
&lt;br&gt;&lt;br&gt;&amp;gt; &amp;nbsp; As for the licensing issue, we could add an exemption to allow
&lt;br&gt;&amp;gt; linking to the public interfaces from non-GPL/OSS code, but I'm not
&lt;br&gt;&amp;gt; sure that is really needed. I don't think something linking to Aqsis
&lt;br&gt;&amp;gt; via the RI interface could be considered a derivative work of Aqsis, 
&lt;br&gt;&amp;gt; any more than an application passing the Aqsis binary a lump of RIB
&lt;br&gt;&amp;gt; could.
&lt;br&gt;&lt;br&gt;Again I agree. &amp;nbsp;The RI interface isn't even our work!
&lt;br&gt;&lt;br&gt;&amp;gt; LGPL might make things a bit clearer, but I am not sure that
&lt;br&gt;&amp;gt; the additional level of clarity is so great as to warrant the effort.
&lt;br&gt;&lt;br&gt;Given what I said in the previous mail, I believe that the LGPL doesn't
&lt;br&gt;offer much on the legal side of things. &amp;nbsp;It does try to make the linking
&lt;br&gt;issue clearer in a wishy-washy way, but we can do that just as easily by
&lt;br&gt;simply stating so in our documentation or FAQ.
&lt;br&gt;&lt;br&gt;~Chris.
&lt;br&gt;&lt;br&gt;-------------------------------------------------------------------------
&lt;br&gt;This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
&lt;br&gt;Build the coolest Linux based applications with Moblin SDK &amp; win great prizes
&lt;br&gt;Grand prize is a trip for two to an Open Source event anywhere in the world
&lt;br&gt;&lt;a href=&quot;http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Aqsis-development mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19895890&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Aqsis-development@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/aqsis-development&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/aqsis-development&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/aqsis-development-f3702.html&quot; embed=&quot;fixTarget[3702]&quot; target=&quot;_top&quot; &gt;aqsis-development&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Contributor-License-Agreements-tp19874047p19895890.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19894626</id>
	<title>Re: Contributor License Agreements</title>
	<published>2008-10-09T01:01:57Z</published>
	<updated>2008-10-09T01:01:57Z</updated>
	<author>
		<name>Tristan Colgate</name>
	</author>
	<content type="html">My take on this....
&lt;br&gt;&lt;br&gt;&amp;nbsp; Whilst I think I'm generally in favour of copyright assignment and
&lt;br&gt;CLAs (it just makes things clearer, and prevents the kind of issue
&lt;br&gt;around relicensing of legacy code that we face). But it is rather too
&lt;br&gt;late, and I suspect, rather too much pain, to implement it now.
&lt;br&gt;A CLA would also provide an additional barrier to entry for many
&lt;br&gt;potential contributors and I don't think that is wise at this time.
&lt;br&gt;It's different if you are GCC and have hundreds of regular commiters
&lt;br&gt;and an active, visible mailing lists for submission of patches.
&lt;br&gt;&lt;br&gt;&amp;nbsp; As for the licensing issue, we could add an exemption to allow
&lt;br&gt;linking to the public interfaces from non-GPL/OSS code, but I'm not
&lt;br&gt;sure that is really needed. I don't think something linking to Aqsis
&lt;br&gt;via the RI interface could be considered a derivative work of Aqsis, 
&lt;br&gt;any more than an application passing the Aqsis binary a lump of RIB
&lt;br&gt;could. LGPL might make things a bit clearer, but I am not sure that
&lt;br&gt;the additional level of clarity is so great as to warrant the effort.
&lt;br&gt;&lt;br&gt;&amp;nbsp; It is all going to boil down to the practicality of contacting 
&lt;br&gt;everyone with a copyright claim to Aqsis code (surely that is only the
&lt;br&gt;people that have explicitly laid claim to it in source files?). We
&lt;br&gt;either do it once and try to persuade them to submit a patch to
&lt;br&gt;reassign the copyright, which they might be unhappy to do. Or we 
&lt;br&gt;mail the same group of people requesting a license change. We would
&lt;br&gt;also need clear direction of what the legal standpoint is if those
&lt;br&gt;people do not respond to mails in a timely fashion.
&lt;br&gt;&lt;br&gt;&amp;nbsp; Just for the record:
&lt;br&gt;&amp;nbsp; I'm happy to reassign copyright for whatever of my code might be
&lt;br&gt;left in Aqsis, and to sign a CLA for any future contributions.
&lt;br&gt;&lt;br&gt;On Thu, Oct 09, 2008 at 05:07:01PM +1000, Chris Foster wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Wed, Oct 08, 2008 at 08:52:07AM +0100, Paul Gregory wrote:
&lt;br&gt;&amp;gt; &amp;gt; All,
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; After last weeks meeting I've been looking into the issue of copyright
&lt;br&gt;&amp;gt; &amp;gt; assignment and contributor license agreements (CLA). The reason this issue
&lt;br&gt;&amp;gt; &amp;gt; was raised was that some files in a branch are explicitly marked as
&lt;br&gt;&amp;gt; &amp;gt; copyright the author, and concerns were raised about this practice,
&lt;br&gt;&amp;gt; &amp;gt; specifically should the need arise to relicense at any time.
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; I've spent some time looking into this matter, and found a variety of
&lt;br&gt;&amp;gt; &amp;gt; opinions, but this discussion on the OSGeo IRC channel during a meeting
&lt;br&gt;&amp;gt; &amp;gt; about just this issue seems to be the most informative. I certainly believe
&lt;br&gt;&amp;gt; &amp;gt; that Eric S. Raymond (&amp;quot;esr&amp;quot; in the logs) is far more knowledgeable in this
&lt;br&gt;&amp;gt; &amp;gt; than I. I would like everyone interested to read this discussion in
&lt;br&gt;&amp;gt; &amp;gt; preparation for this weeks meeting (20081012) during which we will discuss
&lt;br&gt;&amp;gt; &amp;gt; the issues and form a final decision on the policy.
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; &lt;a href=&quot;http://logs.qgis.org/osgeo/%23osgeo.2006-03-20.log&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://logs.qgis.org/osgeo/%23osgeo.2006-03-20.log&lt;/a&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I've read over these logs, but didn't find them incredibly definitive.
&lt;br&gt;&amp;gt; A bit of background - OSGeo is an foundation for geospatial software;
&lt;br&gt;&amp;gt; they're an umbrella for several semi-independent open source projects.
&lt;br&gt;&amp;gt; These logs contain a discussion about the benefits and drawbacks of
&lt;br&gt;&amp;gt; requiring contributor license agreements.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; The discussion about CLAs on the qgis logs centres around two issues:
&lt;br&gt;&amp;gt; (1) Protection of the project (or contributors?) from patent lawsuits
&lt;br&gt;&amp;gt; etc. by agressive third parties
&lt;br&gt;&amp;gt; (2) Giving projects a limited ability to relicense code at a later time.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; ESR argued fairly convincingly that CLAs are useless as legal protection
&lt;br&gt;&amp;gt; (and actually conterproductive)... this wasn't a concern of mine
&lt;br&gt;&amp;gt; however, I'm more concerned about point (2).
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; As Paul noted, I brought up the ability to relicense at the last
&lt;br&gt;&amp;gt; meeting; on this point the discussion linked above seemed much less
&lt;br&gt;&amp;gt; definitive IMHO. &amp;nbsp;The OSGeo guys eventually decided to create a CLA
&lt;br&gt;&amp;gt; which could be optionally adopted by the individual projects as they saw
&lt;br&gt;&amp;gt; fit. &amp;nbsp;Here's the relevant link:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://wiki.osgeo.org/wiki/Contributor_Agreement&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://wiki.osgeo.org/wiki/Contributor_Agreement&lt;/a&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; ... reading that legalese certianly leaves a bad taste in my mouth.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; My main concern regards linking and this is why I brought up the
&lt;br&gt;&amp;gt; licensing issues in the first place: &amp;nbsp;I don't think it's reasonable that
&lt;br&gt;&amp;gt; commercial projects which simply *link* to Aqsis libraries (at least the
&lt;br&gt;&amp;gt; ones which I write!) should have to also be released under
&lt;br&gt;&amp;gt; GPL-compatible licenses. &amp;nbsp;To require such a thing seems contradictory
&lt;br&gt;&amp;gt; given the nature of our primary interface - the Renderman Interface.
&lt;br&gt;&amp;gt; The renderman interface is a commercial interface itself, but is made
&lt;br&gt;&amp;gt; available *freely* to anyone wishing to implement it.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Lawrence Rosen has written an excellent book on open source licensing,
&lt;br&gt;&amp;gt; available here:
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://rosenlaw.com/oslbook.htm&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://rosenlaw.com/oslbook.htm&lt;/a&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; The chapter on the GPL has an interesting discussion about linking and
&lt;br&gt;&amp;gt; the GPL. &amp;nbsp;It seems that the requirement that all code linked with Aqsis
&lt;br&gt;&amp;gt; be released under the GPL depends on the definition of &amp;quot;derivative
&lt;br&gt;&amp;gt; work&amp;quot;, which is legally shaky. &amp;nbsp;Ultimately it suggests that license
&lt;br&gt;&amp;gt; requirements for programs which link to GPL'd code are up to the
&lt;br&gt;&amp;gt; copyright holders (us).
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; The book also has an interesting analysis of the LGPL which is what I
&lt;br&gt;&amp;gt; had in mind when I mentioned relicensing to begin with. &amp;nbsp;As I understand
&lt;br&gt;&amp;gt; it, the intent of the LGPL is to specifically allow programs to link
&lt;br&gt;&amp;gt; with LGPL'd libraries, without imposing any license requirements on
&lt;br&gt;&amp;gt; those programs. &amp;nbsp;However, Rosen calls the relevant sections of the LGPL
&lt;br&gt;&amp;gt; &amp;quot;an impenetrable maze of technological babble&amp;quot;, and I can see what he's
&lt;br&gt;&amp;gt; getting at; they're very vague! &amp;nbsp;At the end of the section &amp;quot;The LGPL
&lt;br&gt;&amp;gt; alternative&amp;quot; in chapter 6, Rosen concludes that
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; The LGPL, therefore, is an anomaly - a hybrid license intended to
&lt;br&gt;&amp;gt; &amp;nbsp; address a complex issue about program linking and derivative works. &amp;nbsp;It
&lt;br&gt;&amp;gt; &amp;nbsp; doesn't solve that problem, but merely directs us back to the main
&lt;br&gt;&amp;gt; &amp;nbsp; event, the GPL license itself.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Given the analysis in the book by Rosen, I'm inclined to be less worried
&lt;br&gt;&amp;gt; about the linking issue, and hence the multiple licensor issue.
&lt;br&gt;&amp;gt; Nevertheless it seems messy to have code listed as copyright of various
&lt;br&gt;&amp;gt; licensors, especially since files may be modified by many developers
&lt;br&gt;&amp;gt; other than the original one over the lifetime of the project.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Any contributor automatically retains copyright over their own work by
&lt;br&gt;&amp;gt; default. &amp;nbsp;For attribution, I think that simply putting them on the
&lt;br&gt;&amp;gt; authors list for a file should suffice.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I'd like to note that according to the LGPL, it's perfectly
&lt;br&gt;&amp;gt; permissable to relicense under the GPL at any time. &amp;nbsp;This means that we
&lt;br&gt;&amp;gt; could choose to make future versions of libri2rib available under the
&lt;br&gt;&amp;gt; GPL. &amp;nbsp;IMHO it would be simpler and cleaner to have all of Aqsis
&lt;br&gt;&amp;gt; available under the same license.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Issues for discussion
&lt;br&gt;&amp;gt; =====================
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; * An official stance on linking proprietry programs with our codebase.
&lt;br&gt;&amp;gt; * Should we allow different licensors in different files of the codebase?
&lt;br&gt;&amp;gt; * Status of libri2rib regarding LGPL vs GPL licensing.
&lt;br&gt;&amp;gt; * Pros and cons of CLAs.
&lt;br&gt;&amp;gt; * Relicensing.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Ugh... this legal stuff is rather mind-numbing.
&lt;br&gt;&amp;gt; ~Chris.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; -------------------------------------------------------------------------
&lt;br&gt;&amp;gt; This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
&lt;br&gt;&amp;gt; Build the coolest Linux based applications with Moblin SDK &amp; win great prizes
&lt;br&gt;&amp;gt; Grand prize is a trip for two to an Open Source event anywhere in the world
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/&lt;/a&gt;&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; Aqsis-development mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19894626&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Aqsis-development@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/Aqsis-development&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/Aqsis-development&lt;/a&gt;&lt;/div&gt;&lt;br&gt;-- 
&lt;br&gt;Tristan Colgate
&lt;br&gt;e-mail: &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19894626&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;tristan@...&lt;/a&gt;
&lt;br&gt;---------
&lt;br&gt;&amp;nbsp; &amp;quot;You can get all of your daily vitamins from
&lt;br&gt;42 pints of Guinness and a glass of milk&amp;quot;
&lt;br&gt;&lt;br&gt;-------------------------------------------------------------------------
&lt;br&gt;This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
&lt;br&gt;Build the coolest Linux based applications with Moblin SDK &amp; win great prizes
&lt;br&gt;Grand prize is a trip for two to an Open Source event anywhere in the world
&lt;br&gt;&lt;a href=&quot;http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Aqsis-development mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19894626&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Aqsis-development@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/aqsis-development&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/aqsis-development&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/aqsis-development-f3702.html&quot; embed=&quot;fixTarget[3702]&quot; target=&quot;_top&quot; &gt;aqsis-development&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Contributor-License-Agreements-tp19874047p19894626.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19893590</id>
	<title>Re: Contributor License Agreements</title>
	<published>2008-10-09T00:07:01Z</published>
	<updated>2008-10-09T00:07:01Z</updated>
	<author>
		<name>Chris Foster</name>
	</author>
	<content type="html">On Wed, Oct 08, 2008 at 08:52:07AM +0100, Paul Gregory wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; All,
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; After last weeks meeting I've been looking into the issue of copyright
&lt;br&gt;&amp;gt; assignment and contributor license agreements (CLA). The reason this issue
&lt;br&gt;&amp;gt; was raised was that some files in a branch are explicitly marked as
&lt;br&gt;&amp;gt; copyright the author, and concerns were raised about this practice,
&lt;br&gt;&amp;gt; specifically should the need arise to relicense at any time.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I've spent some time looking into this matter, and found a variety of
&lt;br&gt;&amp;gt; opinions, but this discussion on the OSGeo IRC channel during a meeting
&lt;br&gt;&amp;gt; about just this issue seems to be the most informative. I certainly believe
&lt;br&gt;&amp;gt; that Eric S. Raymond (&amp;quot;esr&amp;quot; in the logs) is far more knowledgeable in this
&lt;br&gt;&amp;gt; than I. I would like everyone interested to read this discussion in
&lt;br&gt;&amp;gt; preparation for this weeks meeting (20081012) during which we will discuss
&lt;br&gt;&amp;gt; the issues and form a final decision on the policy.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://logs.qgis.org/osgeo/%23osgeo.2006-03-20.log&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://logs.qgis.org/osgeo/%23osgeo.2006-03-20.log&lt;/a&gt;&lt;/div&gt;&lt