It's even worse than it appears.
Tuesday March 30, 2021; 5:31 PM EDT
  • At UserLand, a company I founded a long time ago, we had a rule called Rule 1. It said simply: No breakage. It meant you couldn't change the environment such that apps that ran in version N did not run in version N+1. It meant you took longer to release a new version because once released, you had to live with it forever. This rule came from bad experiences when we did things that broke users and developers. Since we were both the developers of the platform and users of the platform we had a realistic perspective of this. #
  • I was once having a discussion with someone who wanted to implement a successor to Frontier, intending it to be compatible with Frontier, in some way, but right at the beginning said he was going to make it case-sensitive where Frontier is not case-sensitive. #
  • I'd be happy to debate anyone who thinks this is anything but insane. I'd win the argument re Frontier for two reasons: #
    • 1. Frontier is not case-sensitive, and #
    • 2. Rule 1, no breakage. #
  • As we were originally developing the environment in the early 90s, we didn't give this much thought, but at the last minute a beta user it pleaded that it would be a tragic mistake to make it case-sensitive, so we changed. Never regretted the decision. #
  • To programming neophytes, a language is case-sensitive if HelloGoodbye is a different name from helloGoodbye. #
  • Rule 1 was not a joke, it was dead serious. I was sick of programmers who choose to break users and developers. I had worked with a deprecator, for years, and learned the hard way that a development process that permitted user breakage was not much of a process. Eventually the users will go somewhere where they aren't always having to start over because a programmer changed their mind about how something should work. Sometimes breakage happens, all rules have exceptions, but you have to work really hard to avoid those situations, and usually there's a way to do it. #
  • When a language goes out of its way to say Rule 1 demands no breakage, not Rule 27, or Rule 18b, but Rule 1, the first, the one that all other rules follow, well you can't break that rule and still say you're doing the thing you say you're doing. #
  • Jake Savin, a UserLander and friend, explained Rule 1 in the context of Firefox, which most definitely is not a Rule 1 product.#
  • Rule 1 was mentioned in the document announcing Frontier's release as open source in 2004. #
  • I mentioned Rule 1 in re arguments about whether it mattered if RSS broke publishers and aggregator developers. I insisted on Rule 1 there too. #
  • Rule 1 came up in a piece about Really Simple JavaScript. #

© copyright 1994-2021 Dave Winer.

Last update: Tuesday March 30, 2021; 9:33 PM EDT.

You know those obnoxious sites that pop up dialogs when they think you're about to leave, asking you to subscribe to their email newsletter? Well that won't do for Scripting News readers who are a discerning lot, very loyal, but that wouldn't last long if I did rude stuff like that. So here I am at the bottom of the page quietly encouraging you to sign up for the nightly email. It's got everything from the previous day on Scripting, plus the contents of the linkblog and who knows what else we'll get in there. People really love it. I wish I had done it sooner. And every email has an unsub link so if you want to get out, you can, easily -- no questions asked, and no follow-ups. Go ahead and do it, you won't be sorry! :-)