|
|
Subscribe / Log in / New account

The costs of forks

The costs of forks

Posted Jun 20, 2015 2:54 UTC (Sat) by fandingo (guest, #67019)
In reply to: The costs of forks by angdraug
Parent article: The costs of forks

> Welcome to the real world. OpenStack is far from a shining example of technical perfection and open collaboration, but you're never gonna change anyone by demanding unconditional surrender to the absolute perfection. As I said, OpenStack community is dominated by commercial interests, and unlike unsponsored free software projects done by independent contributors on their own dime, commercial entities that miss deadlines eventually lose money and go out of business. And deadlines are the worst enemy of perfection. Because of that, ability to draw the "good enough" line at the right balance between quality and timeliness is the most important quality of any engineer, more so in software where the range of acceptable quality varies much wider than in, say, civil engineering.

And, yet, the Linux kernel project, which is overwhelming dominated by corporate contributors, doesn't have this sort of rubbish, even in isolated incidents. The sprawling, isolated, self-aggrandizing, profiteering nature of OpenStack development is unique among all past and present open source projects. Projects spin up with unclear definitions, and they expand to consolidate as much political power as possible. Isolating source code repositories, and more importantly, contributor relations and permissions to individual projects was a terrible mistake by OpenStack with expediency, once again, being the prime culprit. In OpenStack, so-called "velocity" seems to be the real development goal.

Here's a few genuine questions that I've alluded to in several of my comments:

1) Why isn't Fuel a strict consumer of modules in PO? Why was the code ever forked?

2) Presumably the answer to #1 includes something about lacking functionality or bugs. Why weren't they just fixed in PO?

3) Why are OpenStack developers so siloed in their own projects? Why don't they contribute across projects instead of forking?

4) As a follow-up to #3, why do OpenStack projects have these sorts of incompatibilities and diverging goals? (In particular, it's one thing to have differences while in development, but OpenStack seems to always have them in released code.)

5) Fuel seems to fundamentally be an expansion of what PO set out to do. Why was a separate project started, and why is it trying to "drink PO's milkshake?" Was there any consideration to expanding the goals of PO, rebranding it, and essentially making Fuel without the need to duplicate so much work?

6) What's the corporate alignment behind Fuel and PO? Who's sponsoring major portions of development? Which corporation(s) started Fuel? Did they have a beef with the corporation(s) behind PO, or more generally, what's their "angle?"

I guess my fundamental opinion is that it's always improper to do this sort of forking within a project. Whether it's the Linux Kernel mm and netdev maintainers or OpenStack Fuel and PO developers, they're fundamentally colleagues and should work towards a unified purpose. If the project in charge of Puppet modules isn't providing the modules the way the consumer wants, then either the consumer is doing it wrong or the producer has a fault design/implementation. The correct decision was always to do work directly within PO, and if the PO developers didn't want to follow your design, Fuel should've been modified to handle that. There shouldn't be Puppet module development in Fuel at all; it needs to be directly contributed to PO. That avoids all the fragmentation, all the stupid merging problems (changing folder structure? that's a paddlin'), and negotiation.

> Best of all, this interest is also very practical: in the space of 6 months Fuel has jumped from not being listed at all to #3 deployment tool used to install OpenStack, Fuel 6.1 contains 1995 bugfixes (compared to 232 in PO during Kilo cycle)

The very last thing I'm interested in seeing from the any OpenStack project or as a whole at this point is, "look at how much our expediency is paying off in the short-term!" This gets back to the political tensions and infighting: Is the goal to entirely displace PO? It sure seems like it, and you bugfix numbers suggest so. This seems like exactly what happened with KHTML. It's forked by Apple and renamed Webkit, which over a much longer timespan, saw essentially all (and overwhelmingly new) development go into Webkit and nothing flowing back to KHTML. I guess, at least, it wasn't another KDE project that ate their lunch and kicked them out of the club.

But, hey, I'm sure they'll be some new project (probably called Gasconade) that will usurp Fuel come the next blue moon.

Of course those bugfixes tilt in Fuel's favor: They're not freaking contributing their changes of forked PO code to PO! How many of those bugfixes would be more correctly categorized as fixes to PO?

A project with a Torvalds, van Rossum, or Poettering would never tolerate this sort of behavior. A submodule implementing their own incompatible fork of something contemporaneously provided is flatly unthinkable. They'd step up and require people to contribute to the lacking submodule directly. The difference is that those projects (and the vast majority of all open source projects) either maintain some independence at the top (eg. Torvalds is employed by the Linux Foundation) or strong commitment to sound engineering principles. Unfortunately, OpenStack is led by a cabal of corporations with extremely selfish, inimical goals.

I do want to end this comment by saying that, while I do use direct language and descriptive words, I do like OpenStack. I just wish that they'd slow down a little bit and congeal the whole project together better. It's getting so big, and you can tell that it's just the corporate sponsors behind development trying to differentiate what their spin can do and outmaneuver their fellow corporate sponsors. Overall, it's just disappointing that the project seems to be turning into a cesspool. I can say pretty confidently where many open source projects will be in 10 years, but I don't know whether OpenStack will establish a more solid base between projects, be a phoenix reborn as something else entirely, or be the abandoned shopping mall where you grew up.


to post comments

The costs of forks

Posted Jun 20, 2015 8:43 UTC (Sat) by dlang (guest, #313) [Link] (4 responses)

> And, yet, the Linux kernel project, which is overwhelming dominated by corporate contributors, doesn't have this sort of rubbish, even in isolated incidents.

umm, you haven't been watching linux development very long have you?

the kernel faces this sort of thing all the time. While the distros have cut down the number of patches they maintain from the linus kernel since the 2.4 days, they still maintain quite a few. And if you haven't noticed how some people dislike and distrust Ubuntu, RedHat and Oracle, go back and look again.

frankly, this is such a monstrous misstatement of thing that I didn't bother reading the rest of your post.

The costs of forks

Posted Jun 20, 2015 11:52 UTC (Sat) by fandingo (guest, #67019) [Link] (3 responses)

That's an entirely different situation. I'm talking about forked, incompatible code as part of the official code release, not what some random ISV decides to do. (If I were talking about that, surely what Android ISVs do is a better example, but of course, all that lives outside the official release bundle.) The code you describe lives outside the release branch of the source code. Even those ISVs don't have patches that does what Fuel does.

What Fuel is doing is akin to a file system shipping its own VFS or a wifi driver with its own netdev stack. That simply doesn't happen in Linux upstream. We can all imagine the rage and colorful language Linus would use to describe such a pull request.

The costs of forks

Posted Jun 20, 2015 22:04 UTC (Sat) by angdraug (subscriber, #7487) [Link]

Like most analogies, yours is deeply flawed on many levels. For starters, analogies are good for explaining novel concepts to novices, and misleading when examining fine nuances of concepts that your audience is at least as familiar with as you are. In an argument, all an analogy does is increase emotional temperature of the conversation. If that's what you're going for, you're on the wrong web site.

Fuel project isn't doing anything related to Puppet OpenStack that could be likened to replacing Linux kernel VFS layer. Puppet OpenStack is a collection of modules such as puppet-nova, puppet-neutron etc., the only common layer underneath these modules is Puppet itself, and we absolutely are not patching Puppet, just like we're not patching Ruby or Python interpreters that we're using to run our code.

The costs of forks

Posted Jun 25, 2015 12:37 UTC (Thu) by Funcan (subscriber, #44209) [Link] (1 responses)

There absolutely *were* multiple wifi stacks in kernel for ages, with incompatable userspace tools. Took ages to clean up. Ditto sound interfaces - OSS, ALSA, some other

The costs of forks

Posted Jun 25, 2015 17:06 UTC (Thu) by flussence (guest, #85566) [Link]

I guess the "some other" there is the Firewire audio stack, which IIRC is only accessible via the JACK daemon. On a similar tangent, there used to be two *normal* FW stacks until recently. And then there's USB, where device drivers can be written in-kernel and/or userspace, or bits of both at the same time...

The costs of forks

Posted Jun 21, 2015 1:20 UTC (Sun) by angdraug (subscriber, #7487) [Link]

Please start doing your own research. Answers to all your questions are right there in the thread on openstack-dev, the article that has summarized it, the comments here, or at most a quick google search away. If you're not interested in answers, please explicitly state that your questions are rhetorical. It would also be a good form to confirm whether or not you have a personal stake in this discussion, like I did in my first comment here. All that would help reassure me that you're genuinely interested in a two-way conversation and I shouldn't follow dlang's example and stop reading.

Why isn't Fuel a strict consumer of modules in PO? Why was the code ever forked?

The answer is right there in the comment you were replying to: deadlines.

Presumably the answer to #1 includes something about lacking functionality or bugs. Why weren't they just fixed in PO?

The answer is in one of my emails to the thread that were linked from the article above: additional effort that it would require from Fuel developers. Additional 5x to 10x times worth of effort, as I have illustrated in another email on that thread.

Why are OpenStack developers so siloed in their own projects? Why don't they contribute across projects instead of forking?

That is not true, and you would know that if you tried to confirm that accusation using Stackalytics, the online tool I linked in my previous comment. If you look at the top individual bug fixers in Kilo and check their commit statistics you'll find that the most active contributors have commits in dozens of projects outside of their main area of interest. OpenStack is complex, it takes time to learn even one component, so you can't blame less experienced contributors for sticking to the areas they know well.

Heck, if you bothered to RTFA you'd find the evidence of Fuel developers contributing to Puppet OpenStack in another linked email.

Fuel seems to fundamentally be an expansion of what PO set out to do. Why was a separate project started, and why is it trying to "drink PO's milkshake?"

No, it isn't. I already tried to explain that in another comment here. Just as Fuel is not just a GUI front-end to Puppet OpenStack, it's also not a replacement for Puppet OpenStack. The latter is a swiss army knife style collection of individual modules that allow you to set up individual OpenStack components in any way you like, and leave all the decisions and all the integration work up to you. The former is an integrated system that combines a local fork of the latter, a GUI, a great deal of orchestration logic, and a whole reference architectures guide's worth of configuration decisions that, all together, offers a completely different balance between flexibility and the effort and expertise required to get OpenStack up and running.

Was there any consideration to expanding the goals of PO, rebranding it, and essentially making Fuel without the need to duplicate so much work?

Wrong question. Turning Puppet OpenStack into what Fuel is now would have been a perversion of Puppet OpenStack purpose as it would severely narrow down the range of configurations it could support. Making Fuel out of just Puppet OpenStack without all the configuration choices, orchestration, UI, and operational tooling would have been impossible, see the code stats I've already posted here. A better question would have been, could the effort duplication specifically in the Puppet code of Fuel (fuel-library) be reduced? Maybe. Should the effort to reconcile fuel-library with upstream have been started earlier than 2014? I think so. Should "upstream first" have been the requirement from the very beginning? No, I don't believe that would have worked out at the time, due to the same expediency considerations that you chose to dismiss.

What's the corporate alignment behind Fuel and PO? Who's sponsoring major portions of development? Which corporation(s) started Fuel?

Are all those rhetorical questions? If you have time to write lengthy comments like this surely you have 5 minutes to find the answers on Stackalytics?

Did they have a beef with the corporation(s) behind PO, or more generally, what's their "angle?"

For someone who claims to use direct language, you sure chose a roundabout way to build up to this accusation. Is that why you're ignoring all technical reasons for the current situation? You think there's some sinister corporate conspiracy that hundreds of OpenStack contributors have been covering up all these years? Sorry, but the answer is no, I can't think of any real or imagined "beef" or "angle" that could have influenced that decision, it's always been a matter of expediency.

This gets back to the political tensions and infighting: Is the goal to entirely displace PO? It sure seems like it, and you bugfix numbers suggest so.

So far, the infighting has only been in your imagination, and I seriously don't appreciate your efforts to make the "political tensions" a reality by trying to invent reasons for Fuel and Puppet OpenStack to compete, when I have abundantly demonstrated (using bug numbers among other data) that collaboration is in both project's best interests, and key developers from both projects have publicly acknowledged the same and came up with process changes to improve that collaboration and eventually un-fork the projects.


Copyright © 2025, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds