GLVis  v4.2
Accurate and flexible finite element visualization
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Pages
CONTRIBUTING

How to Contribute

The GLVis team welcomes contributions at all levels: bugfixes; code improvements; simplifications; new visualization capabilities; improved documentation; etc.

GLVis is distributed under the terms of the BSD-3 license. All new contributions must be made under this license.

If you plan on contributing to GLVis, consider reviewing the issue tracker first to check if a thread already exists for your desired feature or the bug you ran into. Use a pull request (PR) toward the glvis:master branch to propose your contribution. If you are planning significant code changes or have questions, you may want to open an issue before issuing a PR. In addition to technical contributions, we are also interested in your results and simulation images, which you can share via a pull request in the glvis/web repo.

See the Quick Summary section for the main highlights of our GitHub workflow. For more details, consult the following sections and refer back to them before issuing pull requests:

Contributing to GLVis requires knowledge of Git and, likely, OpenGL and/or finite elements. If you are new to Git, see the GitHub learning resources. To learn more about the finite element method, see this MFEM page.

By submitting a pull request, you are affirming the Developer's Certificate of Origin at the end of this file.

Quick Summary

Code Overview

Source code structure:

The GLVis library uses object-oriented design principles which reflect, in code, the independent mathematical concepts of meshing, linear algebra and finite element spaces and operators.

The GLVis source code has the following structure:

``` ├── lib │ └── gl │ └── shaders ├── share └── tests ```

GitHub Workflow

The GLVis GitHub organization: https://github.com/glvis, is the main developer hub for the GLVis project.

If you plan to make contributions or would like to stay up-to-date with changes in the code, we strongly encourage you to join the GLVis organization.

This will simplify the workflow (by providing you additional permissions), and will allow us to reach you directly with project announcements.

GLVis Organization

Getting started (GitHub)

Before you can start, you need a GitHub account, here are a few suggestions:

Joining

Structure

New Feature Development

Alternatively, clone using the "https" protocol:

git clone https://github.com/glvis/glvis.git

Create a new feature branch starting from "master":

git checkout master git pull git checkout -b feature-dev

Work on "feature-dev", add local commits

...

(One time only) push the branch to github and setup your local

branch to track the github branch (for "git pull"):

git push -u origin feature-dev

```

Developer Guidelines

Pull Requests

Pull Request Checklist

Before a PR can be merged, it should satisfy the following:

Releases

Release Checklist

LLNL Workflow

Mirroring on Bitbucket

Contact Information

Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or

(b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or

(c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it.

(d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved.