I'd say the biggest change in the development methodology happened when Bertrand Serlet was replaced with Craig Federighi.
With Bertrand, we would move in giant monolithic releases where every group would just dump in whatever they had ready and the whole thing would get released with nightly builds. With SnowLeopard in particular, I remember three dozen releases in a row where Xcode was unusable due to obj-c garbage collection issues. Random stuff you didn't expect like CoreGraphics would have showstopper issues and then we'd report it and it would get fixed by the next week.
This resulted in extremely late releases that had a ton of bugs that we piled patches onto as time went on.
Craig moved the organization onto a sprint system, where we would develop new features for 2 weeks and then spend a week fixing bugs. After 10 or 12 or 16 of these cycles, we would deem it ready and ship it out.
I felt this produced more stable but more conservative software. It seemed like giant rewrites and massive features would be very difficult to introduce and if they did get done, wouldn't happen until two thirds or so into the release cycle.
On the other hand, Craig has consistently been able to release on time with most of the features promised.
I was only there up to the release of Lion (the first Craig release), so I don't know how updates and patches worked from then on. Maybe they're worse now.
But I've been using OS X all this time, and honestly I don't think it's any worse than before.
What has changed is that releases and features happen more often. Tiger and Leopard had a good 2 years to mature and get patches while their delayed successors missed target dates. In the meantime they stagnated with ancient unix tools, safari build, QuickTime frameworks, graphics drivers etc.
They felt stable because they were just old, sort of like Debian stable. Meanwhile, the development versions of Leopard and Snow Leopard (the two I spent most of my career at Apple developing) were downright horrible and unreleasable. Each of those releases went gold and had an almost immediate .1 release to fix glaring issues.
It's just that you remember them better because they had a longer history as a stable legacy OS than the modern versions.
Does this tell us anything about the state of modern commercial OS development? Users like stability and predictability in their software. Sure, they like new whizz-bang as well, but that excitement lasts for a week after you buy a new machine, and then they want stability every day for years.
That conflicts with commercial pressures to sell Shiny New Things every few months. Flat icons? Let's make them skeuomorphic. Skeuomorphic icons? Let's make them flat! Tabs are stupid, let's make them all windows. Windows are stupid, let's make them all tabs! Multitasking is great, let's have more dashboards. Single-tasking is great, let's have more fullscreen! And so on and so forth, rinse and repeat.
I think hardware waves used to hide most of this game, since every year new hardware was so much more powerful than before, you could justify this constant churning as "adding more stuff". This has not really been true on the desktop for almost a decade now, so the long-term patterns emerge and they are quite ugly to see.
My guess the other problem is simply this -- they hired so many developers, designers, managers. They produced a great stable OS, worked hard, then it was making billions of dollars. Ok, what next? Institute 4 day weeks? (maybe not a bad idea, but I am being hyperbolic here a bit).
So there is perhaps some pressure from the inside to develop new features. Designers say "flat is best now" so they get to work and feel busy. Developers want to build the next internal restructuring. Managers probably want to be responsible for some new awesome feature and seal their legacy.
It's really a business problem. Once you have a successful high margin product, investors expect you to continue making those numbers. If you sit on your duff then competitors will catch up and you find yourself in a low margin commodity market.
But is it isn't always obvious what to develop, especially once the low hanging fruit is gone. Sometimes there isn't a right answer and the market is simply mature enough that it's destined to become a commodity market.
And if you can't find something good to do, people have an aversion to doing nothing. So instead they do something bad.
I wish Apple had instead focused, for the whole year, on getting iCloud Photos 100% right. Unlike "flat" redesigns, this could even have turned into passive income for Apple. It hasn't even shipped on OS X and I've already given up on it.
If they'd just frozen OS X at 10.9, everyone could still work on cloud functionality for years before they'd be "finished".
Oh yeah, these pressures are both internal and external. There is a reason concepts like NIH, bike-shedding and "reinventing the wheel" are endemic problems in the software world. I guess we're just seeing that Apple is not immune from them, after all.
After years of linux use, I was always excited to see new releases, and how it was catching up with Windows and OSX. Ubuntu by version 10.4 was great, and I loved it, but then I hit the upgrade button and it borked the install (actually that happened a lot before 10.4, with various distributions).
Nowadays I am very wary of system upgrades, because more likely than not something won't work and I can't be bothered to reinstall everything the way I like it.
Ten years ago I enjoyed installing the various flavour of Linux and seeing what new shiny whizz-bang they contained - now I see it for what it is: some novelty eye candy, that rarely adds any real usability). Now I prefer rolling releases, and I am using XFCE, as it is basic and works.
The thing is, it has taken me dozens of installs of Linux to realize that the new shiny whizz-bang shiny features are usually a lot of crap, and my guess is that most "normal" users are still at the stage where shiny is far more exciting than stable. I would expect that Apple fans are even more geared to that attitude. Shinny new crap is what sells, not stable and boring (how many people do you know that use Debian stable, and compare that to Ubuntu users).
It's also the same reason why Debian and RHEL/CentOS and SUSE are more likely to be found in big enterprises (and/or government/military agencies) than Ubuntu or Fedora or openSUSE or Arch or whatever. Those sorts of users need things to stay consistent. NASA would rather install Debian Stable on the International Space Station and stick with that release (along with perhaps security patches and bugfixes) for half a decade or more than go with Ubuntu and have to biannually retrain its astronauts with every LTS release (and deal with installing the new release on computers that are perpetually falling around Earth at high speeds in the first place). Granted, that's a bit of an exaggeration (Unity isn't that volatile), but I'm willing to bet it factored into NASA's decision to use Debian rather heavily (for example).
I definitely second the preference for rolling releases, however, though not nearly at the pace of, say, Arch or Debian Sid. I run Slackware-current on a couple of my desktops, and I'll probably end up switching to the Tumbleweed repos on my openSUSE-running laptop very soon. Having to deal with two different levels of upgrades is annoying, but so is things spontaneously breaking because changes weren't adequately tested; openSUSE Tumbleweed and (interestingly, thanks to Slackware's conservatism when it comes to software versions) Slackware-current seem to be good balances between those two extremes.
hope marco, geoff and others keep writing these articles so that eventually tim or someone sees one and shakes things up. pressure from the bottom has not worked so far
Then one day a fortnight ago, I chanced upon another solution. Some people are speculating that because the WiFi signals is clashing with Bluetooth signals as they are both in 2.4 GHz, its affecting the WiFi. I was using Apple Wireless Keyboard & Touchpad. I have friend who had similar setup who seems to have the same issue.
So the next day, I spent 464 USD just to upgrade my router, get a wired Keyboard and a wired Mouse.
I have definitely splurged on these hardwares but at this point I am so frustrated and desperate that I need to make sure any hardware issue is out of the question. These are the only variables I can control, anything else felt hopeless.
I then jumped on 5 GHz WiFi and stop using bluetooth. My WiFi situation have improved a lot since then. Not perfect, but not un-usable.
The point is that I could have saved those money. To spend so as to fix a bug felt so Window'ish. It use to just work, and glitch are bearable, now I always worry of upgrading.
Anyway, those money could have went into buying Apple stuff.
I also read somewhere it was related to Handover protocol using the same bandwidth as wifi. This sounds more plausible. Then having bluetooth + regular wifi + Handover wifi is too much and the connexion suffers. I which case there's not much Apple can do unfortunately, except rethink the whole stuff.
I'd say in any case the future in that matter doesn't look bright.
Maybe I'm just not hitting core features with OSX 10.10, but the features I'm using seem fine. And not seeing stability issues with third-party software.
Now, I know some people will really want tags and I remember them spending a bunch of time in the keynote talking about them but I'm pretty sure I've never used them. It's not a bad feature… I guess it's nice and I bet a lot of people use it, but I would prefer if it was built on top of a more solid foundation.
I don't think anyone but management ever really wanted tags.
Folders allow for a simple hierarchical navigation option and allow you to preserve "structure" when round-tripping resources the rely on nested folders in and out of a cloud service. It allows for strong naming and namespaces.
Tags can be user-supplied, crowd-supplied, or even through AI/expert system, and allow for cross-cutting exploration when involving stuff that can't be indexed like text. (Although even documents benefit from tags to ease finding them again when there's a haystack)
Tags require more effort to maintain but are essential when you are dealing with a complex collection.
But there is no way to implement user-supplied or crowd-supplied tags when you are practically limited to the seven colours used for tagging, and it only works if you can even remember which colour is used for which tag.
That shouldn't be possible. Crash the browser yes, not the whole OS.
I was about to take my laptop in to see if it was a hardware issue when a coworker pointed me to a forum where someone suggested turning off automatic graphics switching. I did that about two weeks ago, and since then I haven't had a single occurrence of the issue. You may want to try the same thing to see if it helps.
Plus, the wifi fiasco, over which more than one person should have been fired.
I am barely sticking with Apple for now, mostly because in startups it is the default, but I don't plan to replace my apple equipment with more apple products.
wait, this is causing friction?
they fired forstall to get total gleichschaltung and now ppl elsewhere are revolting? i hope this'll come to fruits.
this whole cozy-collaboration-and-nobody-saying-no thing has to stop.
With fortnightly builds which are only then released to Engineering, if that is now what is happening, there will be massive instability every 2 weeks, until the final round of bug fixing cycle stops all features being added.
Which can't finish in time because the OS has to be released at an Apple event. Except for 10.0 when the date was known months in advance the old OS cycles were released when ready ( when show stoppers were 0). Of course that did lead to some wrangling about what a show stopper was, but consider if iOS 8 was not released with the HealthKit bugs, and other major issues, and instead we got what was in iOs 8.1, or 10.1 instead of 10.0.
Still some issues but mostly robust. Apple needs to decouple software from hardware releases.
Agreed. Yosemite has been flat out the best OS X version I used. Zero bug except a few Airplay issues. I'm even using beta builds for production, this thing is that stable.
I'm suspecting that Marco's point shows how a maturing part of the developer/consumer now takes a larger mindshare. Not a bad thing, it's just that it doesn't tell much on the product.
edit: Marco says this gets him 7.8m/s traffic, so there has to be something for _many_ here.
I, for one, would wish Mr. Federighi would push out a Snow Yosemite. No new features, simply bugfixing. I have taken to simply posting screenshots on my blog about various AppleQA issues. I wish there was a way to really make a difference, god know I'm fanatical enough about wanting Apple stuff to just work.
I've noticed this problem too in Agile shops. Small iterations happen fast on well scheduled. But big new efforts tend to be like swimming up-river. Whatever comes after Agile is probably going to formalize a long-track parallel cadence for a dedicated team to grind away on. Then once that's released it goes into the normal sprint cadence.
It seems to usually be "solved" right now by lots of weeping, halting production and blowing up of anybody else's schedule.
That seems to be a not-that-uncommon practice in Agile/Lean environments with the resources to implement it already (you don't see a lot of coverage of it in books about "Agile" software methods specifically, though I've seen considerable coverage of it in "Lean" software development books -- which tend to address the kind of pragmatic metamethodology the Agile manifesto calls for, while "Agile" books, ironically, tend to focus on more on narrow prescriptive methodologies, particularly Scrum and close variants.)
The immediate and longer-term (or multiple potential solutions with different risk profiles without a strict "this one is for now, this one is the long term objective solution" division) in parallel thing that Google has done in lots of areas for a long time (and people outside often question with "why is Google doing both X and Y when they have overlapping use cases".)