-
Notifications
You must be signed in to change notification settings - Fork 711
Draft announcement for cabal new-build #3316
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Nice write-up. The only issue blocking the release is #3199, I think I'll be able to fix it this week. |
Probably it's easier to tell people to list the dir rather than the .cabal file. Either are possible of course.
|
I don't particularly want to encourage the So you can just do The workflow I'm aiming for here is that that's the first thing people will go for, and it'll tell them if 1. the targets were ambiguous and if so what the more qualified syntax for the choices would be (this works already) and 2. if the testsuites were not enabled optimistically that it tells users they can try The only time you really need to specify Perhaps it's confusing to have |
@dcoutts btw, a wildcard syntax |
I don't like the tl;dr. Is this an announcement of a tech-preview or of an almost-release of a feature truly capable of replacing sandboxes/stack? But then i don't know how much you plan to implement in the time until the announcement, or maybe my first impression of I am grateful for the work you put into this, and in time i am sure it will become a very useful feature. |
[Sorry, my very first point is bikeshedding, and not your fault.]
I find this difficult to parse.
Do you really want to post this prior to the release? I think it's much better to have "lots" of people look at it once 1.24 is released, and not at some random point before. In addition, I think you may want to highlight a few of the cool implications this has, such as finally being able to enable profiling "later" and just have it do the right thing. Apart from these points, great post. |
@dcoutts Oh! Then I have some sort of mysterious bug where I can't remove
I don't quite have a reproducible test case yet. @lspitzner Thanks for the comments. It's very useful to hear non power user impressions of the feature.
That would be adding it to the list of
I think the current code in 1.24 is what is going into the release, unless we decide to blitz a raft of UI improvements in the next few days (maybe the right call!) And is it a tech preview or a feature release? That's a good question. Here's what I know:
So, is tech preview the right moniker for this? I guess! But from my perspective, for every new Cabal based project I am going to do development on, I am going to use new-build for it. Maybe I'm an outlier, because I know enough about the codebase to know when things are bugs and usefully contribute bugfixes. |
local packages should never end up in the user-global store ( there's also no explicit |
@dcoutts after some more playing around, the main problem seems to have been documentation; i had to guess about what is supposed to work and how i would observe that it worked correctly. @hvr thanks, that the Properly setting up a All in all my first impression was "just" bad (and a bit unlucky; i think there is a bug to the effect that gtk3 cannot be installed as a dependency, will report separately). Now that i have an idea of how things are supposed to work, i am more optimistic about releasability, given proper documentation in general. |
D'oh! The "Encountered missing dependencies" bug is #3199. The workaround is to pass |
@hvr I'm a bit reluctant to use * since without a |
@dcoutts then what about leaving off the |
@ezyang btw, you didn't mention incomplete example of what's possible within
|
OK, I incorporated all of the comments, and also put it in a PR so that you can view the rendered rst. See here: https://github.com/ezyang/cabal/blob/pr/nix-announce/nix-announce.rst |
PS: the
|
As I'm not sure I remember the reasons you put forward for (also, what about the Btw, here's some names (modulo suffix/prefix swap)
|
I think that naming anything "new" is always strange. I've fallen into this trap myself in the past (I named one of the modes For the same reasons, most of your list is also bad, with the exception of Then again, if you believe that picking an ugly enough name now is going to absolutely ensure we properly fix the interface later, I'm happy to wait and see if this will indeed happen :) |
(And yes, I'm not overly happy with |
@ezyang I've adapted the PPA-based |
@ezyang announcement looks good! hope is was not too negative before. i have made an overview about old-vs-new style, and the new-style semantics (all in the currently observed state). Not meant for the announcement, but perhaps useful as an overview regarding feature-completeness. |
It is hard to look this far ahead, but in my experience working on long-lived software project I have learned "never ever name anything 'new X'" because one day, in the future you don't imagine, there will be a newer X. and then what do you name that? a name descriptive of what it is is much more resilient under future unanticipated changes. |
The rationale for "new-blah" was the thought that we would not have these in parallel in any official encouraged use case (beyond tech preview testing etc), that once it's ready it would simply replace the normal commands (possibly with some flag for the old impl for a while until we can kill it off). Calling it something sensible makes it look like we plan to have them in parallel for a while, or worse that it's yet another extension to an already complex CLI, like the sandbox stuff. I'm not the only decision maker here though, so perhaps we should discuss the transition plan. |
I updated the draft with all comments, in particular incorporating in @lspitzner's notes (and expanding and elaborating them a bit.) |
@ezyang I'd change
into something like
to avoid any confusion about where that |
@dcoutts OK, I think I understand the current algorithm for determining if a test should be enabled, and I think that it is a better experience for users if they pass Here's what's going on:
OK, so now here is a user interaction which results in bad behavior:
All-in-all, if you know you are going to want to run the tests, it seems better to just pass UPDATE: However, it is true that on master, the experience is a lot better, because the reconfigure will probably not force a rebuild. |
Question: is the cabal.project file or 1.24 style cabal install able to express executable dependencies? |
Are you asking about something like #2965 (comment) ? |
@hvr yesss |
No, I haven't gotten around to implementing that feature. |
Fyi, @rthomas just uploaded Cabal-1.24 & cabal-install-1.24 to Hackage... so I guess we should look into finishing this up |
I plan on posting this to my blog. Comments welcome. (There are some minor formatting wibbles because I didn't bother converting my ReST to Markdown.)
CC @hvr @dcoutts @bgamari @23Skidoo
Rendered: https://github.com/ezyang/cabal/blob/pr/nix-announce/nix-announce.rst
The text was updated successfully, but these errors were encountered: