Pages:
Author

Topic: Why can't the Bitcoin development be more like Linux? (Read 1823 times)

legendary
Activity: 1260
Merit: 1002
legendary
Activity: 1120
Merit: 1000
Linux core: millions of lines of code. Really many different things to take care of(new hardware coming up, security, process scheduling, etc...)

Bitcoin core: some thousands of lines, main challenge is security and make hard for the bad guys do bad things. No worry about hardware, process scheduling, interfaces with component, etc...



For me the order size of the projects(bitcoin core and Linux core) is enough to make impractical for them being developed in similar manner.
legendary
Activity: 3038
Merit: 1660
lose: unfind ... loose: untight
So do you think modern altcoins are generally going to be better off starting from scratch with their own new codebase rather than forking bitcoin and modifying it?

Well, one thing is for sure - the world already has enough clone-/scam-/inflata-coins. If a new coin project isn't going to do enough innovative stuff that starting from scracth would be preferable, then why bother?
sr. member
Activity: 280
Merit: 257
bluemeanie
it surprises many to learn that those protocols you mentioned were not developed in an 'open source' fashion, most of them were developed at DARPA.

-bm
legendary
Activity: 4214
Merit: 1313
What do you think?

I think there are several points here.

First the protocol.  Think about tcp/ip, smtp, dns, ssh, ftp, http, https, ssl, pop, ntp, telnet etc.  How many developers at the protocol level are there?  How often and how many changes are there to the protocol itself?  Very few.  So from a core protocol level, the changes should be very few indeed.

Next an implementation of the protocol.  Bitcoin core/bitcoind is a reference implementation of the protocol, albeit an important one, but there are other implementations and other developers working in the bitcoin ecosystem.  If you look at the entire ecosystem and compare it to the Linux ecosystem, then things change.  There is a lot of money and there are a lot of developers working on various facets (e.g. colored coins, bitcoinj, bitcoinjs, exchanges, wallets, and many, many more).  I don't think you can compare the Linux kernel with bitcoin core, they are different beasts.  For example, you can run bitcoin without bitcoin core.  You can run Unix without a Linux kernel, but I'd say you couldn't run Linux without a Linux kernel, it would be something else.  Just because there are fewer developers working on bitcoin core, doesn't mean there are not enough developers working on the ecosystem itself.

:-)
sr. member
Activity: 490
Merit: 280


What actually makes large scale open source development in bitcoin land difficult is the "bitcoin-core" isn't just the "kernel", it isn't even just a node, it isn't even just a node and wallet.  It is the kernel, node, wallet, and and RPC server rolled into this single tightly coupled (never a good idea in software development) unified blob of dense code.   Now I am going so say something very heretical to the followers of the Church of Latter Day Satoshis, Satoshi wasn't a very good software developer (or cryptographer).   .  He was a brilliant "idea guy".  Bitcoin as a concept was some amazing out of the box thinking and truly innovative.  The nuts and bolts of the first client however were a complete mess.   A lot of his early decisions have really hampered current day developers.  The developers can't easily make breaking changes and they need to ensure all future versions of the software are perfectly compatible with older versions of the software.   



So do you think modern altcoins are generally going to be better off starting from scratch with their own new codebase rather than forking bitcoin and modifying it? That is assuming of course that the developers are capable of doing something like that well.
sr. member
Activity: 280
Merit: 257
bluemeanie
Well, I resolved to read D&T completely through next time I encountered one of his posts and by golly I did it!

I do agree, there are special considerations here.  It's not entirely analogous to the Linux kernel.  I have thought about building a general purpose library for cryptocurrencies.  Were at a point where very clear patterns have emerged and we can somewhat standardize these problems.  Forking bitcoin-qt is just simply not practical at this point.  I think one of the progressions were going to see in this space is better basic technological components because clearly there is a significant demand for innovations and a lot of unique perspectives that reflect on technology, networking and economics.

-bm
donator
Activity: 1218
Merit: 1079
Gerald Davis
Why can't the Bitcoin development be more like Linux?

Linux has a huge development team. So many people take part in updating it. If you run Linux on your computer, you will know there are always updates. All these updates are created by the open source community. So why can't Bitcoin development be more like Linux?

What are we missing? Or maybe the development team will grow as big as the team of Linux?

What do you think?

Linux development doesn't deal with billions of dollars of a store of value system

Oh man...you have no idea what you are talking about don't you? Linux is fundation for huge part of internet as far as servers go. If it would have some critical issue, it would be disaster for servers, and anyone who uses linux based systems (hostings, banks etc.). I'd say linux is spine of Internet as far as software goes. Value that rests on linux fundation (only if you add banks that use it) is tens, hundreds or even thousands times larger than current worth of BTC. To that, add value of every other internet server (not server itself, but value of resources that are on that server) that is based on linux and you have value that you cant even pronounce.

I think you misunderstand.   All linux "nodes" don't need to run the same linux kernel.  Nothing bad happens if they run different versions or even completely incompatible linux kernels.   All bitcoin nodes, must at all times, run "bitcoin kernels" (the core protocol) with identical outputs to any input.  If some nodes decide chain A is the longest valid chain, and some nodes decide chain B is the longest valid chain well that would be a billion dollar problem.  Any deviation no matter how small would cause a catastrophic fork in the network.

What actually makes large scale open source development in bitcoin land difficult is the "bitcoin-core" isn't just the "kernel", it isn't even just a node, it isn't even just a node and wallet.  It is the kernel, node, wallet, and and RPC server rolled into this single tightly coupled (never a good idea in software development) unified blob of dense code.   Now I am going so say something very heretical to the followers of the Church of Latter Day Satoshis, Satoshi wasn't a very good software developer (or cryptographer).   .  He was a brilliant "idea guy".  Bitcoin as a concept was some amazing out of the box thinking and truly innovative.  The nuts and bolts of the first client however were a complete mess.   A lot of his early decisions have really hampered current day developers.  The developers can't easily make breaking changes and they need to ensure all future versions of the software are perfectly compatible with older versions of the software.  

The Linux equivalent would be if Linux didn't have a kernel and a series of packages and instead it was simply a multi GB single blob of code.  There was one repository and you had to use it all or use none of it.  If a single update on some package you weren't even using was updated well you had to download and install the new unified Linux software or remain out of date.  If the change was a breaking change you were required to upgrade or your server would be forked off the real internet.  I think you can how that might keep the Linux development team small and centralized.  That is how Bitcoin exists today.  Don't blame the current devs, just take a look at Satoshi's first client and you can see where that foundation was built.  The reality is the core protocol is never going to have more than a couple dozen developers.  The concepts are very difficult.  Most people (myself included) simply lack the competencies to do that kind of work.  The good news is you probably wouldn't need more than a couple dozen core developers if "core" actually meant the "core protocol" not "the core protocol, and a particular implementation a full node, an a particular implementation of a desktop wallet which uses that full node, and a particular implementation of an RPC server which allows direct integration at the node level".  What the core team could use is probably another couple hundred dedicated testers though.  If you are complaining about Bitcoin development and never run testnet for release candidate versions of clients well you have no room to complain.  

If the core protocol (the kernel if you will) was separated from the other functionality and developed as a smaller independent project it would be more manageable for a small dedicated core team.  This would be much like most "linux developers" aren't working on the linux kernel they are working on packages which rely on the linux kernel.  Today if you want to build a wallet you have three choices.  

The first would be to fork bitcoin-core and then keep it up to date until the end of time integrating all the changes to the mainline bitcoin-core; if you ever stop updating it then eventually it will be forked off the main network.  Also make sure that you all your future changes don't break compatibility with the mainline client.   

The second option would be to build a wallet front end which integrates with "bitcoin-core" node via RPC. Sadly some core functionality is missing so you this is less than optimal.  You will probably end up reimplementing a lot of low level functionality (like maintaining the UTXO) simply because what you need isn't available via the RPC calls.  This is arguably the safest option as the most it is the low level communications between nodes which need to be perfectly compatible and you would still be using bitcoin-core for that. 

The third option would be to build the core protocol, node, and wallet functionality from scratch.  Sounds easy but now make sure it is bit for bit compatible with bitcoin-core including handling of a million possible edge case scenarios (some of which haven't even occurred yet and the core team may not even be aware of).  Also make sure you re-implement all the bugs, weird design choices, and issues with third party packages (openssl encoding bugs, etc).  Have fun as not all of these are even well documented.   You should be a solid proponent of test driven development.   

Obviously none of those options are optimal.   However if you could just compile the bitcoin-kernel and consume that in your wallet or other bitcoin related service that would be better right?  It would be similar to how redhat consumes the linux kernel in their operating system.  Well that option requires breaking the "bitcoin-core" into components so the core protocol is an independent project.   It is a huge undertaking to decouple the kernel, node, wallet, and RPC server that Satoshi smashed together into a single unified blob of code, into separate projects which are still perfectly compatible with existing nodes.  That process has been painstakingly going on for years now and will probably take many years more.


sr. member
Activity: 406
Merit: 250
I don't really have an issue with the way it works now. The protocol is and should remain difficult to change. You could do a really cutting edge alt coin that way. The wisdom of crowds is a fascinating phenomenon.
legendary
Activity: 1512
Merit: 1012
Please ... don't compare an OS to a network  Roll Eyes
legendary
Activity: 1260
Merit: 1029
Why can't the Bitcoin development be more like Linux?

Linux has a huge development team. So many people take part in updating it. If you run Linux on your computer, you will know there are always updates. All these updates are created by the open source community. So why can't Bitcoin development be more like Linux?

What are we missing? Or maybe the development team will grow as big as the team of Linux?

What do you think?

Linux development doesn't deal with billions of dollars of a store of value system

Oh man...you have no idea what you are talking about don't you? Linux is fundation for huge part of internet as far as servers go. If it would have some critical issue, it would be disaster for servers, and anyone who uses linux based systems (hostings, banks etc.). I'd say linux is spine of Internet as far as software goes. Value that rests on linux fundation (only if you add banks that use it) is tens, hundreds or even thousands times larger than current worth of BTC. To that, add value of every other internet server (not server itself, but value of resources that are on that server) that is based on linux and you have value that you cant even pronounce.
hero member
Activity: 802
Merit: 1003
GCVMMWH
Why can't the Bitcoin development be more like Linux?

Linus Torvalds.
sr. member
Activity: 910
Merit: 253
Why can't the Bitcoin development be more like Linux?

Linux has a huge development team. So many people take part in updating it. If you run Linux on your computer, you will know there are always updates. All these updates are created by the open source community. So why can't Bitcoin development be more like Linux?

What are we missing? Or maybe the development team will grow as big as the team of Linux?

What do you think?

Linux development doesn't deal with billions of dollars of a store of value system
member
Activity: 71
Merit: 10
It would be awesome though.... coders all around the world constantly improving and enhancing Bitcoin. But the logistics would be a nightmare.
legendary
Activity: 910
Merit: 1000
★YoBit.Net★ 350+ Coins Exchange & Dice
sr. member
Activity: 280
Merit: 250
What are we missing?

Your contribution to the effort.

I wish I am a programmer, then I can help. But I am afraid I don't have the skill set to help.  Undecided
newbie
Activity: 26
Merit: 0
Why can't the Bitcoin development be more like Linux?

Linux has a huge development team. So many people take part in updating it. If you run Linux on your computer, you will know there are always updates. All these updates are created by the open source community. So why can't Bitcoin development be more like Linux?

What are we missing? Or maybe the development team will grow as big as the team of Linux?

Linux developers deal with a shared code, but not shared data (whatever is inside the computers running Linux).

Bitcoin developers deal with shared code and shared data (blockchain). You can modify and extend Bitcoind as much as you want, but other Bitcoind nodes would reject your custom transactions. Thus, room for experimenting development ideas easily is smaller as you are still bound to global Bitcoin protocol rules.

And then altcoins were born.
legendary
Activity: 3038
Merit: 1660
lose: unfind ... loose: untight
What are we missing?

Your contribution to the effort.
legendary
Activity: 4410
Merit: 4766
there is a team of bitcoin-core people.

I should have made my post more accurate. What I meant is Bitcoin-core development should be more like Linux kernel development.

in what way?
Pages:
Jump to: