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
Live DVD
When having tutorials with the FEniCS software it can be nice to be able to distribute the FEniCS software together with customized demos. One way to do this is to create a bootable Live DVD containing all required software. This is a small walk through how this can be done on a Ubuntu box:
- Install VirtualBox and create a virtual machine with ~12GB
- Install a clean Ubuntu on the virtual machine
- Create a dummy user "user" (No need to password protect the login)
- Log into the virtual machine and upgrade all packages
- Install what ever software you want on the Live DVD
- Create the folder structure you want for the dummy user and install customized demos
- Install a nice wallpaper on the desktop marketing FEniCS ;)
- You transfer files from your mother OS to the virtual machine through a shared folder or via ssh
- Install remastersys
- Edit /etc/remastersys.conf to set default user and name of Live DVD
- Run "sudo remastersys backup" on the virtual machine
- This will create bootable iso file
- Transfer the file to your mother OS and test it in another Virtual machine
- Once you are sure it is what you want, burn it to a DVD
Have fun!

