Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New Development Workflow: The One True Branch #1743

Closed
shelhamer opened this issue Jan 16, 2015 · 3 comments
Closed

New Development Workflow: The One True Branch #1743

shelhamer opened this issue Jan 16, 2015 · 3 comments

Comments

@shelhamer
Copy link
Member

Caffe will switch to a one branch development workflow to reduce friction and confusion. All development will branch from and merge to master. Tags will mark releases. Official feature branches will host radical or involved changes to not block routine development and releases.

  • no overhead for core developers handling back-merges and release merges
  • no confusion about where to contribute PRs
  • release tagging still gives stable checkpoints for downstream

Historically Caffe development has followed a master (stable) and dev (unstable) branch model. This lets research live at the bleeding edge in dev while applications stem from master. Experimental ideas can be tried out in dev, hammered out, then bundled into release merges to master. This isn't sustainable.

Of course master and dev need to be reconciled to found the one branch workflow. This should be accomplished with the next release, which will be soon. Open PRs can still be checked out and merged. We're still deciding how and when exactly to coordinate all this.

@shelhamer
Copy link
Member Author

It turns out our comrades in open source on pylearn-dev are likewise discussing their development workflow but they are considering the switch to the two branch workflow.

There's no cure-all to scientific open source development.

@longjon
Copy link
Contributor

longjon commented Jan 17, 2015

From skimming the pylearn-dev thread, the main source of tension there seems to be between interface stability and ability to rearchitect. In this regard, Caffe may be better off, as its external interface is smaller.

Although it's not entirely clear what all constitutes Caffe's external interface, the core part is certainly the net definition through protobuf, a rigidly structured language. So far we've been able to provide an (automatic) upgrade path for all changes to that interface. We've also not been shy about changing arguably internal interfaces such as C++ method types. So, I think our situation is a bit nicer than theirs for a single-branch model, and it's probably a good idea to consider keeping our interface small in the future.

@shelhamer
Copy link
Member Author

Carried out in #1849 and #1887.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants