Neil,<br><br>I haven&#39;t had a chance to read the thread thoroughly - hopefully I can this evening at home. But, I&#39;d like to update the science collection graphics to use it. Fortunately, all of the graphics routines are in separate modules, so it shouldn&#39;t be too bad. I do use the plot extensions to add new capabilities to the current plot package - for example, for 1d and 2d histograms. Is the plot extension capability still there? [It wouldn&#39;t be that hard to write the histograms from scratch if it isn&#39;t.]<br>
<br>Also, in my analysis code at work we do use the contour plots for some things. Pretty much everything else is in my own specialized plot packages.<br><br>Doug<br><br><div class="gmail_quote">On Thu, Sep 29, 2011 at 4:25 PM, Neil Toronto <span dir="ltr">&lt;<a href="mailto:neil.toronto@gmail.com">neil.toronto@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="im">On 09/29/2011 12:28 PM, Eli Barzilay wrote:<br>
</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">
Just now, Robby Findler wrote:<br>
</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">
On Thu, Sep 29, 2011 at 1:25 PM, Eli Barzilay&lt;<a href="mailto:eli@barzilay.org" target="_blank">eli@barzilay.org</a>&gt; †wrote:<br>
</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
The issue is not pixel placements, it&#39;s keeping the C code that was<br>
ripped out of gnuplot.<br>
</blockquote><div class="im">
<br>
So I guess I don&#39;t understand. Why would we want to keep that? (I<br>
can see why we would want to get rid of it.)<br>
</div></blockquote><div class="im">
<br>
Because you wanted to have a completely compatible interface?<br>
(Excluding pixels.)<br>
<br>
My point was that if you don&#39;t keep it (which I very strongly prefer),<br>
then you don&#39;t have a compatible interface to plot anyway, and<br>
changing the name from `plot&#39; to `plot/compat&#39; makes more sense.<br>
</div></blockquote>
<br>
The pixels that make up the plots generated by the compatibility library are quite different. But I can&#39;t imagine that nicer plots will be anything but a pleasant surprise.<br>
<br>
So I don&#39;t want to read about pixels anymore. Seriously. Logical reductio ad absurdum about pixels in pictures - which are valuable because of their *semantic* content - borders on fallacious. It won&#39;t get us anywhere.<br>

<br>
What will is discussing the most important user interactions.<br>
<br>
--<br>
<br>
The first is what happens when users run old code that uses the &#39;plot&#39; library.<br>
<br>
†- (Robby/Sam) The compatibility library is &#39;collects/plot&#39; and the new library is &#39;collects/rackplot&#39; (or &#39;collects/omg-raph&#39; or whatever): their code just runs.<br>
<br>
†- (Eli) The compatibility library is &#39;collects/plot/compat&#39; and the new library is &#39;collects/plot&#39;: some code will run with more changes than just pixels (&quot;semantic errors&quot; in the plots), some will give runtime errors, and most will give compile-time errors.<br>

<br>
Examples:<br>
<br>
(plot (points (list (vector a b) ...)))<br>
†=&gt; Runs, but puts tighter bounds on the plot (semantic error)<br>
<br>
(plot (error-bars (list (vector a b c) ...)))<br>
†=&gt; Runs, but puts tighter bounds on the plot (semantic error)<br>
<br>
(plot (points (list (vector a b) ...) #:sym &#39;fullsquare))<br>
†=&gt; points: does not expect an argument with keyword #:sym<br>
<br>
(plot (vector-field (Ž (v) v)))<br>
†=&gt; vector-field: contract violation, expected a procedure that accepts 2 mandatory arguments without any keywords, given: #&lt;procedure&gt;<br>
 †contract from: (function vector-field), blaming:<br>
 † †&lt;collects&gt;/plot/plot2d/point.<u></u>rkt<br>
<br>
(plot (line sqr))<br>
†=&gt; expand: unbound identifier in module in: line<br>
<br>
Also, &#39;contour&#39;, &#39;shade&#39; and &#39;surface&#39; do the same as &#39;line&#39;.<br>
<br>
<br>
Observations: There&#39;s nothing that tells the user that changing (require plot) to (require plot/compat) will fix the errors. It just looks like random fail. But if it&#39;s random fail only once for a very small percentage of users, it might be okay-ish.<br>

<br>
--<br>
<br>
The second interaction is what happens when new users look for &quot;plot&quot; in the manual.<br>
<br>
†- (Robby/Sam): They get the old &#39;plot&#39;. Clicking on it reveals a big red deprecation warning, and a link to the new stuff. Of course, that doesn&#39;t guarantee that they will *read* the warning.<br>
<br>
†- (Eli): They get the new &#39;plot&#39;, with a note about the compatibility library that they can ignore.<br>
<br>
<br>
Observations: With Robby/Sam&#39;s idea, the apparent bait-and-switch, and needing two clicks to get to the right library, is also fail. And it lasts for years until we finally decide to rip out the compatibility library, and thus break more code.<br>
<font color="#888888">
<br>
--<br>
<br>
To me, the ideal would be to name the compatibility library &#39;collects/plot&#39;, and then somehow keep it from showing up in searches.<br>
<br>
Oh, and also push &#39;mrlib/plot&#39; downward in the search results. What is that, anyway? It seems that nothing in the collects uses it.<br>
<br>
Neil T</font><div><div></div><div class="h5"><br>
______________________________<u></u>___________________<br>
†For list-related administrative tasks:<br>
†<a href="http://lists.racket-lang.org/listinfo/dev" target="_blank">http://lists.racket-lang.org/<u></u>listinfo/dev</a></div></div></blockquote></div><br>