Yeah, those other things were part of the &quot;bigger picture&quot; that I hope hackage will get some day: two axes of user rating, plus optional support for visualizing things like test coverage and regression tests that you include in your cabal file (cabal test was being worked on during one of this year&#39;s GSOC for example). I was just trying to show what this would get us one step closer to :P<div>
<br><div class="gmail_quote">On Thu, Sep 16, 2010 at 11:47 AM, Ivan Lazar Miljenovic <span dir="ltr">&lt;<a href="mailto:ivan.miljenovic@gmail.com">ivan.miljenovic@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 16 September 2010 17:00, Daniel Peebles &lt;<a href="mailto:pumpkingod@gmail.com">pumpkingod@gmail.com</a>&gt; wrote:<br>
&gt; But maybe one day we&#39;ll have way more than just &quot;Stability: experimental;<br>
&gt; Version: 0.0.1&quot; on hackage, but instead:<br>
&gt; Stability: experimental<br>
&gt; Version: 0.0.1<br>
&gt; Test coverage: 98%<br>
&gt; User stability rating: 86%<br>
&gt; User API quality rating: 56%<br>
&gt; Local sources of impurity: none<br>
&gt; Transitive sources of impurity: bytestring, base<br>
&gt; Used by: 37 packages [click to see them]<br>
&gt; But that&#39;s just a dream, and the impurity measures seem like a decent goal<br>
&gt; in the mean time :)<br>
<br>
</div>Problem is: whilst we might be able to derive the impurity stuff, and<br>
the usage is done by examing reverse dependencies, I&#39;m not sure how<br>
you would categorise the stability and quality. ¬†Furthermore, the test<br>
coverage bit presumably requires developers enable hpc when building<br>
tests, and if those tests are optional then wouldn&#39;t HPC&#39;s figures be<br>
slightly off since the test suite is now included in the amount of<br>
source you have compared to what most people see?<br>
<div><div></div><div class="h5"><br>
&gt;<br>
&gt; Dan<br>
&gt; On Thu, Sep 16, 2010 at 8:21 AM, Ivan Lazar Miljenovic<br>
&gt; &lt;<a href="mailto:ivan.miljenovic@gmail.com">ivan.miljenovic@gmail.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; On 16 September 2010 16:04, Mitar &lt;<a href="mailto:mmitar@gmail.com">mmitar@gmail.com</a>&gt; wrote:<br>
&gt;&gt; &gt; Hi!<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; I just got an idea for hackage feature. All functions/modules listed<br>
&gt;&gt; &gt; there could have some mark if they or any function/module they use<br>
&gt;&gt; &gt; uses an unsafe* function. Of course this will make probably almost<br>
&gt;&gt; &gt; everything marked as unsafe, but this is the idea - to raise awareness<br>
&gt;&gt; &gt; about that so that you can prefer some function/implementation over<br>
&gt;&gt; &gt; another.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Of course marking/tagging everything as unsafe is not really useful.<br>
&gt;&gt; &gt; Because of this I propose that then community votes/vouches on<br>
&gt;&gt; &gt; correctness/stability of implementations and this would then influence<br>
&gt;&gt; &gt; the how unsafe given function really is (or is according to community,<br>
&gt;&gt; &gt; if we are more precise). Of course it would be even better that every<br>
&gt;&gt; &gt; function using unsafe would have also a formal proof but as we cannot<br>
&gt;&gt; &gt; believe that we will prove everything in a feasible feature we could<br>
&gt;&gt; &gt; maybe opt for such &quot;crowd intelligence&quot; approach. We cannot have a<br>
&gt;&gt; &gt; Turing machine, but maybe we can have crowd. ;-)<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; (Of course low number of found bugs and good unit test code coverage<br>
&gt;&gt; &gt; can then positively influence crowd, so authors would be motivated to<br>
&gt;&gt; &gt; assure that.)<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Comments? Opinions?<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Because I really hate that I try to keep my code pure and separate IO<br>
&gt;&gt; &gt; from everything else and then somewhere deep in there some unsafe*<br>
&gt;&gt; &gt; lurks. (Ah, yes, a side effect of this tagging/marks would be also<br>
&gt;&gt; &gt; that you would be able to see where all those unsafe* calls are for a<br>
&gt;&gt; &gt; given function, so you would be able to fast jump (with link) to a<br>
&gt;&gt; &gt; given line in code and evaluate circumstances in which that unsafe*<br>
&gt;&gt; &gt; call is made. And then vote/vouch once you discover that it is<br>
&gt;&gt; &gt; probably pretty safe.)<br>
&gt;&gt;<br>
&gt;&gt; The problem with this is: unsafe* functions would be better called<br>
&gt;&gt;<br>
&gt;&gt; &quot;yesIGuaranteeThatUsingThisFunctionDoesResultInAReferentiallyTransparentEntityAndItsOKForMeToUseIt*&quot;.<br>
&gt;&gt; ¬†They are &quot;unsafe&quot; in that you shouldn&#39;t use them blindly.<br>
&gt;&gt;<br>
&gt;&gt; Seeing as how lazy IO relies on various unsafe* functions, as do<br>
&gt;&gt; bytestrings, this means that any program that uses them is<br>
&gt;&gt; subsequently &quot;tainted&quot;.<br>
&gt;&gt;<br>
&gt;&gt; A much better idea would be to have some kind of compilation warning<br>
&gt;&gt; unless you can prove that you&#39;re using the unsafe* function in a safe<br>
&gt;&gt; fashion, but such a proof is unlikely to be easily proven in a<br>
&gt;&gt; rigorous fashion nor mechanically checkable (and would delay<br>
&gt;&gt; compilation times).<br>
&gt;&gt;<br>
&gt;&gt; --<br>
&gt;&gt; Ivan Lazar Miljenovic<br>
&gt;&gt; <a href="mailto:Ivan.Miljenovic@gmail.com">Ivan.Miljenovic@gmail.com</a><br>
&gt;&gt; <a href="http://IvanMiljenovic.wordpress.com" target="_blank">IvanMiljenovic.wordpress.com</a><br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; Haskell-Cafe mailing list<br>
&gt;&gt; <a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
&gt;&gt; <a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
&gt;<br>
&gt;<br>
<br>
<br>
<br>
</div></div>--<br>
<div><div></div><div class="h5">Ivan Lazar Miljenovic<br>
<a href="mailto:Ivan.Miljenovic@gmail.com">Ivan.Miljenovic@gmail.com</a><br>
<a href="http://IvanMiljenovic.wordpress.com" target="_blank">IvanMiljenovic.wordpress.com</a><br>
</div></div></blockquote></div><br></div>