[Haskell-cafe] real haskell difficulties (at least for me)
wren ng thornton
wren at freegeek.org
Sun Jan 18 01:06:52 EST 2009
Duncan Coutts wrote:
> It may well be tempting to plague maintainers until they fix their
> packages however in practise it will not work. We want a low barrier to
> entry for packages on hackage and we do not want to annoy package
> maintainers to the point where they decide to stop using hackage at all.
+1.
As a package maintainer, I love to get feedback (especially when things
are broken) but I don't like being harassed. I get lots of email from
all over and in order to make sure the most important things are seen
soonest, routine email from bots often finds its way into filtering and
rerouting... which means, whether intended or not, it often gets ignored
or overlooked.
After a decade or so in this game, one of the big tricks with project
management (and kid yourself not, this *is* PM what Duncan et al. are so
kind to take on for us) is how to balance interaction between the
developers, the managers, and the clientele. The biggest trick is in
that key word:
interaction.
When people feel put upon, ignored, or talked at (instead of talked to)
then they're not interacting, not communicating, not being a part of the
community. And when people aren't communicating they feel unappreciated.
In the F/OSS world that means they stop contributing. Just like with
friendships, jobs, and life in general, it takes a lot more work to find
new developers than it does to keep the ones you have. Since life
happens and you can't stop entropy, that means in turn that barriers to
entry must be as low as is reasonable[1].
One of the things I've always liked about Hackage is how low the
barriers are. I've also been a CPAN developer for many years, but I
haven't released as much Perl code as Haskell code because it takes more
work to publish a CPAN module than it does to publish a Hackage package.
(Even after having accounts in both systems, of which again Hackage is
easier.) Rather than just being a stick in the mud, here are some
suggestions for what I, as a developer, would like to see in
Hackage/Cabal/FooBlatz's future.
First, I would like (via opt-in) to get periodic aggregated notice about
failed builds. The simplest version of this would be sending out emails
when the HackageDB build fails, rather than needing to remember to check
back a while after uploading a new version. It would be nice to extend
this to collect cabal-install failures, though that can get tricky about
how not to harass the clientele.
Minimally these aggregated reports should indicate the package and
version, the problem, the Haskell compiler and its version, as well as
the OS. Since some packages have many dependencies or make heavy use of
the FFI, CPP, or have architecture dependent differences, it would be
nice to be able to set per-package preferences to get additional
information like OS version, dependency versions, CPU info, build logs,
etc. Since it can be hard to set up sandboxes for every configuration,
it'd also be nice if clients could opt in to send contact email as well,
if they're willing to back-and-forth with the developer to fix things in
the event of bugs.
Second, and this would take more work, I would like it if the Haddock
documentation for packages could be given a wiki-like and/or reddit-like
interface so that people could make comments about what is unclear or
needs better documentation as well as offering
spelling/grammar/punctuation suggestions[2]. Viewers should be able to
set preferences for whether they want to see the real/current
documentation, or whether they want to see the commented/modified
version (hiding things below a certain depth or rank for reddit-like).
While building errors are an obvious point of failure, we know the
design space and just need to find an elegant minimalistic solution
there. I think the documentation problem is just as important a point of
failure, if not more so because it is discussed less often. The solution
here is harder since the design space hasn't been so thoroughly charted
by previous languages. But given the very community-oriented nature of
Haskell programming, it's a shame that we don't yet have a
community-oriented solution to the documentation problem. The big trick
will be how to both segregate and integrate community feedback and the
official documentation (which should always be under the maintainer's
control, hence the wiki/reddit should also be opt-in), in addition to
issues about how package versioning interacts with the comments. At the
same time, like QuickCheck, this strikes me as a ripe domain for "killer
app" breakthroughs. Perhaps one of the folks working on wiki and web
development tools in Haskell would like to make a name for themselves?
[1] Which does not mean as low as is possible. When the barriers are too
low the community can expand too quickly for the leaders to keep things
functioning smoothly and cohesively. Just as with biology and finance,
these population booms are just as quickly followed by busts and
starvation, the damage of which has a momentum all its own. The greater
community's embitterment toward the busted one raises the barriers to
entry quite high, and often this retaliation does not wane for a very
long time.
[2] For wiki edits to the documentation (as opposed to reddit comments),
maintainers should be able to get a darcs (or diff) patch against the
release version of the source code, as desired. This alleviates the
forking problem which could inhibit importing changes from the wiki back
into the source.
> Of course we also want to measure package quality. The approach I've
> always advocated is to define subsets of hackage that do meet higher
> quality levels. Be defining such subsets and holding them up as being a
> "good thing" in the community then it puts social pressure on
> maintainers to have their packages in those higher quality subsets. Then
> to help them do that they may choose to opt-in to various services like
> receiving a build summary at regular intervals.
>
> So it's the same goal but without the stick.
I like this approach as well. As I said, we Haskellers are very
community driven and the social pressure towards perfectionism is
already strong. Stick-based approaches are very anti-social. (And if you
think about it, they're very imperative too. Whereas modeling
high-quality work is much more declarative. Hmm...)
--
Live well,
~wren
More information about the Haskell-Cafe
mailing list