* Guile release planning @ 2008-11-11 1:23 Neil Jerram 2008-11-11 1:59 ` Mike Gran ` (4 more replies) 0 siblings, 5 replies; 24+ messages in thread From: Neil Jerram @ 2008-11-11 1:23 UTC (permalink / raw) To: guile-devel, guile-user Andy recently wondered - in connection with his VM implementation and docs - about when a 1.9.x or 1.10.x release might happen, and that reminded me about the following thoughts that I've been trying to crystallize for a while. How should we organize future Guile releases? I'm interested to hear both developer and user views on this, hence the cross-posting. In my view, the most important thing for Guile's near-to-medium-term future is focus. By that I mean having developers working on, and users using, as far as possible, a similar level of code. In the past, we did big jumps - from 1.4.x to 1.6.x, and from 1.6.x to 1.8.x - which I think left users unable easily to upgrade, or perhaps just unsure of whether to upgrade. From the developer point of view, they increased the support burden (because of some users staying with the old series). Also the big jump model can be frustrating for developers, because it tends to mean that there is a long time between when a shiny new feature is ready, and when it gets released and so into the hands of most users. Those past jumps were probably justified, but I'm not sure they are in future. I wonder if a better model would be to have a single ongoing series of releases, and to feed new features one by one into that. In principle the jump from one release to the next would always be small, and so should allow everyone to upgrade easily. I think this will allow the community to stay closer together (in code terms), and will allow developers to get interesting new features out into the wild more quickly. I also think it will help us manage API incompatibilities better. I think our default position from now on should be to maintain source-level (API) compatibility, but it is inevitable that there will be exceptions to this. When we did a big jump in the past, we did document all the API changes, but perhaps not as well as could have been done. If, in future, each individual release contains less API change, I think we can do a better job of fully describing that, and how to cope with it. So, what do you think? There have been discussions of release strategy in the past, which I've seen as 50/50 between the split stable and development model (which we have now) and the steady new feature model (described above), but I don't recall them considering the overall community focus angle before. In my view, when we add in that angle, the steady new feature model is better. Regards, Neil ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Guile release planning 2008-11-11 1:23 Guile release planning Neil Jerram @ 2008-11-11 1:59 ` Mike Gran 2008-11-15 23:03 ` Neil Jerram 2008-11-11 3:44 ` Linas Vepstas ` (3 subsequent siblings) 4 siblings, 1 reply; 24+ messages in thread From: Mike Gran @ 2008-11-11 1:59 UTC (permalink / raw) To: guile-devel, guile-user If the base Guile C API remains stable, it doesn't matter to me how the releases occur, because they won't break my libraries or projects. If the Guile C API needs to change, some sort of notification and beta pre-release would be preferred, so that I can test my projects before the new Guile gets yum'ed out to my group. -Mike Gran ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Guile release planning 2008-11-11 1:59 ` Mike Gran @ 2008-11-15 23:03 ` Neil Jerram 2008-11-15 23:19 ` Mike Gran 0 siblings, 1 reply; 24+ messages in thread From: Neil Jerram @ 2008-11-15 23:03 UTC (permalink / raw) To: Mike Gran; +Cc: guile-user, guile-devel Hi Mike, thanks for your response. 2008/11/11 Mike Gran <spk121@yahoo.com>: > If the base Guile C API remains stable, it doesn't matter to me how the releases occur, because they won't break my libraries or projects. OK. > If the Guile C API needs to change, some sort of notification and beta pre-release would be preferred, so that I can test my projects before the new Guile gets yum'ed out to my group. How exactly would a "beta pre-release" help? It seems you have in mind people who are building your project from source, using a distro-updated libguile. Even with notification/pre-release, and with you having updated your code accordingly, one of your users might not have downloaded your updated code. I guess I can see, though, that it's nice if you have a bit of notice, and hence time to prepare an update. And then I can also see that to do that you will want real code to work with, not just an English description of the API change. I would propose, then, that we clearly flag (on the mailing list) an API change at the time when the relevant commit is made to the repository, and make sure that some minimum period of time elapses before the subsequent release. I would hope that you could then work on the basis of the commit, without needing a formal pre-release. (Any kind of release takes a bit of time, and pre-releases might confuse the overall release picture.) Would that work? Neil ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Guile release planning 2008-11-15 23:03 ` Neil Jerram @ 2008-11-15 23:19 ` Mike Gran 0 siblings, 0 replies; 24+ messages in thread From: Mike Gran @ 2008-11-15 23:19 UTC (permalink / raw) To: guile-devel, guile-user > From: Neil Jerram <neiljerram@googlemail.com> > Hi Mike, thanks for your response. > > I would propose, then, that we clearly flag (on the mailing list) an > API change at the time when the relevant commit is made to the > repository, and make sure that some minimum period of time elapses > before the subsequent release. I would hope that you could then work > on the basis of the commit, without needing a formal pre-release. > (Any kind of release takes a bit of time, and pre-releases might > confuse the overall release picture.) > > Would that work? Works for me. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Guile release planning 2008-11-11 1:23 Guile release planning Neil Jerram 2008-11-11 1:59 ` Mike Gran @ 2008-11-11 3:44 ` Linas Vepstas 2008-11-11 17:10 ` Greg Troxel ` (3 more replies) 2008-11-11 15:32 ` Sebastian Tennant ` (2 subsequent siblings) 4 siblings, 4 replies; 24+ messages in thread From: Linas Vepstas @ 2008-11-11 3:44 UTC (permalink / raw) To: Neil Jerram; +Cc: guile-user, guile-devel 2008/11/10 Neil Jerram <neiljerram@googlemail.com>: > > I also think it will help us manage API incompatibilities better. I > think our default position from now on should be to maintain > source-level (API) compatibility, but it is inevitable that there will > be exceptions to this. Any ideas for binary compatibility for the "micro" revisions? I recently discovered that a library compiled against 1.8.3 would core dump when used with an application compiled against 1.8.5. Operationally, not a big deal, really; I just recompiled the lib, but emotionally, it did give me that sinking feeling for a while, of maybe having yet another hard-to-find bug, or a system I cannot fully trust. :-( > the steady new feature model is better. The linux kernel got rid of the stable/unstable branch idea, and it's worked really really well. (the reasons why are widely documented) I'm for it. --linas ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Guile release planning 2008-11-11 3:44 ` Linas Vepstas @ 2008-11-11 17:10 ` Greg Troxel 2008-11-11 20:00 ` Andy Wingo ` (2 subsequent siblings) 3 siblings, 0 replies; 24+ messages in thread From: Greg Troxel @ 2008-11-11 17:10 UTC (permalink / raw) To: linasvepstas; +Cc: guile-user, guile-devel, Neil Jerram [-- Attachment #1: Type: text/plain, Size: 707 bytes --] Any ideas for binary compatibility for the "micro" revisions? I recently discovered that a library compiled against 1.8.3 would core dump when used with an application compiled against 1.8.5. Operationally, not a big deal, really; I just recompiled the lib, but emotionally, it did give me that sinking feeling for a while, of maybe having yet another hard-to-find bug, or a system I cannot fully trust. :-( The first question is if there was a shlib minor version bump. But, if it were the other way around it would be bad. It is not expected in general that you can use older libraries than what you built against. But, building against 1.8.3 and then updating to 1.8.5 should be ok. [-- Attachment #2: Type: application/pgp-signature, Size: 193 bytes --] ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Guile release planning 2008-11-11 3:44 ` Linas Vepstas 2008-11-11 17:10 ` Greg Troxel @ 2008-11-11 20:00 ` Andy Wingo 2008-11-11 21:05 ` Linas Vepstas 2008-11-11 20:18 ` Ludovic Courtès 2008-11-15 23:16 ` Neil Jerram 3 siblings, 1 reply; 24+ messages in thread From: Andy Wingo @ 2008-11-11 20:00 UTC (permalink / raw) To: linasvepstas; +Cc: guile-user, guile-devel, Neil Jerram Hi Linas, On Tue 11 Nov 2008 04:44, "Linas Vepstas" <linasvepstas@gmail.com> writes: > 2008/11/10 Neil Jerram <neiljerram@googlemail.com>: >> >> I also think it will help us manage API incompatibilities better. I >> think our default position from now on should be to maintain >> source-level (API) compatibility, but it is inevitable that there will >> be exceptions to this. > > Any ideas for binary compatibility for the "micro" revisions? I think it needs to be guaranteed. > I recently discovered that a library compiled against 1.8.3 > would core dump when used with an application compiled > against 1.8.5. Ooh, bummer. The 1.8 series is binary-compatible (i.e. 1.8.x is compatible with 1.8.y if x >= y), *but* only if compiled in the same way. An example of compiling in different ways is if you build against a guile with --disable-threads, but then rebuild guile with --enable-threads, or vice versa. Probably what happened to you? > The linux kernel got rid of the stable/unstable branch idea, > and it's worked really really well. (the reasons why are > widely documented) I'm for it. The linux kernel doesn't guarantee ABI /or/ API stability -- it's a different kettle of fish. Cheers, Andy -- http://wingolog.org/ ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Guile release planning 2008-11-11 20:00 ` Andy Wingo @ 2008-11-11 21:05 ` Linas Vepstas 2008-11-11 22:06 ` Andy Wingo 0 siblings, 1 reply; 24+ messages in thread From: Linas Vepstas @ 2008-11-11 21:05 UTC (permalink / raw) To: Andy Wingo, Ludovic Courtès; +Cc: guile-user, guile-devel, Neil Jerram 2008/11/11 Andy Wingo <wingo@pobox.com>: >> Any ideas for binary compatibility for the "micro" revisions? > > I think it needs to be guaranteed. > >> I recently discovered that a library compiled against 1.8.3 >> would core dump when used with an application compiled >> against 1.8.5. Ludovic asked: > Do you remember what caused it? I didn't bother to investigate; I recomipled and the problem went away. > --enable-threads, or vice versa. Probably what happened to you? Don't think so. The 1.8.3 was from Ubuntu Hardy. I assume it had threads turned on; but I wasn't yet using threads at that time, so I don't know. The 1.8.5 was self-built. I did not specify --enable-threads, this seemed to be on automatically. --linas ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Guile release planning 2008-11-11 21:05 ` Linas Vepstas @ 2008-11-11 22:06 ` Andy Wingo 0 siblings, 0 replies; 24+ messages in thread From: Andy Wingo @ 2008-11-11 22:06 UTC (permalink / raw) To: linasvepstas; +Cc: Ludovic Courtès, guile-user, guile-devel, Neil Jerram Hi, On Tue 11 Nov 2008 22:05, "Linas Vepstas" <linasvepstas@gmail.com> writes: > 2008/11/11 Andy Wingo <wingo@pobox.com>: >> --enable-threads, or vice versa. Probably what happened to you? > > Don't think so. The 1.8.3 was from Ubuntu Hardy. I assume > it had threads turned on Nope, Debian builds --without-threads. > The 1.8.5 was self-built. I did not specify --enable-threads, this > seemed to be on automatically. Voilà. Andy -- http://wingolog.org/ ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Guile release planning 2008-11-11 3:44 ` Linas Vepstas 2008-11-11 17:10 ` Greg Troxel 2008-11-11 20:00 ` Andy Wingo @ 2008-11-11 20:18 ` Ludovic Courtès 2008-11-15 23:16 ` Neil Jerram 3 siblings, 0 replies; 24+ messages in thread From: Ludovic Courtès @ 2008-11-11 20:18 UTC (permalink / raw) To: guile-user; +Cc: guile-devel Hi Linas, "Linas Vepstas" <linasvepstas@gmail.com> writes: > Any ideas for binary compatibility for the "micro" revisions? > I recently discovered that a library compiled against 1.8.3 > would core dump when used with an application compiled > against 1.8.5. Do you remember what caused it? I don't remember of any ABI change in the 1.8.x series (apart from function additions). The with-threads and without-threads Guiles are not ABI-compatible, though. Thanks, Ludo'. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Guile release planning 2008-11-11 3:44 ` Linas Vepstas ` (2 preceding siblings ...) 2008-11-11 20:18 ` Ludovic Courtès @ 2008-11-15 23:16 ` Neil Jerram 2008-11-16 23:33 ` Ludovic Courtès 3 siblings, 1 reply; 24+ messages in thread From: Neil Jerram @ 2008-11-15 23:16 UTC (permalink / raw) To: linasvepstas; +Cc: guile-user, guile-devel 2008/11/11 Linas Vepstas <linasvepstas@gmail.com>: > > Any ideas for binary compatibility for the "micro" revisions? At our "upstream" level (i.e. not trying to solve all of the distribution-level issues), I think the theory is that this is covered by library interface numbering. In other words, if a change in guile causes the new libguile not to be compatible with the previous one, libguile's revision number should be incremented. > I recently discovered that a library compiled against 1.8.3 > would core dump when used with an application compiled > against 1.8.5. And I assume the actually loaded libguile was version 1.8.5? So there should have been something in the library saying that it needed 1.8.3, which would have caused the link to fail. Does the libtool scheme cover this; I'm afraid I just don't know. > The linux kernel got rid of the stable/unstable branch idea, > and it's worked really really well. (the reasons why are > widely documented) I'm for it. Yes, I guess my suggestion is quite similar to what the kernel did. Thanks, Neil ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Guile release planning 2008-11-15 23:16 ` Neil Jerram @ 2008-11-16 23:33 ` Ludovic Courtès 2008-11-17 20:49 ` Andy Wingo 0 siblings, 1 reply; 24+ messages in thread From: Ludovic Courtès @ 2008-11-16 23:33 UTC (permalink / raw) To: guile-devel; +Cc: guile-user Hello, "Neil Jerram" <neiljerram@googlemail.com> writes: > And I assume the actually loaded libguile was version 1.8.5? So there > should have been something in the library saying that it needed 1.8.3, > which would have caused the link to fail. Does the libtool scheme > cover this; I'm afraid I just don't know. Yes it does (at the level of "supported interface numbers", not at the level of version numbers, though), provided the person who prepares the release correctly updates the Libtool version info---which has always been the case, of course. :-) Ludo'. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Guile release planning 2008-11-16 23:33 ` Ludovic Courtès @ 2008-11-17 20:49 ` Andy Wingo 2008-11-18 10:22 ` Ludovic Courtès 0 siblings, 1 reply; 24+ messages in thread From: Andy Wingo @ 2008-11-17 20:49 UTC (permalink / raw) To: Ludovic Courtès; +Cc: guile-user, guile-devel Hi, On Mon 17 Nov 2008 00:33, ludo@gnu.org (Ludovic Courtès) writes: >> And I assume the actually loaded libguile was version 1.8.5? So there >> should have been something in the library saying that it needed 1.8.3, >> which would have caused the link to fail. Does the libtool scheme >> cover this; I'm afraid I just don't know. > > Yes it does (at the level of "supported interface numbers", not at the > level of version numbers, though) Beating a dead horse, 1.8.5 should be compatible with 1.8.3, via whatever mechanism. (The actual problem in this case was elsewhere.) I am skeptical of pushing significant changes into stable branches. I really don't want to be in the situation in which 1.8.4 works for someone, but 1.8.7 does not. You might be right, Neil, about that path, but it does not give me warm fuzzy feelings. Andy -- http://wingolog.org/ ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Guile release planning 2008-11-17 20:49 ` Andy Wingo @ 2008-11-18 10:22 ` Ludovic Courtès 2008-12-08 22:05 ` Neil Jerram 0 siblings, 1 reply; 24+ messages in thread From: Ludovic Courtès @ 2008-11-18 10:22 UTC (permalink / raw) To: guile-user; +Cc: guile-devel Hi, Andy Wingo <wingo@pobox.com> writes: > Beating a dead horse, 1.8.5 should be compatible with 1.8.3, via > whatever mechanism. (The actual problem in this case was elsewhere.) 1.8.5 *is* compatible with 1.8.x. > I am skeptical of pushing significant changes into stable branches. I > really don't want to be in the situation in which 1.8.4 works for > someone, but 1.8.7 does not. You might be right, Neil, about that path, > but it does not give me warm fuzzy feelings. Same for me, but we can surely find a reasonable trade-off. Thanks, Ludo'. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Guile release planning 2008-11-18 10:22 ` Ludovic Courtès @ 2008-12-08 22:05 ` Neil Jerram 2008-12-09 17:01 ` Ludovic Courtès 0 siblings, 1 reply; 24+ messages in thread From: Neil Jerram @ 2008-12-08 22:05 UTC (permalink / raw) To: Ludovic Courtès; +Cc: guile-user, guile-devel 2008/11/18 Ludovic Courtès <ludo@gnu.org>: > Hi, > > Andy Wingo <wingo@pobox.com> writes: > >> Beating a dead horse, 1.8.5 should be compatible with 1.8.3, via >> whatever mechanism. (The actual problem in this case was elsewhere.) > > 1.8.5 *is* compatible with 1.8.x. > >> I am skeptical of pushing significant changes into stable branches. I >> really don't want to be in the situation in which 1.8.4 works for >> someone, but 1.8.7 does not. You might be right, Neil, about that path, >> but it does not give me warm fuzzy feelings. > > Same for me, but we can surely find a reasonable trade-off. Many thanks everyone for your replies to this thread, and sorry for my delay in following up. OK, it's clear the consensus on 1.8.x is against my suggestion, so I'll accept that. And I can understand the reasons too. I think perhaps it comes down to Ludovic's point about the version number being a hint - i.e. people already have expectations about what should be in the change from 1.8.x to 1.8.x+1, and mostly those expectations seem to be API and ABI compatibility, so it makes sense to comply with that. One of my background concerns, when suggesting that we try to get more into 1.8.x, was that if we have lots of release branches (e.g. 1.6.x, 1.8.x and 1.10.x) in use at the same time, we have to do more work to apply fixes to all branches. But in fact that is a lot easier now that we use Git, so probably isn't a big worry. For new features, then, the question becomes: what is our general plan, from here on, for going from 1.y.x to 1.y+2.0 ? As Greg has said, we need to get new stuff out quicker than we have done in the past. Right now we have an growing pile of new stuff in Git, should _all_ of that go into 1.10? I guess the answer is that 1.10.0 - and more generally any new 1.y+2.0 - should include everything that we have which - we believe is ready, i.e. in a sufficiently final form that its API/ABI is unlikely to be broken in future - is working. For 1.10.0, then, we just need to check that there isn't anything in master that isn't ready/working; if there is, it should be moved into a branch. And from here on we should adopt the rule that new features are always developed on branches, and only merged into master when ready and working. Then we should be able to release master as a new 1.y+2.0 whenever we see that enough new features have accumulated. How does that sound? Neil ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Guile release planning 2008-12-08 22:05 ` Neil Jerram @ 2008-12-09 17:01 ` Ludovic Courtès 0 siblings, 0 replies; 24+ messages in thread From: Ludovic Courtès @ 2008-12-09 17:01 UTC (permalink / raw) To: guile-user; +Cc: guile-devel Hi Neil! "Neil Jerram" <neiljerram@googlemail.com> writes: > OK, it's clear the consensus on 1.8.x is against my suggestion, so > I'll accept that. And I can understand the reasons too. I think > perhaps it comes down to Ludovic's point about the version number > being a hint - i.e. people already have expectations about what should > be in the change from 1.8.x to 1.8.x+1, and mostly those expectations > seem to be API and ABI compatibility, so it makes sense to comply with > that. Yep, it's just a matter of labeling, really. > For 1.10.0, then, we just need to check that there isn't anything in > master that isn't ready/working; if there is, it should be moved into > a branch. In a similar vein, some of the things developed in the 1.7 series, like futures, were never stabilized and are simply commented out for now. Thread support is also somewhat sloppy, as shown my recent reports (e.g., parallel memoization). We need to think about these as well. > And from here on we should adopt the rule that new features > are always developed on branches, and only merged into master when > ready and working. Then we should be able to release master as a new > 1.y+2.0 whenever we see that enough new features have accumulated. > > How does that sound? Sounds good to me! Thanks, Ludo'. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Guile release planning 2008-11-11 1:23 Guile release planning Neil Jerram 2008-11-11 1:59 ` Mike Gran 2008-11-11 3:44 ` Linas Vepstas @ 2008-11-11 15:32 ` Sebastian Tennant 2008-11-11 20:30 ` Ludovic Courtès 2008-11-12 4:41 ` Han-Wen Nienhuys 4 siblings, 0 replies; 24+ messages in thread From: Sebastian Tennant @ 2008-11-11 15:32 UTC (permalink / raw) To: guile-user; +Cc: guile-devel Quoth "Neil Jerram" <neiljerram@googlemail.com>: > In my view, when we add in [the community focus] angle, the steady new > feature model is better. As a non-developer, but committed user, I couldn't agree more. Sebastian ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Guile release planning 2008-11-11 1:23 Guile release planning Neil Jerram ` (2 preceding siblings ...) 2008-11-11 15:32 ` Sebastian Tennant @ 2008-11-11 20:30 ` Ludovic Courtès 2008-11-16 0:03 ` Neil Jerram 2008-11-12 4:41 ` Han-Wen Nienhuys 4 siblings, 1 reply; 24+ messages in thread From: Ludovic Courtès @ 2008-11-11 20:30 UTC (permalink / raw) To: guile-user; +Cc: guile-devel Hello! "Neil Jerram" <neiljerram@googlemail.com> writes: > In my view, the most important thing for Guile's near-to-medium-term > future is focus. By that I mean having developers working on, and > users using, as far as possible, a similar level of code. In the > past, we did big jumps - from 1.4.x to 1.6.x, and from 1.6.x to 1.8.x > - which I think left users unable easily to upgrade, or perhaps just > unsure of whether to upgrade. From the developer point of view, they > increased the support burden (because of some users staying with the > old series). Also the big jump model can be frustrating for > developers, because it tends to mean that there is a long time between > when a shiny new feature is ready, and when it gets released and so > into the hands of most users. I fully agree with this, but... Your note doesn't take binary compatibility into account, and I think it's an important thing, too. I think the ideal is to maintain binary compatibility within a major series, as we've done (or tried to do) in the 1.8.x series. This is very convenient for binary distributions like Debian, and for users in general. Thus, introducing ABI incompatibilities should imply increasing the first or second digit of the version number, IMO. Maintaining ABI compatibility doesn't mean we can't add new features, though. In the course of the 1.8.x series, several Scheme modules were added. I think enhancements like the lazy symbol binding in modules could have been in theory added in 1.8.x since it breaks neither the API nor the ABI. Things like `libguile-i18n' could have been added too, but the issue when adding C code is portability: it may be that this module would have caused build issues on some platforms. Now, with more frequent releases, it would be reasonable to hope that such regressions would quickly be fixed. Another thing is actual big jumps. I think the addition of the VM is a big jump. A GC change, or a rewrite of the string/char code with Unicode support would be a big jump, too. Such big jumps surely need a new major release. BTW, we need to consider releasing 1.8.6 one of these days! ;-) Thanks! Ludo'. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Guile release planning 2008-11-11 20:30 ` Ludovic Courtès @ 2008-11-16 0:03 ` Neil Jerram 2008-11-16 5:11 ` Linas Vepstas ` (2 more replies) 0 siblings, 3 replies; 24+ messages in thread From: Neil Jerram @ 2008-11-16 0:03 UTC (permalink / raw) To: Ludovic Courtès; +Cc: guile-user, guile-devel 2008/11/11 Ludovic Courtès <ludo@gnu.org>: > > Your note doesn't take binary compatibility into account, and I think > it's an important thing, too. I think the ideal is to maintain binary > compatibility within a major series, as we've done (or tried to do) in > the 1.8.x series. (And Andy wrote "I think it needs to be guaranteed.") But this isn't obvious to me. _If_ the libtool versioning system works in practice, in the senses of - permitting linking when it ought to be permitted - failing linking when it ought to fail - providing a clear error message in the failure cases, so that the user knows what to do next then it seems to me that a reasonable division of labour is for us (upstream) to take care of API compatibility, and ensuring that the libtool numbers are a correct description of ABI state, and for distributions/users to take care of any consequences of mismatched libtool numbers. I think the latter "consequences" are just having to recompile something against the new libguile version. For a user who has already decided to use the source code version of an application, that should be trivial; for distributions, that's just what they do all the time, isn't it? Are there other consequences that I'm missing? Sure, we could also take on ABI compatibility ourselves, but I think that overconstrains our development, and/or makes it harder. > This is very convenient for binary distributions like > Debian, and for users in general. Are you sure about that? I would expect Debian already to have completely automatic ways of coping with this kind of thing (i.e. libtool numbers changing). And I've described what I think the impact on users is above; seems quite small to me. > I think enhancements like the lazy symbol binding in modules > could have been in theory added in 1.8.x since it breaks neither the API > nor the ABI. Agreed; and I think they still can be added in 1.8.x. > Things like `libguile-i18n' could have been added too, but > the issue when adding C code is portability: it may be that this module > would have caused build issues on some platforms. Now, with more > frequent releases, it would be reasonable to hope that such regressions > would quickly be fixed. Agreed, I think we can handle this. > Another thing is actual big jumps. I think the addition of the VM is a > big jump. Yes, but it's an addition. As far as I understand, it's completely back-compatible, so I would be perfectly happy to feed this in to 1.8.x at some point. Of course, we should take care that we are 99% happy with the new APIs before releasing them, as it wouldn't be good to make lots of changes later. But that's no different from the first public release of anything - in my view, it should work much better for us to come to this determination feature-by-feature, than to say arbitrarily at some point "everything in master" is now ready. > A GC change, or a rewrite of the string/char code with > Unicode support would be a big jump, too. Such big jumps surely need a > new major release. Not necessarily, in my view. We have an extensive test suite, and I think we can have some confidence in that. After sufficient testing, I would see no problem with your proposed BDW-GC changes going into a 1.8.x release. Same for Unicode support - if the API stayed compatible. If the API could not be compatible, then I would agree that we might need a new major release. > BTW, we need to consider releasing 1.8.6 one of these days! ;-) Yes. Do we have any particular more things to get into this? (I don't think I have anything.) Neil ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Guile release planning 2008-11-16 0:03 ` Neil Jerram @ 2008-11-16 5:11 ` Linas Vepstas 2008-11-16 12:46 ` Greg Troxel 2008-11-16 23:55 ` Ludovic Courtès 2 siblings, 0 replies; 24+ messages in thread From: Linas Vepstas @ 2008-11-16 5:11 UTC (permalink / raw) To: Neil Jerram; +Cc: Ludovic Courtès, guile-user, guile-devel 2008/11/15 Neil Jerram <neiljerram@googlemail.com>: > 2008/11/11 Ludovic Courtès <ludo@gnu.org>: >> BTW, we need to consider releasing 1.8.6 one of these days! ;-) > > Yes. Do we have any particular more things to get into this? (I > don't think I have anything.) I'm seeing frequent and wide-spread deadlocking in the thread-enabled version of guile. I'm debugging this, but do not yet have a patch. I sure would like to see this fixed in 1.8.6, and am laboring under the optimistic assumption that I can find a patch in a few days, and that there won't be yet another problem that shows up after that. --linas ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Guile release planning 2008-11-16 0:03 ` Neil Jerram 2008-11-16 5:11 ` Linas Vepstas @ 2008-11-16 12:46 ` Greg Troxel 2008-11-16 23:55 ` Ludovic Courtès 2 siblings, 0 replies; 24+ messages in thread From: Greg Troxel @ 2008-11-16 12:46 UTC (permalink / raw) To: Neil Jerram; +Cc: Ludovic Courtès, guile-user, guile-devel [-- Attachment #1: Type: text/plain, Size: 6555 bytes --] "Neil Jerram" <neiljerram@googlemail.com> writes: >> 2008/11/11 Ludovic Courtès <ludo@gnu.org>: > But this isn't obvious to me. _If_ the libtool versioning system > works in practice, in the senses of > > - permitting linking when it ought to be permitted > > - failing linking when it ought to fail > > - providing a clear error message in the failure cases, so that the > user knows what to do next Except for 'clear error message', I think shared library linking (in ELF at least) satisfies that. > then it seems to me that a reasonable division of labour is for us > (upstream) to take care of API compatibility, and ensuring that the > libtool numbers are a correct description of ABI state, and for > distributions/users to take care of any consequences of mismatched > libtool numbers. That is the standard model, and I think it's fine, modulo the frequency of ABI breaks (and thus shlib major version increases). ABI is not just shared library versions - it's all the scheme-level interfaces that a guile-using program might call. > I think the latter "consequences" are just having to recompile > something against the new libguile version. For a user who has > already decided to use the source code version of an application, that > should be trivial; for distributions, that's just what they do all the > time, isn't it? Yes, except that it's a pain if it happens often, and it more or less constrains all the guile-using components in a system that aren't leaves to use the same guile version. > Are there other consequences that I'm missing? Frequent API and ABI breaks are in my view a sign of an immature development process, and a warning not to rely on something. guile aims to be a scripting language to be added to various programs, so we should hav as a major goal being stable enough to be relied on. > Sure, we could also take on ABI compatibility ourselves, but I think > that overconstrains our development, and/or makes it harder. I think that we should aim to have infrequent ABI breaks. Every year or so is probably ok. >> I think enhancements like the lazy symbol binding in modules >> could have been in theory added in 1.8.x since it breaks neither the API >> nor the ABI. > > Agreed; and I think they still can be added in 1.8.x. Sure - this is totally fine. Programs that worked against 1.8.x, both compile time and run time, will still work against 1.8.x+1. But, the reason we want to add to 1.8 is that 1.10 wasn't release 18 months ago, about which I'll rant more later. >> A GC change, or a rewrite of the string/char code with >> Unicode support would be a big jump, too. Such big jumps surely need a >> new major release. > > Not necessarily, in my view. We have an extensive test suite, and I > think we can have some confidence in that. After sufficient testing, > I would see no problem with your proposed BDW-GC changes going into a > 1.8.x release. > > Same for Unicode support - if the API stayed compatible. If the API > could not be compatible, then I would agree that we might need a new > major release. The biggest issue is API breaks without adequate warning. To remove something from the API, it should be marked deprecated in a stable release, and then have probably 2 years pass during which all depending programs to update and release. The key is that one has to be able to say in good conscience that those depending programs are lame or unmaintained if they didn't update. If API breaks other than via the above rules happen too often, then guile really should support (natively) the installation of multiple vesrions at once. pkgsrc has "guile" which is 1.8.x and "guile16", and guile16 installs to /usr/pkg/guile/1.6 as prefix instead of /usr/pkg. guile simply doesn't have the mindshare to support this kind of complexity. An example of API problems is Linux itself. I am working on a project using the kernel and going from 2.6.20 to 2.6.24 is a huge change that seems to have significant API breaks (for kernel modules). If these changes are as bad as they seem, this just isn't adult software engineering and I would have to recommend against relying on such code. I think guile's real problem has been that while people hack on head, this hacking doesn't seem to have the clear goal of producing a stable release. Of course all the hard-core guile hackers run guile from (choose-VCS-weekly :-), but programs that depend on guile should not -- they need to depend on versions which are packaged. So my general rule for software is that as soon as people say "you should run HEAD instead of RELEASE, it's better", a release from head is overdue. So I don't think there's anything wrong with the hack-on-head-cut-stable-branches-periodically approach, except: 1) try really hard to avoid API breaks, and take the ugliness of new function names with the new semantics/signatures as a lesser pain 2) release a new stable version from head every year or so. For 2, I suggest calling feature freeze and asking for testing of head, kicking out 1.9.x releases and encouraging fast-moving distributions to package them as a replacement for 1.8.x so packaging system maintainer types can test, and then branching for 1.10.0 and unfreezing head. Even if there were 3 months a year of feature freeze and 9 months of open hacking, I think that would be good. There's a negative feedback cycle, where people don't want to freeze for release because they want to get in one more thing before the stable code is frozen for the next 4 years, and as the stable frequency gets lower the urge to not freeze gets higher, leading to longer intervals. NetBSD has been struggling with this too. Here's the history 1.4 2000-06 1.6 2002-09 1.8 2006-02 1.10 >> 2008-11 :-( and these intervals are all significantly too long. Probably a freeze is in order 9 months after the last branch cut, to head for 1 year. Speaking from my experience being the maintainer in pkgsrc of guile, new versions that don't have API or ABI breaks are nearly trivial to update, and cause no issues. ABI breaks but not API breaks are not as bad, but require touching all the depending packages to ensure cross-package binary compatibility. API breaks without all the depending packages getting fixed leads to choosing between dropping depending packages or having multiple versions of guile in pkgsrc, both of which are ugly. [-- Attachment #2: Type: application/pgp-signature, Size: 193 bytes --] ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Guile release planning 2008-11-16 0:03 ` Neil Jerram 2008-11-16 5:11 ` Linas Vepstas 2008-11-16 12:46 ` Greg Troxel @ 2008-11-16 23:55 ` Ludovic Courtès 2 siblings, 0 replies; 24+ messages in thread From: Ludovic Courtès @ 2008-11-16 23:55 UTC (permalink / raw) To: guile-user; +Cc: guile-devel Hello! "Neil Jerram" <neiljerram@googlemail.com> writes: > But this isn't obvious to me. _If_ the libtool versioning system > works in practice, in the senses of > > - permitting linking when it ought to be permitted > > - failing linking when it ought to fail It partly fails for the second point. Examples: changing the number/type of arguments of a function, changing the layout of a public structure, changing the implementation of public macros, etc. It really requires special care to check whether a change is breaking ABI compatibility. > then it seems to me that a reasonable division of labour is for us > (upstream) to take care of API compatibility, and ensuring that the > libtool numbers are a correct description of ABI state, and for > distributions/users to take care of any consequences of mismatched > libtool numbers. I consider ABI compatibility as important, too, because people don't want to recompile everything every time a minor release is out. Like Andy said, we should guarantee it within a given series, e.g., 1.8.x. After all, the version number is just a label giving users a hint about the type of changes introduced in a version and level of compatibility provided. It's common for free software libraries to remain ABI-compatible within a major series (first and second digits unchanged), to change to the second digit when ABI breaks, and possibly the first digit when API breaks *or* important changes are introduced. >> This is very convenient for binary distributions like >> Debian, and for users in general. > > Are you sure about that? Yes. Even for the few Guile C libraries I develop myself, it's boring to recompile them when switching from 1.8 to 1.9 or one of the other branches. For a distribution, it means burning a lot of CPU power. >> I think enhancements like the lazy symbol binding in modules >> could have been in theory added in 1.8.x since it breaks neither the API >> nor the ABI. > > Agreed; and I think they still can be added in 1.8.x. Yes, but one con could be that it introduces changes that could be visible to users that access Guile's undocumented module-fiddling API. > Yes, but it's an addition. As far as I understand, it's completely > back-compatible, so I would be perfectly happy to feed this in to > 1.8.x at some point. From a marketing viewpoint, the VM deserves a new version number. :-) In practice, it also requires users to adapt their build system to take advantage of it. > Of course, we should take care that we are 99% happy with the new APIs > before releasing them, as it wouldn't be good to make lots of changes > later. But that's no different from the first public release of > anything - in my view, it should work much better for us to come to > this determination feature-by-feature, than to say arbitrarily at some > point "everything in master" is now ready. I agree that a feature-by-feature approach would be more reasonable. My impression, gathered since the time when Kevin was still with us, was that the goal was zero-breakage within a stable series, such that 1.8.x+1 would always be more portable and reliable that 1.8.x. This approach rules out things like the lazy duplicate symbol resolution, and `libguile-i18n'. Surely we could find an "in-between". > Not necessarily, in my view. We have an extensive test suite, and I > think we can have some confidence in that. After sufficient testing, > I would see no problem with your proposed BDW-GC changes going into a > 1.8.x release. The BDW-GC change is ABI-incompatible, it introduces a new dependency, augments the API and potentially introduces subtle changes in behavior, so I would definitely change the version number for that. Again, that version number is just a hint for users. >> BTW, we need to consider releasing 1.8.6 one of these days! ;-) > > Yes. Do we have any particular more things to get into this? (I > don't think I have anything.) I'm interested in the scm_c_read issue I raised on the list, and Linas is interested in threading issues. The former seems more important to me (eh eh ;-)) because it introduces a regression. Then, I don't think we have to solve every single bug right now, it's already been too long since 1.8.5. Thanks, Ludo'. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Guile release planning 2008-11-11 1:23 Guile release planning Neil Jerram ` (3 preceding siblings ...) 2008-11-11 20:30 ` Ludovic Courtès @ 2008-11-12 4:41 ` Han-Wen Nienhuys 2008-11-12 19:11 ` Andy Wingo 4 siblings, 1 reply; 24+ messages in thread From: Han-Wen Nienhuys @ 2008-11-12 4:41 UTC (permalink / raw) To: guile-user; +Cc: guile-devel Neil Jerram escreveu: > So, what do you think? There have been discussions of release > strategy in the past, which I've seen as 50/50 between the split > stable and development model (which we have now) and the steady new > feature model (described above), but I don't recall them considering > the overall community focus angle before. In my view, when we add in > that angle, the steady new feature model is better. One angle that we could take is time based release planning, like GNOME and Fedora do: plan to do one or two releases per year on a rigid schedule. The LilyPond 2.11 vs. 2.12 jump has been delaying for too long, but I generally do a biweekly release, which is stable enough to reasonably be called 'stable', and it has worked very well so far. The precondition for this is that there is a good test-suite so we can be sure that a release that passes the tests is good. -- Han-Wen Nienhuys - hanwen@xs4all.nl - http://www.xs4all.nl/~hanwen ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Guile release planning 2008-11-12 4:41 ` Han-Wen Nienhuys @ 2008-11-12 19:11 ` Andy Wingo 0 siblings, 0 replies; 24+ messages in thread From: Andy Wingo @ 2008-11-12 19:11 UTC (permalink / raw) To: hanwen; +Cc: guile-user, guile-devel Hi Han-Wen, On Wed 12 Nov 2008 05:41, Han-Wen Nienhuys <hanwen@xs4all.nl> writes: > One angle that we could take is time based release planning, like GNOME and > Fedora do: plan to do one or two releases per year on a rigid > schedule. With GNOME there is also a difference, as you know: they do not add API in micro series, only in minor series, and never change the API or ABI in incompatible ways. While that should be our intent, it's quite a burden for a language implementation that exposes as much of its guts as Guile does. I think we should preserve Guile's ability to change API or ABI incompatibly (while providing shims: next mail). Releasing more often would be great, though. Andy -- http://wingolog.org/ ^ permalink raw reply [flat|nested] 24+ messages in thread
end of thread, other threads:[~2008-12-09 17:01 UTC | newest] Thread overview: 24+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2008-11-11 1:23 Guile release planning Neil Jerram 2008-11-11 1:59 ` Mike Gran 2008-11-15 23:03 ` Neil Jerram 2008-11-15 23:19 ` Mike Gran 2008-11-11 3:44 ` Linas Vepstas 2008-11-11 17:10 ` Greg Troxel 2008-11-11 20:00 ` Andy Wingo 2008-11-11 21:05 ` Linas Vepstas 2008-11-11 22:06 ` Andy Wingo 2008-11-11 20:18 ` Ludovic Courtès 2008-11-15 23:16 ` Neil Jerram 2008-11-16 23:33 ` Ludovic Courtès 2008-11-17 20:49 ` Andy Wingo 2008-11-18 10:22 ` Ludovic Courtès 2008-12-08 22:05 ` Neil Jerram 2008-12-09 17:01 ` Ludovic Courtès 2008-11-11 15:32 ` Sebastian Tennant 2008-11-11 20:30 ` Ludovic Courtès 2008-11-16 0:03 ` Neil Jerram 2008-11-16 5:11 ` Linas Vepstas 2008-11-16 12:46 ` Greg Troxel 2008-11-16 23:55 ` Ludovic Courtès 2008-11-12 4:41 ` Han-Wen Nienhuys 2008-11-12 19:11 ` Andy Wingo
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).