I smell a need for a CDR, c'nest pas?
Tersely pecked on my iPad
On Mar 13, 2014, at 18:42, Faré fahree@gmail.com wrote:
: dherring
: sionescu
: rpgoldman
: sionescu
For essential infrastructure like what ASDF claims to be, I expect major changes to happen less than once every 5 to 10 years.
Daniel, if you want changes only every 5 to 10 years, do like janderson: try an upgrade every 5 years, find that it breaks your code somehow and downgrade back to the old version without further investigation. Then maybe 10 years from now you'll get the system dependency bug fixed.
You can expect whatever you want, but unless somebody is paid full-time to work on ASDF, it's not going to happen.
Agreed. Tell me: am I to piss our contributors off by refusing to accept their patches, in order to make happy the people who contribute only complaints? New features may simply be the price users pay to have bugs getting fixed.
The "force vs force-not" message is a good example. A feature was added at the request of a user without considering all the use cases and now we discover that it's poorly thought out. When you say "this has always been my impression...", it means that nobody ever even wrote down a rationale for that new feature so you don't *know*, you have impressions.
force and force-not were done well. The interaction between the two was not well thought out, but obviously no one relied on the interaction before force-not was implemented, so that was backward compatible, and the recent change keeps the previously useful uses working, so it is arguably, too.
It's not like my changes were done in secret. I did it and explained what I did, and even mentioned at the time I didn't understand which setting should take precedence over the other. I only apologize for not understanding then the objection by Robert, though he also didn't care enough to submit a patch, and no one else even complained.
The more backwards compatibility, the better. Projects like glibc have developed significant infrastructure to enable transparent improvements (see the ABI compliance checker, DSO symbol versioning, etc.).
See above. That kind of backwards-compatibility is very difficult and burdensome.
We spend a great deal of time maintaining backwards compatibility. Consider how much work was spent making the bug-fix coming from PREPARE-OP from breaking previous OPERATION subclasses. Similarly, as someone who still uses ASDF:*CENTRAL-REGISTRY*, maintaining that is substantial backwards compatibility.
The backwards-compatibility is not complete, though. When we're talking about glibc, we're talking about versioning functions and keeping the old entry points bug-to-bug compatible for ever while the new version of that function is simply an addition. Issuing a warning that OPERATION is being directly subclassed is not backwards-compatibility.
We do care about backward compatibility, a lot. Yes, there are sometimes bugs in our backward-compatibility support. And then we painfully fix them, as in the case of OPERATION above. Are we perfect? No. Do we have symbol versioning for backwarder compatibility? No. The libc has additional issues and solutions because it's all about binary compatibility. We do not offer binary compatibility. We offer source compatibility. We consider binary compatibility is backward.
Every breaking change inflicts cost on a fraction of the existing userbase, in exchange for some proposed benefit to future users. Every time I have to debug breakage and change something or redesign my workflow to maintain existing capability, it encourages me to explore other, more stable or better designed options...
Sometimes "good ideas" fade after a month or two of reflection. Some survive the test because the benefit truly outweighs the cost. When that is the case, it is often helps to give the community time to prepare and minimize the number of times the community must change. So propose the change, allow a long RFC window, allow users to obtain test implementations (while still promoting the stable branch), wait a while for several changes to collect before pushing them into major new releases, etc.
I agree that an RFC-like process would be useful, instead of jumping in and implementing new features, as long as it's not too lengthy.
It has, in fact, been a long time since ASDF's last release, October 2013. During that time, there have been a very large number of tagged versions available to the community.
I don't think that this community can afford the time, nor can it muster the interest, to deal with such an RFC process.
What "community" ?
If someone wants a RFC process, he's welcome to write a specification for ASDF that all the currently documented or undocumented features implicitly relied upon by every piece of software in Quicklisp, and develop an independent reimplementation of ASDF based on that specification.
Now I'll be the one laughing, and even more so if the RFC gets to also specify all the backward compatibility "features" of ASDF.
For a start, I propose you try to RFCize quick-build, with which asdf-package-system is compatible — here you've already got two independent implementations of the same thing (three, if you count faslpath, after changing the separator from "." to "/"), and the implementations are both around a hundred lines of code only. Only the root registration protocols differ. If you can't standardize that, don't even dream of standardizing the rest of ASDF.
Furthermore, I don't find people stumbling over each other to install ASDF prereleases from git and report bugs they find.
I'm not talking about mundane compatibility problems with pathnames, but design choices that will affect everybody that uses ASDF in production, for deployments and writes ASDF extensions. Most of the time there isn't even an announcement that a new feature was added, like a new keyarg to defsystem, etc...
Every release comes with release notes that mention changes to the API. I haven't announced changes with every commit, because that would be verbose, and people who're interested can already read the git log.
Design choices are being discussed here, but only the small details lead to bikeshedding discussions like the recent flurry of messages. When there's a serious design choice, either no one replies, or it's a discussion between Robert and I, usually, though I readily admit you (Stelian) have sometimes contributed key ideas.
And who is going to be testing these prereleases? We have quite a small community of testers, to whom I am very, very grateful.
I've done a lot of testing on my own stuff and reported quite a lot of bugs to Faré in the past.
Yes, and I am grateful to you (Stelian), who indeed in IRC (and live! and launchpad) discussions contributed a lot to ASDF.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org The highest of minds / Often have built for themselves / The tallest of jails.