bitcoin-hivemind / hivemind

Knowledge Revolution
http://www.bitcoin-hivemind.com
MIT License
113 stars 6 forks source link

Process for pulling upstream #66

Closed bitjson closed 8 years ago

bitjson commented 8 years ago

It might be valuable to solidify how upstream changes get pulled into this project.

I've cherry-picked quite a few commits as needed (to fix the build for OS X and update docs), but I assume there are a lot of improvements happening upstream which should also be pulled into Hivemind – like networking, mempool, RPC, etc. improvements.

Has anyone thought deeply about how to merge in the latest work from https://github.com/bitcoin/bitcoin?

CryptAxe commented 8 years ago

Yes we've discussed it, and I've thought about it (nightmares) for some time. here is the section of the roadmap (http://bitcoinhivemind.com/blog/roadmap/) that mentions what we've decided to do:

Merge updates and fixes from Bitcoin github repository

Merge updates added to Bitcoin master, and fix the resulting issues that the new code causes. This should be done after unit tests and regression tests have been created.

Basically, as we have made changes to just about every significant source file in Bitcoin we cannot easily merge in the changes and updates that they have made. In order to make sure that we don't break anything by updating Hivemind, we want to get unit tests and regression tests created before we start pulling in updates. Once unit test coverage is good, we can start pulling in updates, check if they break anything, and then merge them.

Some things may be able to be cherry picked into the project and fix Bitcoin issues, but these same fixes could lead to breaking Hivemind functionality. So, unit tests first and then updates.

CryptAxe commented 8 years ago

@bitjson You have a handle on cherry picking, so as soon as we have some tests to make sure we haven't broken everything we can start attacking upstream merges! I think you can do that faster than I can, and I can make sure that the changes aren't messing with Hivemind code so it should work out pretty well.

bitjson commented 8 years ago

Awesome, that sounds like a great plan. I'm extremely new to C++, so I've got a lot of ramping up to do before I can help much with code, but I'd love to help where I can! Any idea how long it will be before the tests are ready for the first merges?

I imagine we'll probably just work our way back up from the last merged PR shared between the projects: https://github.com/bitcoin/bitcoin/pull/5632. Which means we have roughly 1000 PRs to work through...

So when we're ready, I'll start batching them together in reasonable merges and submitting pull requests.

CryptAxe commented 8 years ago

@bitjson Since this isn't an issue I think it can be closed now, and we will communicate through this process on the forum or a slack channel when the time comes :)

bitjson commented 8 years ago

👍

CryptAxe commented 8 years ago

Also @bitjson you were able to gitian build for OSX from debian? I just got the MAC SDK setup on my system so that I can put up OSX builds of the newest release, and I'm getting boost related build errors. Do you happen to know which version of the OSX SDK you used? I tried with 10.9.

I'm going to figure out a good way for us all to communicate we need slack or something setup

bitjson commented 8 years ago

@CryptAxe – sorry I seem to have missed your last reply here! Were you ever able to get it working?

I think I finally managed to get it building, but it required hacking in quite a few more changes from bitcoin/bitcoin. Unfortunately, I'm on the macOS Sierra beta now, so I'm sure it's broken again.

I think chat is an excellent idea for a faster communication (and a better onboarding experience for new developers). Real-time discussion really helps to make projects feel more tight-knit and active. Bigger and more thought-out discussion can move to Github and the forums.

I just set up a slack group and deployed this app to allow people to sign up: https://bitcoin-hivemind.herokuapp.com/ (and I'm happy to sponsor if it burns past the free-tier)

And I submitted pull requests to the website and readme: https://github.com/bitcoin-hivemind/www.BitcoinHivemind.com/pull/3 https://github.com/bitcoin-hivemind/hivemind/pull/81

And I invited you and @psztorc as admins, so you should be able to update/reorganize as you see fit.

bitjson commented 8 years ago

By the way, I'm ready to start attacking upstream merges when tests are ready.