Why Your Software Project Is Failing
An anonymous reader writes: At OSCON this year, Red Hat's Tom Callaway gave a talk entitled "This is Why You Fail: The Avoidable Mistakes Open Source Projects STILL Make." In 2009, Callaway was starting to work on the Chromium project—and to say it wasn't a pleasant experience was the biggest understatement Callaway made in his talk. Callaway said he likes challenges, but he felt buried by the project, and reached a point where he thought he should just quit his work. (Callaway said it's important to note that Chromium's code is not bad code; it's just a lot of code and a lot of code that Google didn't write.) This was making Callaway really frustrated, and people wanted to know what was upsetting him. Callaway wanted to be able to better explain his frustration, so he crafted this list which he called his "Points of Fail."
"he should jut quite his work"
not a lot, just a little
His list isn't particularly insightful, just generally common-sense. Some of his items are rather self-serving and is funny coming from a Red Hat employee.
If more than 50 percent of your contributors work for one company
If you don't have governance or you depend only on the company that released the code for governance
What's wrong with open sourcing previously closed source projects?
I guess linux fails since Linus wrote his own source control for it.
If we're going to talk about Callaway's Points of Fail, and create a link in the Slashdot summary that *looks* like it takes you to that list, then perhaps there should actually be a link to the list.
Callaway's original Points of Fail blog post.
You know, instead of the usual Slashdot way of pointing to an article wrapper that talks briefly about some of the points and then eventually links to the real list.
~Idarubicin
His list, instead of the link to a blog with an article about the list. That blog post is interesting - though the picture of the author scratching is just weird. Was that taken at a lice convention?
Apparently editing the summaries is a challenge too.
This bug is critical, I am posting the issue for several reasons:
âWe're not jerks
https://github.com/dotnet/core...
>> 1) If your codebase is too big, it's going to limit who's going to be able to download your code.
>> 2) There is no good reason in 2015 for a FOSS project to not have public source control. This helps people contribute and determine the health of your project based on the date of the last commit.
>> 3) If your source control has no web viewer and/or no documentation, these two are obvious things to have
>> 4) Code that doesn't build is worse than no code! You need documentation on how to build the project from the source.
>> 5) Use build tools
>> 6) Bundling is not going not be maintainable. Bundling leads to forking.
>> 7) Forcing people to install only in a specific directory
My first thought on reading this is that this guy started coding this year. #1-3 is solved by using GitHub, TFS online or one of the popular choices most FOSS projects already seem to use. (e.g. How would an experienced developer get these problems in the first place?) #4-6 are entry-level build issues. #7 refers to a best practice (let people pick their install directory) that's been commonplace in the industry for at least 15 years.
I see he's employed by Red Hat. Does this list as news suggest that Red Hat's internal development processes are immature too?
If your code depends on Microsoft Visual Anything (you get 100 points of fail)
Riiiiight. Like there are _totally_ no highly successful open source .NET or Windows native C/C++ projects out there.
We really need to get past this whole neckbeardy thing of thinking that using only 30 year old editors as your IDE is something real professionals actually do.
He sounds like another text-only monkey. He is of the generation that thinks that code still needs to be written by hand. Basically, he is doesn't know why is incompetent and he is proud of it.
Any guest worker system is indistinguishable from indentured servitude.
"How would an experienced developer get these problems in the first place?"
A lot of projects do not follow widely-accepted best practices... even if they are experienced... and that is a problem!
A remarkable number of OSS projects fail to have a public source control system (#2). That includes many established projects that everyone depends on. Actually, a number of OSS projects - and projects that people THINK are OSS but are not (because they have no license) - fail many of these points. It's not that Red Hat's internal processes are immature; Tom was trying to bring in software from someone else (Google in this case) and was fed up by the poor practices from people who should know better.
Yes, #7 refers to a best practice (let people pick their install directory) that's been around for at least 20 years and probably much longer, but it's still widely NOT followed.
Anyway, that's Tom's point; there are a lot of widely-accepted best practices that are NOT followed, and that needs to change.
- David A. Wheeler (see my Secure Programming HOWTO)
As a software dev for closed source, our problems are creeping into open source at an alarming rate. Standups, Kanban, Scrum, swim lanes, and other political middle management bullshit is making it harder and harder to as theo de raadt once said, "shut up and hack."
The other issue is runaway devs. Gnome and KDE turned into piss pots almost overnight because they followed lockstep with whatever was trending. gnome grew hotspots that were clickable and draggable in an attempt to appeal to tablets, and KDE's widget framework turned into a swirling vortex of lights and colours that chewed through ram like none other. And the "fuck it lets move on" mentality has got to stop. Pottering epitomizes the swinging dick Linus so rightly kicked after his team was called out for set it and forget it code that ultimately broke more things and didnt play nice.
bottom line: dont lose focus in stability and function.
Good people go to bed earlier.
I saw it on the Reg.
putting the 'B' in LGBTQ+
I can't believe the billions of bits that died in the production and subsequent redistribution of this article. We're all dumber now for reading it.
I shall now drown my sorry in beer to see if I can't placate the inexorable struggle of those brain cells trying to make sense of this diarrhea and those others that are saying "WTF, Why did you read this?!? This is another let me share a bunch of drivel shit article. It's like Show and Tell in Kindergarten, just ignore it!"
Harrison's Postulate - "For every action there is an equal and opposite criticism"
The summary starts with:
"At OSCON this year, Red Hat's Tom Callaway gave a talk [...]"
The summary has a link, which points to the article, which says:
"At OSCON this year, Red Hat's Tom Callaway gave a talk [...] My favorite part of this talk was Callaway's passion for the items on the list."
So where is the video. The list felt a bit bland so I also got the notion that the video would be more informative.
Your software project is failing because you're not using SCRUM!
SCRUM! will solve all your problem!
If you're not using SCRUM! you're DOOMED! DOOMED! I tell you!
Of course, the software project fails due to lack of quality assurance.
Like the Microsoft standard - end users are the QA team (send us the crash report, pls..)
I'm trying to set up a sharded mongodb cluster at work. Mongodb seems to be actively hostile to my finding *previous* manuals - I'm on CentOS 6, which prepackages 2.4, and all I've been able to find is the manual for 3.0.4, which does not do me a lot of good, given the changes they've made.
So, as the subject of the OP said about documentation, make sure folks can FIND PREVIOUS RELEASE documentation.
Oh, yes... and more broadly, DO NOT EVER make changes in a subrelease that breaks the previously running software (I remember python 10 years ago....), nor, if it's bundled, DO NOT include, in a subrelease update, a package updated a full release that breaks everything currently running (I'm looking at you, EPEL, with torque going from 2.5 to 4.2 a couple months ago....)
mark
This is a checklist from any decent software project management book. Here's a good one written over 40 years ago:
Mythical Man Month
And the issue of managing a large code base can be handled by a modern VCS system like Perforce that let's fetch and work with only the portion of the code base you're interested in.
Get back to coding! *whipcrack*
"You've written your own source control for this code [ +30 points of FAIL ]"
Here is a video of Tom giving roughly the same talk at the Southeastern Linuxfest in 2011. https://www.youtube.com/watch?...
I wanted to run my own social networking site just for me and my friends using a FOSS project, so I was excited about Diaspora, then I saw that it requires Node.js. I have no interest in setting my server up for that. I imagine this selection was made because developers think Ruby is cool and PHP is boring and lame. Unfortunately, whatever the justification was, to make Diaspora work you need to have, you know, Diasporas, but if the only people using the project are those that manage their own Node.js server, then the already puny market size of available Diasporas has just shrunk by several orders of magnitude. It really needed to be a project that could be installed on any generic LAMP server, but the developers are so rarely interested in this boring aspect (this is actually the case across many engineering fields, it's why companies hire marketers) that left to manage their own projects they fail to achieve their stated goals.
So I took a look at GNU Social, which is written in PHP. Unfortunately, they also fail the marketing test. The project seemed to revolve around making a 'federated' social networking system. However, the actual features of the social networking seemed to be trumped by trying to make the federated system work. From a marketing perspective, they put the cart before the horse. How many users want a circa 2009 facebook clone? I bet a fairly high number, but GNU Social doesn't even offer that level of functionality. The 'federation' of the system should be viewed more as a distribution element, so, you know, before going to distribution, you should have a product that people want to distribute, and GNU Social is not that.
I once took an excursion to Reddit, and later HN. Unlimited up/down voting sucks when dealing with a hive-mind.
Headline contains the word "your" and is therefore clickbait.
systemd is Roko's Basilisk.
And not just software. Look at security as well. And so many other computer-related areas.
For me it's more like ... someone "learned" one way of handing it when s/he was working ALONE.
Then that person never learned that the practices need to be changed when you are part of a TEAM.
And releasing your code to the public is being part of a team.
My first thought on reading this is that this guy started coding this year. #1-3 is solved by using GitHub
I struggled to find what in the list actually applied to Chromium - However the one thing that definitely applies to Chromium is the massive code base... Chromium source really is fucking massive (even if you just clone with depth=1) and it takes a fuck load of time to do your first compile.
I really don't see how using one git host over another is going to solve that, once the host has reasonable resources (pretty easy in this day and age) then the users connection is the bottle neck, and it makes the build process slow... this creates a significant barrier for contributors. I don't particularly like the idea of a massive code base, it's well known that more code == more bugs, and it just makes it harder to comprehend the whole thing... I don't really know if it's necessary from chromium or if it's just grown large with the speed of development, i'd like to know if anyone has some insight into this.
this a slow news day? The list was crafted in 2009!
Political debates have me rolling my eyes so much I think I got optical whiplash. I should sue. - Foamy The Squirrel
That's a problem with human nature, not just devs. We are not Vulcans. Humans are impatient, egotistical, fixate on the wrong factors, and often just plain random; and most don't know it or care.
I know some well-educated people who are complete idiots outside of their narrow specialty. I'm probably an idiot also in ways I don't even realize (please don't educate me in replies). My head-model of the world is perfectly logical and consistent to me, but it's probably highly lossy against the real world.
Gee, it's almost as if we are merely upright apes who happen to be able to talk and write. (I would have said "hairless", but I'm hairier than the orangutans I see in the zoo.) They fling poo, we fling nukes.
Table-ized A.I.
== Size ==
* The source code is more than 100 MB. [ +5 points of FAIL ]
* If the source code also exceeds 100 MB when it is compressed [ +5 points of FAIL ]
125372299 Jul 22 00:36 linux-4.1.3.tar.gz
== Source Control ==
* You've written your own source control for this code [ +30 points of FAIL ]
git was written originally for Linux kernel!
== Building From Source ==
* Your source is configured with a handwritten shell script [ +10 points of FAIL ]
Even worse: handwritten C program: scripts/kconfig/mconf that is compiled and run by "make menuconfig".
== Bundling ==
* Your source only comes with other code projects that it depends on [ +20 points of FAIL ]
* If you have modified those other bundled code bits [ +40 points of FAIL ]
Compression and encryption libraries, for example.
== Libraries ==
* Your code only builds static libraries [ +20 points of FAIL ]
* Your source does not try to use system libraries if present [ +20 points of FAIL ]
Not even glibc!
== Code Oddities ==
* Your code depends on specific compiler feature functionality [ +20 points of FAIL ]
Lots of places where gcc-specific code is used.
== Licensing ==
* Your code does not have per-file licensing [ +10 points of FAIL ]
=== FAIL METER ===
Total: 180, highest possible:
135+ points of FAIL: So much fail, your code should have its own reality TV show.
Pretty much off-topic: What is OSX .zip format, as opposed to .zip format? I don't think I have ever seen anything (software releases or other) that I'd know was a "special" OS X zip.
That list is well out of date. The most recent version is here.
== Size == * If the source code also exceeds 100 MB when it is compressed [ +5 points of FAIL ] 125372299 Jul 22 00:36 linux-4.1.3.tar.gz
FAIL. linux-4.1.3.tar.xz 22-Jul-2015 00:36 79M [ -5 points of FAIL]
== Source Control == * You've written your own source control for this code [ +30 points of FAIL ]
FAIL Like quoting the largest archive choice for the source code, you choose the wrong meaning of "own". That's not the meaning implicit in Tom's list - nor does it fit his reasoning (using an obscure versioning system limits use and development).
"There is no publicly available source control (e.g. cvs, svn, bzr, git)" . [ -30 points of FAIL]
== Building From Source == * Your source is configured with a handwritten shell script [ +10 points of FAIL ]
FAIL. It's not handwritten. It could be. There's difference. [ -10 points of FAIL]
Even worse: handwritten C program: scripts/kconfig/mconf.c that is compiled and run by "make menuconfig".
FAIL, most source code is handwritten. C source is not a script
== Libraries == * Your code only builds static libraries [ +20 points of FAIL ]
FAIL Demonstrably Linux supports dynamic libraries and can (often is) built without static libraries only. [ -20 points of FAIL]
* Your source does not try to use system libraries if present [ +20 points of FAIL ]
FAIL. Unless you can produce a citation that shows that Linux will try and use system libraries when the same libraries have been statically compiled (yes, even glibc). [ -20 points of FAIL]
== Code Oddities == * Your code depends on specific compiler feature functionality [ +20 points of FAIL ]
FAIL. If that were the case gcc would be the only possible compiler. It's demonstrably not. [ -20 points of FAIL]
== Licensing == * Your code does not have per-file licensing [ +10 points of FAIL ]
FAIL. Unless you've got a citation for that. I'm sure M$ would love to hear of this invalidation of the kernel license. [ -10 points of FAIL]
=== FAIL METER === Total: 180, highest possible: 135+ points of FAIL: So much fail, your code should have its own reality TV show.
Let me fix that for you:-
=== FAIL METER ===
20 points of FAIL
5-25 points of FAIL: You're probably doing okay, but you could be better. (um, maybe Linux is doing OK - one of two people use it)
Your score:-
=== FAIL METER ===
115 points of FAIL
95-130 points of FAIL: HONK HONK. THE FAILBOAT HAS ARRIVED!
I should have put large <humour> ... </humour> tags around my comment.
I found quite ironic that a project that could have been _formally _ assigned so many fail points has not failed in any meaningful sense of fail.
I should have put large <humour> ... </humour> tags around my comment.
I found quite ironic that a project that could have been _formally _ assigned so many fail points has not failed in any meaningful sense of fail. If were to look at my posting history my reply was notably gentle.
I figured it twelve to a dozen on whether you were taking the piss (that's Oz-speak for good clean fun). Most of the fail points you gave had already been made in the comments on the old version of the list - including some truly brainless one's you missed (no documentation, no website, no bug tracker).
Humour tags would have just spoiled the fun. Gotta think of the larger audience. [smile]
For a good laugh at mega-TV-series FAILS - one of our consultants sent me a link to this. (I knew there was a reason we pay him the big bucks) We need a bigger FAIL index
Nowhere in the list does QUALITY come into play aside from having a bug tracking system. Needs to add "No publicly transparent process in place for bug fixing [ +100 points of FAIL ]" and also "New features always take precedence over bug fixing [ +50 points of FAIL ]". I guess for both open and closed source software projects quality is still considered optional and the first thing to get crossed off the list. Sadly, users put up with that. I also wonder how the size limit is measured. Does that exclude code comments? I like code that has a lot of comments explaining in plain simple language what the next 3 to 5 lines of code do. It is much easier to decipher than trying to compile a programming language intended for machines in my head. Lastly, that list arrogantly assumes that there is no open source software created on Windows and for Windows. Even using closed source runtimes that are freely available and freely distributable are not a problem. In the end one big metric for success is always ROI. That applies to open or closed source applications. If it is a pain to install and use forget about it. So let me propose one more thing for the list: Not providing a commonly used binary package format for your software for the targeted platform (most users don't want to deal with make install and compiler output!) [ +50 points of FAIL ]