Skip to content

Branch information

Daniel Hillerström edited this page Aug 8, 2019 · 16 revisions

Overview

This page lists information about active "research project" branches in this repository. Links is a research platform and there are many long-running branches that correspond to different research efforts. This leads to a somewhat different branch/develop/merge cycle than in standard software development: some branches may eventually be merged but only after a long time (e.g. years); others may not ever be merged but might need to be kept in sync with the default branch over time as part of a research project; still others may contain useful work done in the past that should be preserved.

Each entry has the following form:

Branch: [name of branch]
Parent: [name of parent branch, optional]
Owner: [person responsible for branch]
Description: [of the branch]

They are grouped as follows:

  • "Experimental" status means the branch is for an active research project and it may or may not eventually be a candidate for merging with the main source tree.
  • "Test candidates" means that the branch implements a useful feature and considered mature enough to be tested by others to determine whether it is a candidate for merging into the main branch
  • "Integration candidates" means that the branch has been tested and is being integrated into the main branch

A branch should move from "Experimental" to "Test candidate" when work has stopped on it and its owners believe there is something that should be merged into the main branch. When this happens, the owner should:

  • document and create tests for the new functionality
  • announce the branch as being ready for testing (using issue tracker or mailing list)
  • encourage/browbeat others into actually trying out the features, discussing, and resolving any design issues.

A branch should move from "Test candidate" to "Integration candidate" when there is evidence that the new features are useful to and have been used successfully by others. When this happens, the owner should:

  • make sure the branch is up to date with respect to the default branch
  • create a pull request against the default branch
  • announce the branch as being a candidate for integration, with a target date (suggested ~ 1 week in the future)
  • Discussion should focus on integration issues (i.e. making sure the branch plays nicely with existing code and does not break existing tests, or ensuring that any changes to standard behavior can be reconciled with other research branches)
  • For bonus points, the owner could nominate one or more code reviewers to read/critique the PR
  • If there are no remaining objections by the due date the PR is merged.
  • If discussion has not converged, owner decides whether to extend the discussion period (e.g. to resolve integration issues) or revert to "test candidate" (e.g. to resolve emergent design issues).

The Working conventions wiki page should be consulted for advice on using git so as to maintain clean history. New branches created after October 2016 should follow these conventions; branches created before then should follow the conventions if possible, but if this is not feasible can revert to the default git/github behavior.

This page focuses on "research project" branches, which tend to be long-lived. Short-lived "feature" or "fix" branches should be merged regularly using pull requests, as in usual Git development.

Active Branches

Branch: master
Owner: Sam Lindley
Description: The main Links branch.

Integration candidates

Test candidates

Experimental

Branch: errormsg
Parent: sessions
Owner: James Cheney (work done by summer intern Xupeng Li)
Description: Fixes a problem with displaying error messages when Links is in web mode.
Branch: query-compilation
Parent: master
Owner: James Cheney
Description: 
implementation of a "compiler" (translator to OCaml) for Links server 
code (originally due to Steven Holmes), extended to handle (some) query 
code by Gabriel Radanne, as described in PEPM 2014 paper.
This was forked pre-Github so merging may be non-straightforward.
Branch: where
Parent: sessions
Owner: Stefan Fehrenbach
URL: https://github.com/fehrenbach/links/tree/where
Description: Where-provenance in Links
Branch: lineage
Parent: sessions
Owner: Stefan Fehrenbach
URL: https://github.com/fehrenbach/links/tree/lineage
Description: Lineage in Links