On Fri, Jul 16, 2010 at 11:49 AM, Jason Dagit <da...@codersbase.com> wrote: > > > On Thu, Jul 15, 2010 at 5:54 PM, Mark Wotton <mwot...@gmail.com> wrote: >> >> Ideally, I'd like to be able to say something like "cabal install >> my-hacked-package --as original-package" - are there fundamental >> reasons that wouldn't be possible, or a bad idea? > > I haven't (yet) run into a completely AWOL maintainer. Usually I can > contact the maintainer and offer to upload a new version for them. I'm > currently in this role with Takusen. I'm not the Takusen maintainer, but I > expect to be uploading the next version soon as it looks like I've been > given permission. > I've had this happen with a couple other packages and it was always a > similar situation. Negotiate with the listed maintainer to do an upload on > their behalf. I've found that offering to do the work for them usually > helps tremendously. And it makes a lot of practical sense.
This is great when it works, but it does add friction on top of the process of forking and experimentation. One of the things I've noticed in myself is that I'm much more likely to try something out if I can fork it, make my changes and start using it right away (including distributing easily to other users). If I have to wait to go through the gatekeeper, motivation has to be very high. One of the interesting consequences of cheap forking is that projects like the emacs starter kit have a very different model: it's designed to be forked, and to have the user's personal changes committed, so you can stay up to date without having to extract everything into a small set of config files. This is more or less impossible under the cabal model. > Now, what you're proposing is interesting. I believe github/patch-tag have > this model? Everyone has their own branch of everything they contribute to, > listed right on the website? This is inline with another idea I've heard > where we'd have a 'stable' hackage and 'unstable/dev' versions. But, how > does this work for resolving and communicating dependencies? In terms of Cabal? I don't know enough about it to be authoritative. Conceptually, it seems clear enough: if you specify a variant package explicitly by name, that one gets used - if you don't specify a variant, use the canonical package. So long as forking is cheap and not socially awkward, this is fine: you fork the chain of packages you need to show that it all works, and submit a pull request to the maintainer of the real package. If he doesn't like it, fine - you can still use your changed version. It might be nice to be able to mark a variant as no longer relevant once the changes have been pulled into the parent repo, but it's a frill. > On a philosophical note about cabal, cabal wants to be able to reason > statically about the API (types, functions, modules) a package provides. So > flags should primarily be used to configure platform specific bits necessary > for compilation or implementation details, but not to change the API of a > compiled library. From this point of view it seems to me that what your > describing needs to be baked into either the package name or the version -- > that is whatever cabal is going to look at during constraint satisfaction. Yes, I tend to agree. > I like your idea and I'd like to hear more about how we could accomplish it > within the philosophical framework that cabal already has. Me too.:) mark -- A UNIX signature isn't a return address, it's the ASCII equivalent of a black velvet clown painting. It's a rectangle of carets surrounding a quote from a literary giant of weeniedom like Heinlein or Dr. Who. -- Chris Maeda _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe