I really want to like Bitcoin Unlimited...

Gavin Andresen

New Member
Dec 9, 2015
19
126
I love the idea of Bitcoin Unlimited, but after doing a quick code review I just can't recommend that people run it -- there are too many "bad code smells."

Examples:

https://github.com/gandrewstone/BitcoinUnlimited/commit/9b05e2e9f7eb4d8e847c57ae06d8bd34b1f03552

... which is a commit with title 'wip' (work in progress). Un-descriptive commit titles/messages are bad... as is committing a work in progress before it is finished.

Or commits which comment out code, which is, in general, bad practice (if code isn't needed it should be removed-- your version control system keeps old code if you change your mind and decide later if you need it).

The most critical commit:
https://github.com/gandrewstone/BitcoinUnlimited/commit/b126b10a1675c52acd0d7df857afe8057cfb6fb3

... doesn't seem to have any unit or regression tests. I would expect the commit message to at least say something about how the code was tested.

Andrew, do you have experience leading an open source software project? Ideally Bitcoin Unlimited would be lead by somebody who has a track record in projects that produce very high quality, reliable code (on time and under budget :) ) (and no, I'm not volunteering....)
 

Peter R

Well-Known Member
Aug 28, 2015
1,398
5,595
@Gavin Andresen

I am very happy to see your comments here!

We are holding elections for the leadership positions of President, Secretary, and Developer perhaps as early as January. Please consider running for President! As President you can lead the "high level" directions of this project (and point out things like you just did). [As "Developer" one would have more direct interaction with the code development process.]

Of course, the title of "Developer" doesn't mean that other developers can't contribute. We want as much help as we can get!!

http://www.bitcoinunlimited.info/articlesOfFederation
 

Matthew Light

Active Member
Dec 25, 2015
134
121
I disagree regarding whether to comment out or simply delete unused code. I will comment out code for a while to make sure that I don't have to go back to that area of code, then will eventually delete it later.

Using version control to find code that you deleted but want to use again is a very significant context-switching process and one that is often much more difficult than simply finding the piece you've commented out.

I would be interested to find out more about how BU has been tested though. I do prefer this approach over hard-coded limits as an eventual destination for how people ought to Bitcoin.
 
Last edited:

solex

Moderator
Staff member
Aug 22, 2015
1,558
4,693
@Gavin Andresen

Great to see you taking an interest in BU :)
Maybe you would consider inserting "first version" into your opening remark which will certainly be taken out of context and plastered into censored forums, where BU posts are already now being deleted. (pretty please).

Even if you don't want to lead the project, which is perfectly understandable, just having your occasional contribution would be excellent.

The community here is very concerned about what Jeff describes as an ECE, which is likely early next year, and would rather have a solution, even with cosmetic faults, available to the ecosystem, than have done nothing while the ECE takes its grip.
 

theZerg

Moderator
Staff member
Aug 28, 2015
1,012
2,327
Gavin,

Thank you for your interest in BU.

I respect that you choose to use the git source control in a different style than I do. You seem to prefer to do the work "offline" and then make a monolithic commit. I prefer to use local commits and branches to record the daily transformation of the code.

When I do a code review I then generate a multi-checkin diff.

Unless you can point to a compelling study that indicates that your technique is better, I ask that you have an open mind. I'm not convinced that my technique is best; its just what I'm trying out now.

Additionally, more significant comments exist in the larger checkins, and the commit that you cherry-picked happened when I was adding traffic shaping for my personal use -- before I realised that other people would appreciate the fix.


Secondly, I am creating this software with no full time developers, no paid developers, no budget, and no prior Bitcoin software experience. Its lucky that Bitcoin is a small project.

Somewhere in this total lack of time, I wrote the Articles of Federation, created the web site and all of the content on it, released the first version of the code, put what we are doing on a strong theoretical foundation (www.bitcoinunlimited.info/1txn), and celebrated Christmas :).

Pointing to a checkin and complaining about "bad smells" is extremely unproductive, rude, and conveys no actual information. Given your prior interaction with me in XT in regards to traffic shaping, I would ask you to read or at least skim this article about motivation (and how to motivate) OSS developers: http://l3d.cs.colorado.edu/~yunwen/papers/ICSE03.pdf. A key part of being part of an OSS project is motivating and encouraging contributions, not driving them off. Look at all the memes, commentary, and excitement about BU on Reddit and recognise that you have something to learn here.

I will share portions of my personal biography as part of my BUIP submission for office.

I have had a thread on this sub-forum requesting a code review for weeks. If you have a problem with some of the code, let's fix it (I know I do).

I hope that you choose to help us in this effort but ask that you do it productively.
 

Aquent

Active Member
Aug 19, 2015
252
667
Great smashing article today @Gavin Andresen and good to have you around. Maybe Jeff can do the volunteering? You run XT, Jeff runs BU... ;)

Beyond the code what you think of the BU concept @Gavin Andresen? I've tried to high level summarise it for the website thus:

"The Bitcoin Unlimited(BU) project seeks to provide a voice to all stakeholders in the Bitcoin ecosystem.

Every node operator or miner can currently choose their own blocksize limit by modifying their client. Bitcoin Unlimited makes the process easier by providing a configurable option of the blocksize limit for acceptance and generation via a GUI menu. Bitcoin Unlimited further provides a fail safe user configurable setting allowing you to accept a block larger than your maximum accepted blocksize by an N mb user chosen number if it is built upon a certain number of blocks deep in the chain.

By removing the blocksize limit from the protocol layer to the transport layer, Bitcoin Unlimited removes the only point of central control of the bitcoin economy - the blocksize limit - and returns it to the nodes and the miners. A decentralized emerging consensus will thus arise based on free market economics as the nodes/miners rally around focal/Schelling points creating in the process a living, breathing, entity which responds to demands in a free and decentralised fashion.

The theory is further supported by the evidence built over the past six years. The miners and node operators have until now been free to choose a soft limit which, when demand increased, has always been increased in a responsive and organic manner to the demands of the market. We can expect miners to continue in this tested and proven free market way by setting an initial limit of 2mb with an Nmb depth (hard limit) of perhaps 2mb and reject any blocksize of more than 4mb. As demand increases in a free market fashion, the limit can easily be increased to 3 or 4mb etc thus removing the centrally controlled properties of an unknowable equilibrium blocksize by allowing the free market in a decentralised fashion to arrive at the correct choice.

As a foundational principle, we assert that Bitcoin is and should be whatever its users define by the code they run, and the rules they vote for with their hash power."

And @theZerg I wouldn't take the points personally. I think Gavin is just trying to help by perhaps reminding us all that this has now become a serious project with actual and real users as well as the eyes of the world on it. That's a huge well done to everyone and a huge thank you @theZerg for spending so much time and effort on this and for making it all happen.
 
Last edited:

AdrianX

Well-Known Member
Aug 28, 2015
2,097
5,797
bitco.in
Thanks @Gavin Andresen

This comment clarified some thinking for me
Andrew, do you have experience leading an open source software project? Ideally Bitcoin Unlimited would be lead by somebody who has a track record in projects that produce very high quality, reliable code (on time and under budget :) ) (and no, I'm not volunteering....)
IMO Gavin is leading by giving an opinion his authority is reflected in his track record. It seems to me he is saying he doesn't want to lead as in being the manager who organize as in lead developer.

I'm cross posting this as it's relevant.
I feel "our irresolvable debate with the Blockstream Core folks" is symptomatic of a much wider struggle taking place in the world today. That is, the struggle between them and us, the makers and the takers. Politics is a PC term. It's about governance, power and control. Predation might be a better word.
.

It's my view that the next level of organization some how builds on community strengths as opposed to giving authority to a position and then collectively following the one who wields the power.

While I'm all in favour of the makers and doers having autonomy some how collective cooperation is needed to manage the process.

I'm a little put off by typical hierarchical power structure which inevitably attracts and falls victim to the manipulators.
 
Last edited:

dgmib

New Member
Dec 29, 2015
2
16
@theZerg

There's nothing wrong with doing lots of little commits or work-in-progress commits. But I think you'll find other developers hesitant to contribute to your project if you do it on the default branch.

Most successful open source projects on GitHub use the Gitflow Workflow. It's what most Bitcoin developers are used to, and it works well for projects with lots of contributers.

Basically the only change you need to make to your process is to do your little "work-in-progress" type commits on a separate branch from the default branch. Create a branch for each independent feature you're working on, and when the feature is ready to ship, create a pull request to merge your branch into the default branch. Pull requests on Github make for an excellent forum for other devs to comment on your work and give you feedback. When you're satisfied, merge the pull request.

I personally would discourage commenting out code rather than removing it outright. Commented out code is just noise that makes the code base harder for other developers to read. But most developers won't criticize that as long as you remove any commented out code during before you create the pull request.

This is your project, Andrew, you can run it in whatever manor you see fit. What I think is irrelevant, what Gavin thinks is irrelevant. But Bitcoin is a community endeavour, encouraging feedback from the community before making decisions will earn you a lot of respect, and with that respect will come support and contributions from peer developers and it make BU more likely to be adopted by the community at large.

Personally, I LOVE Bitcoin Unlimited philosophies, and where it is going. I hope it displaces Bitcoin Core as the dominant implementation.

Good luck, Andrew. I hope we'll see big things from this project in the future.
 

solex

Moderator
Staff member
Aug 22, 2015
1,558
4,693
@dgmib
Very informative post indeed! It is great that you support the ethos of BU.
I will just go to one point though: > what Gavin thinks is irrelevant

Gavin's opinions have wide respect in the community and draw attention.
BU currently has a lot of enthusiasm and good-will and is growing nodes fast, but this could run into the sand in the face of headlines spinning Gavin's criticism the wrong way.

The announced direction of Core is to "control" the marketplace, using off-chain solutions as much as possible. They want SegWit more for LN and BS op-codes than its potential for fraud proofs. Their tolerance of censorship centralizes development.

BU wants to foster decentralization, encourage market-driven feedback loops, and continue Satoshi's vision on main-chain scaling. Where else in the world is this opposition going to come from? If BU can't attract critical mass then we really are looking at a Core-ethos future. Mike says that he may not keep maintaining XT, and no developers are coming forward to do so either. It looks like a stalled project. Maybe @Gavin Andresen will help with the BU repo to the point where he is comfortable to recommend this client. That, and other experienced Bitcoin developers coming forward is what is needed now.
 

Zangelbert Bingledack

Well-Known Member
Aug 29, 2015
1,485
5,585
Not a coder myself, but I had the impression that BU was still very experimental software and people are all running it as a show of support while it is polished and goes through community vetting. (Though if that's the case, it should probably be made extra-clear to the public as some won't understand that automatically.)
 

cypherdoc

Well-Known Member
Aug 26, 2015
5,257
12,994
@theZerg

you should publish your testnet results.
 
  • Like
Reactions: Peter R

Aditya

New Member
Dec 29, 2015
1
1
@Gavin Andresen

I am very happy to see your comments here!

We are holding elections for the leadership positions of President, Secretary, and Developer perhaps as early as January. Please consider running for President! As President you can lead the "high level" directions of this project (and point out things like you just did). [As "Developer" one would have more direct interaction with the code development process.]

Of course, the title of "Developer" doesn't mean that other developers can't contribute. We want as much help as we can get!!

http://www.bitcoinunlimited.info/articlesOfFederation
I'd love to see Olivier Janssens running for President of this project.
 
  • Like
Reactions: Peter R

digging

New Member
Dec 29, 2015
2
2
Sorry to barge in, but we all love freedom right?

I'm no coder, but i know my politics and this group could use a little TLC when it comes to issuing responses. The only reason I made it as far as "bitco.in" is my own desire to see this ideas vast potential take flight. The coders and intellectual strength behind this idea is clear, but god damn do we need a little help with portraying this idea to others, especially those who are giving you a compliment and asking for a little respect for their prior work. I made a throw away that is set to roll over in 48 hours, I humbly ask that you all consider letting me help craft your ideas so that our shared goals are presented to others in a unified manner. Its my belief that a organization such as this needs to act in accordance to the mandates that they are entrusted to maintain at all times.
 
  • Like
Reactions: solex

dgmib

New Member
Dec 29, 2015
2
16
@solex

First, to be clear, Gavin has absolutely earned my respect as a developer and as leader in the Bitcoin community. I did not mean to convey that his advice is not invaluable and important. Though it was not the best choice of words.

@theZerg did seem to take it personally when Gavin's reviewed his code, which is unfortunate because I sincerely doubt Gavin meant for it to be taken personally. @theZerg doesn't need to defend his code to Gavin like he did in his post. Gavin is his peer not his boss.

Usually if you feel the need to defend your work to anyone, especially someone who has no authority over you, it's usually because you doubt yourself. A confident developer doesn't feel threatened when someone reviews their work and offers feedback, because at the end of the day, they've got nothing to prove.

@theZerg need to know, he's doesn't have to prove anything to anyone.

My point when I said "What I think is irrelevant, what Gavin thinks is irrelevant." isn't that one shouldn't listen to feedback from other developers. Quite the opposite actually. My point is that he should be confident in himself first, he doesn't need to impress me, or Gavin or anyone. When you start from a place of "I don't need to impress anyone", you can hear everyone with an open mind. Take to heart what is valuable, throw out what is crap. Even when someone tries to attack your work (which is guaranteed to happen if BU gathers momentum) you can still pick out any small bits of truth that might be there in a mountain of FUD.

If you want people to get on board with BU, (a I do really hope that happens because I'm a big fan of the principals behind it), there's going to be advice from lots of developers. Some of them will be developers like me, a complete nobody you've never heard of; some of them will be developers like Gavin who have proven themselves in the community and earned a lot of respect. But either way the advice you get will usually be given as equals. One can choose to take the advice, or reject it. Consider advice independently of who's giving it. Accept what make sense, reject the noise, and trust yourself.

I believe in this project and this community. It's going to be great.
 

solex

Moderator
Staff member
Aug 22, 2015
1,558
4,693
@dgmib
Absolutely. We are thinking alike. I fully believe in this project and community as well.
Gavin's input is really welcome, which other posters have pointed out. We are sincere and all want to see his feedback on various aspects of BU. It is just frustrating for @theZerg who was pleading for code reviewers before launch.
 

digging

New Member
Dec 29, 2015
2
2
@dgmib @solex

Very well put solex. We all can appreciate the uphill battle that comes with any new idea and the frustration that the inventors of which must feel. We should all remember (especially the leading members) that your comments are conferred to the idea and the idea confirms your comments.
 
  • Like
Reactions: dgmib

Aquent

Active Member
Aug 19, 2015
252
667
theZerg is a cool guy. You can imagine he has worked real hard to get to here so he probably just wanted a bit of appreciation especially as no one was standing up to the plate. Now this thing is catching fire and people are popping out from everywhere. Famous developers, not famous developers, presidents secretaries, a real grass root movement.

Although we all really appreciate everyone's contribution, no one is indispensable here. We have some sort of constitution: http://www.bitcoinunlimited.info/articlesOfFederation . Everybody is voted in by members, including the Lead Dev. This isn't really any single person's project. This is OUR project. Some gave code, some gave the soon to be launched website design with graphics http://aquentus.github.io/BitcoinUnlimitedWeb/bitcoinUnlimited/index.html some gave academic articles with concepts. Some contributed more some less, but, this only came to be because of the efforts of us all and I doubt anyone of us alone would have been able to accomplish this.

You are seeing Vires in Numeris in action.

So any developer who wants to contribute is free to do so. If they don't like things then run for election as Lead Developer. If the developer is particularly famous (and I think I speak for everyone) he would probably be assumed to have won the election and be inaugurated as lead.

So @dgmib, you say much good, but in my view you are not fully correct in stating that this is @theZerg 's project. This is our project. It's in the constitution - or it should be if it isn't.
 

Richy_T

Well-Known Member
Dec 27, 2015
1,085
2,741
Good comments all. @theZerg, please don't be discouraged by the criticism which it seems was offered in good spirit. I have been in IT for decades and am always finding new, better ways to do things (in fact, if I wasn't, I couldn't have stayed in IT) and some techniques are more applicable in some situations than others. There are a lot of us out here who appreciate the work you are doing and know that you are just getting started (with this project) so there will be a few kinks to work out.

Hopefully I'll be able to contribute some to the project myself maybe in time. Meanwhile, if there are any other things that would help you along (books maybe? I'm not sure what you already have available) you could put out a call and see who answers.