GLVis
v4.2
Accurate and flexible finite element visualization
|
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.
glvis:master
.glvis:master
. Make sure to check the items off the Pull Request Checklist.ready-for-review
label.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 ```
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.
Before you can start, you need a GitHub account, here are a few suggestions:
The author creates a branch for the new feature (with suffix -dev
), off the master
branch, or another existing feature branch, for example:
```
git clone git@g:glvis/glvis.git ithu b.com
git clone https://github.com/glvis/glvis.git
git checkout master git pull git checkout -b feature-dev
git push -u origin feature-dev
```
next
branch to start a new feature branch!new-feature-dev
, e.g. pumi-dev
. While not frequent in GLVis, other suffixes are possible, e.g. -fix
, -doc
, etc.#ifdef
-ed and not change the code by default.make style
in the top-level directory. This requires Artistic Style version 3.1 and MFEM's style configuration file, typically located in ../mfem/config/mfem.astylerc
.glvis:master
.Pull request typically have titles like:
Description [new-feature-dev]
for example:
Parallel Unstructured Mesh Infrastructure (PUMI) integration [pumi-dev]
Note the branch name suffix (in square brackets).
Titles may contain a prefix in square brackets to emphasize the type of PR. Common choices are: [DON'T MERGE]
, [WIP]
and [DISCUSS]
, for example:
[DISCUSS] Hybridized DG [hdg-dev]
WIP
label to it and optionally the [WIP]
prefix in the title.ready-for-review
label.Before a PR can be merged, it should satisfy the following:
make style
.CHANGELOG
:CHANGELOG
to group with other related features?INSTALL
:make
or cmake
have a new target?.gitignore
:make distclean; git status
shows any files that were generated from the source by the project (not an IDE) but we don't want to track in the repository.glvis/web
repo.README
*(rare)*.doc/CodeDocumentation.dox
*(rare)*.master
branch, e.g. https://github.com/glvis/glvis/releases/tag/v3.4, and have a version that ends in an even "patch" number, e.g. v3.4.2
or v3.4
(by convention v3.4
is the same as v3.4.0
.) Between releases, the version ends in an odd "patch" number, e.g. v3.4.1
.next
branch is recreated, e.g. as follows (replace 3.4
with current release):next
branch to next-pre-v3.4
.next
branch starting from the v3.4
release.next
can then be updated with git fetch origin next && git checkout -B next origin/next
.CHANGELOG
README.md
vcpkg.json
share/Info.plist
share/Info.cmake.plist.in
INSTALL
and up-to-dateCHANGELOG
to organize all release contributions[ ] Tag the repository:
``` git tag -a v3.1 -m "Official release v3.1" git push origin v3.1 ``
[ ] Create the release tarball and push to
glvis/releases.
[ ] Recreate the
nextbranch as described in previous section.
[ ] Update and push documentation to
glvis/doxygen`.links
and links-glvis
files of the internal glvis/downloads
repo.spack
, homebrew/science
, VisIt
, etc.glvis/web
repo:src/index.md
and src/download.md
.ls -lh
to estimate the SLOC and the tarball size in src/download.md
.master
and next
branches are mirrored to the LLNL institutional Bitbucket repository as gh-master
and gh-next
.gh-master
is merged into LLNL's internal master
through pull requests; write permissions to master
are restricted to ensure this is the only way in which it gets updated.glvis:master
– Recent development version, guaranteed to work.glvis:gh-master
– Stable development version, passed testing, you can use it to build your code between releases.glvis:gh-next
– Bleeding-edge development version, may be broken, use at your own risk.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.