From The FEniCS project

Contents

Information for developers

FEniCS development takes place on Launchpad. This page explains how to obtain FEniCS source code from Launchpad, subscribe to developer mailing lists and take part in the development of FEniCS.

Organization of FEniCS development

FEniCS is organized as a collection of interoperable components that together form the FEniCS Project. Each project is registered as a project on Launchpad and each project is connected to a pair of teams. The first project team consists of developers and users interested in the development of the project. This team is open to everyone and has a mailing list where the development of the project is discussed. The second team (the core team) manages the project and has write-access to the source code.

For example, DOLFIN is maintained by the DOLFIN Core Team. DOLFIN is also associated with the DOLFIN Team which has a mailing list and is open to anyone.

Developers (and interested users) should register an account on Launchpad and join any teams they are interested in following. Note that core team membership is restricted and is usually granted only after a developer has proven his/her reliability by a series of high quality changesets over an extended period in time.

Obtaining the development source code

The source code of all FEniCS projects can be obtained directly from Launchpad using Bazaar, the version control system used by FEniCS. To get the source code for a FEniCS project, simply do

bzr branch lp:project-name

For example, to obtain the source code for DOLFIN, run the command

bzr branch lp:dolfin

Subscribing to mailing lists

To subscribe to the mailing list for a project, you must first join the project team. The project teams are open to everyone. To join a project, visit the project team page and click "Join the team" in the top right corner. You may then click the link "Subscribe to mailing list" in the bottom left corner of the project team page.

A link to the project team page can be found in the table below.

Note that mailing lists do not automatically receive bug reports and notifications of branch changes (commit logs). See below for instructions on how to subscribe to bug reports and branch changes.

Note also that core team members are automatically subscribed to bug mail and branch notifications, but not to mailing lists so developers must manually subscribe to the project mailing list.

Subscribing to bug reports

To subscribe to bug reports for a project, visit the main Launchpad page of the project and click the link "Subscribe to bug mail" in the top right corner.

Subscribing to branch changes

To subscribe to branch changes for a project, visit the main Launchpad page of the project and click the link "Branches" in the top menu. Then click on the branch (lp::foo) in the list and finally "Subscribe yourself" in the top right corner.

Using Bazaar

A quick reference for using Bazaar can be found here. To set your identity with Bazaar, type

bzr whoami "My Name <myname@foo.com>"

A couple of basic Bazaar commands are listed below.

To create a new branch (similar to hg clone):

bzr branch address-to-original-branch [address-to-new-branch]

To branch a project hosted by Launchpad:

bzr branch lp:project-name

To commit a change:

bzr commit

To push changes:

bzr push [address-to-branch]

To pull changes:

bzr pull [address-to-branch]

Launchpad project pages

FEniCS Components

Project Project Team Main branch
DOLFIN DOLFIN Team lp:dolfin
FFC FFC Team lp:ffc
FIAT FIAT Team lp:fiat
Instant Instant Team lp:instant
MeshBuilder MeshBuilder Team lp:meshbuilder
SyFi SyFi Team lp:fenics-syfi
UFC UFC Team lp:ufc
UFL UFL Team lp:ufl
Viper Viper Team lp:fenics-viper

FEniCS Apps

Project Project Team Main branch
FEniCS-Apps Project FEniCS-Apps Team
ASCoT ASCoT Team lp:ascot
CBC.Solve CBC Team lp:cbc.solve
DiffSim DiffSim Team lp:diffsim
DOLFWAVE DOLFWAVE Team lp:dolfwave
FEniCS Plasticity FEniCS Plasticity Team lp:fenics-plasticity
Rheagen Rheagen Team lp:rheagen
TriTetMesh TriTetMesh Team lp:tritetmesh
Unicorn Unicorn Team lp:unicorn

FEniCS Utilities

Project Project Team Main branch
Dorsal Dorsal Team lp:dorsal

FEniCS Attic

Project Project Team Main branch
Puffin Puffin Team lp:puffin
FErari FErari Team lp:ferari

Checklist for projects

  • Create a project page for project Foo at launchpad.net/foo
  • Create an open team Foo Team at launchpad.net/~foo
  • Create a restricted team Foo Core Team at launchpad.net/~foo-core
  • Create a branch for project Foo owned by foo-core at launchpad.net/~foo-core/foo/main
  • Set the branch as the main branch (trunk) for project Foo
  • Create a mailing list for Foo Team
  • Make Foo Core Team a member of Foo Team
  • Subscribe Foo Core Team to bug reports and the main branch
Personal tools