crowning
Well-known member
Over there I wanted to explain sergey461 how open source development works with a little story, but it got a bit lengthy so I decided to give it its own thread.
Here we go:
[ quote from there ]
------------------------------------------------------------------
Let me explain UdjinM6 's answer with a little story:
Last year I discovered Dash (Darkcoin back then). I liked the concept, the openness of its developer, and the fact that you could still mine it with a modest profit.
The base technology was quite advanced, a bit adventurous at times, but with a clear development direction, a fact which was lacking with my "main" coin at that time, Litecoin.
What I didn't like at all was that it was still using the original Bitcoin wallet, which was lacking a lot (feature wise) and looked rather un-sexy.
I decided to develop my own wallet. In Java, because that's the language I use in my professional "other" life.
After a couple of weeks and iterations of my wallet I gave up, mainly because the C++ codebase changed THAT much every other day that most of the time I had to catch up with Evan's changes instead of developing my wallet.
I didn't want to develop in C++ (I was quit good at C++ ages ago, but my last C++ project before switching to Java was back in 1996, so I felt too out-of-loop to contribute anything useful), so I started to post development requests over at the old Darkcoin Jira, which were liked by the community, but never got implemented. Not because Evan was too lazy or didn't like the ideas, but he had other priorities and a day only has 24 hours.
At some point I figured instead of bugging Evan every other day I could use that time to actually implement the stuff I wanted.
Requirements? Use cases? Someone to tell you what to do, and how to do it? Specification? Design?
Fuck it.
I want THAT button, HERE on this page, and it should do THIS and THAT. And I want it NOW.
I had to learn some minor things and tools I had never used before, though:
No release plan. No design papers. No meetings. Maybe a reply to the request with change proposals, or pointers where I messed things up.
Do.
Publish.
Discuss.
Not the other way around. In open source, when you start with the "discussion" part, almost always nothing will ever be done at all because everyone has an opinion, some even more. Too much time and nerves wasted in discussions instead of doing things.
What if you invested your time to implemented something and it doesn't get accepted? Live with it, life goes on.
Is this the best way to develop software? Probably not.
But it works and produces results. That's what counts.
Here we go:
[ quote from there ]
------------------------------------------------------------------
Let me explain UdjinM6 's answer with a little story:
Last year I discovered Dash (Darkcoin back then). I liked the concept, the openness of its developer, and the fact that you could still mine it with a modest profit.
The base technology was quite advanced, a bit adventurous at times, but with a clear development direction, a fact which was lacking with my "main" coin at that time, Litecoin.
What I didn't like at all was that it was still using the original Bitcoin wallet, which was lacking a lot (feature wise) and looked rather un-sexy.
I decided to develop my own wallet. In Java, because that's the language I use in my professional "other" life.
After a couple of weeks and iterations of my wallet I gave up, mainly because the C++ codebase changed THAT much every other day that most of the time I had to catch up with Evan's changes instead of developing my wallet.
I didn't want to develop in C++ (I was quit good at C++ ages ago, but my last C++ project before switching to Java was back in 1996, so I felt too out-of-loop to contribute anything useful), so I started to post development requests over at the old Darkcoin Jira, which were liked by the community, but never got implemented. Not because Evan was too lazy or didn't like the ideas, but he had other priorities and a day only has 24 hours.
At some point I figured instead of bugging Evan every other day I could use that time to actually implement the stuff I wanted.
Requirements? Use cases? Someone to tell you what to do, and how to do it? Specification? Design?
Fuck it.
I want THAT button, HERE on this page, and it should do THIS and THAT. And I want it NOW.
I had to learn some minor things and tools I had never used before, though:
- Github? What's that? How can I clone a repository? How can I create a branch? What's a pull request? Why do usable Git-GUIs always lack the functions I need but offer everything else? What's bigger, the number of stars of the known universe or the possible permutations of git command-line parameters?
- Qt? Well, it's got an API with 1209 classes (YES, I've counted them. Twice!). First experience was that what you need is always in some other class, and the results were something which were almost, but not quite, entirely unlike what I wanted. Times operating systems it supports.
- Boost library? Probably (I stopped counting somewhere) even more classes. Lots of them non-trivial. But a great toolset to solve problems. And an even greater toolset to create completely new problems, especially when you have no plan what you're doing.
- Gitian? One of coolest tools I've ever seen. Wicked. I'm still undecided whether the guy who created it is a genius or completely nuts. Probably both. Not hard to set up if you have a week or two of spare time.
No release plan. No design papers. No meetings. Maybe a reply to the request with change proposals, or pointers where I messed things up.
Do.
Publish.
Discuss.
Not the other way around. In open source, when you start with the "discussion" part, almost always nothing will ever be done at all because everyone has an opinion, some even more. Too much time and nerves wasted in discussions instead of doing things.
What if you invested your time to implemented something and it doesn't get accepted? Live with it, life goes on.
Is this the best way to develop software? Probably not.
But it works and produces results. That's what counts.
Last edited by a moderator: