Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
75 commits
Select commit Hold shift + click to select a range
92e7c1d
created About.rst
trickyck May 14, 2022
7180d60
linked Developer FAQ to external website
trickyck May 14, 2022
5376e21
linked Developer FAQ to external website
trickyck May 14, 2022
8c1c0da
linked Developer FAQ to external website
trickyck May 14, 2022
dd5b159
fix links in About.rst
trickyck May 14, 2022
d3ece90
Update About.rst
trickyck May 15, 2022
396fc7a
Update About.rst
trickyck May 15, 2022
67579ba
Update About.rst
trickyck May 15, 2022
8ebb773
changed About.rst to about.rst
trickyck May 15, 2022
7415287
Rename About.rst to about.rst
trickyck May 15, 2022
05e2971
added known-issues.rst
trickyck May 15, 2022
b2cea56
fix bullet point in known-rst
trickyck May 15, 2022
e3635bc
add code to known-issues.rst
trickyck May 15, 2022
63a1fed
add code to known-issues.rst
trickyck May 15, 2022
1225eb4
fix code to known-issues.rst
trickyck May 15, 2022
b4b305e
added VS output to known-issues.rst
trickyck May 15, 2022
62c050f
added VS output to known-issues.rst
trickyck May 15, 2022
ec7a3a0
added VS output to known-issues.rst
trickyck May 15, 2022
a1afab4
added VS output to known-issues.rst
trickyck May 15, 2022
5b58ce9
added VS output to known-issues.rst
trickyck May 15, 2022
a54e356
added more text to known-issues.rst
trickyck May 15, 2022
a59a796
tried adding console code to known-issues.rst
trickyck May 15, 2022
43c7f3b
completed copying content for known-issues.rst
trickyck May 15, 2022
ccdf3ec
added topp-faq.rst and docutils.conf
trickyck May 15, 2022
2c6ca45
changed contents title in topp-faq.rst
trickyck May 15, 2022
c3120d2
inline cpp class in topp-faq.rst
trickyck May 15, 2022
1cc9477
FileInfo is not a cpp class its a tool
trickyck May 15, 2022
02978c9
adding console code
trickyck May 15, 2022
2178ad5
adding console code
trickyck May 15, 2022
c4dd64b
adding console code
trickyck May 15, 2022
504d9c9
add monospace text to topp-faq.rst
trickyck May 15, 2022
239dc5b
fixed code blocks
trickyck May 15, 2022
f5385b4
created about contact for-developers for-users reporting-bugs-issues …
trickyck May 15, 2022
14af2e3
created developer-faq.rst
trickyck May 15, 2022
8695bfb
developer-faq changes
trickyck May 16, 2022
b534117
developer-faq changes
trickyck May 16, 2022
f324f7d
developer-faq changes
trickyck May 16, 2022
86ce4d4
developer-faq changes
trickyck May 16, 2022
42305e5
testing
trickyck May 16, 2022
d7d73ad
developer-faq
trickyck May 16, 2022
56259bd
developer-faq
trickyck May 16, 2022
18e951f
developer-faq
trickyck May 16, 2022
23c4f6d
developer-faq
trickyck May 16, 2022
91739ca
developer-faq
trickyck May 16, 2022
d6abb99
developer-faq
trickyck May 16, 2022
fb70e4e
developer-faq
trickyck May 16, 2022
8e3b42a
minor change
trickyck May 16, 2022
db2e310
renamed folder to lower case
trickyck May 17, 2022
dd4c916
made small changes to files and created 3 empty .md files
trickyck May 17, 2022
09ebe25
added pyopenmswrapping classes link
trickyck May 17, 2022
0b94d9e
removed about.rst and added about.md
trickyck May 17, 2022
2173ccf
added contact.md
trickyck May 17, 2022
0c6a366
created for-developers.md
trickyck May 17, 2022
c457441
modified for-developers.md
trickyck May 17, 2022
3bac9fb
created building-openms.md
trickyck May 17, 2022
9e07823
just checking links in contact.md
trickyck May 18, 2022
fb4eb63
added contributor quickstart guide, users quick start guide and repor…
trickyck May 18, 2022
04f8f7a
added linkstobs to flag dead links
trickyck May 18, 2022
8ed8f26
fixed some links and deleted for-developers.md
trickyck May 18, 2022
569c4d2
modified about.md, deleted building-openms.md, created build-openms-f…
trickyck May 19, 2022
9f33627
modified quickstart guide contributors, developer faq, reporting bugs…
trickyck May 20, 2022
c14c24b
added coding convents and write and label github issues md files, edi…
trickyck May 20, 2022
92cea60
added Notes to developer-faq.md plus other minor edits
trickyck May 20, 2022
f7da7a0
added contributor-faq
trickyck May 20, 2022
d70bf58
added coding-convetions.md
trickyck May 20, 2022
05e8e1e
added contributor-faq.md
trickyck May 20, 2022
d432cd6
updated pull request checklist md file
trickyck May 21, 2022
2338810
updated write-and-label-github-issues
trickyck May 21, 2022
ec567b9
made changes suggested in the review
trickyck May 21, 2022
ecc16ae
updated folder structure as suggested in review
trickyck May 21, 2022
c1fa0b9
added installations folder with build-openms-from-source.md as discussed
trickyck May 21, 2022
f1c7cf7
created openms-git-workflow.md and click-fork.png under new directori…
trickyck May 21, 2022
a361335
minor changes
trickyck May 21, 2022
b2f7f7b
fix spacing issues
trickyck May 21, 2022
37dcfcc
fix alignment issues
trickyck May 21, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
174 changes: 174 additions & 0 deletions docs/additional-resources/openms-git-workflow.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,174 @@
OpenMS Git Workflow
===================

Before you get started, make sure you have a recent version of git installed to avoid problems like Github https authenitcation errors (see [Troubleshooting cloning errors](https://docs.github.com/en/repositories/creating-and-managing-repositories/troubleshooting-cloning-errors) and a solution using [ssh](https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories)).

OpenMS follows the [git flow workflow](https://nvie.com/posts/a-successful-git-branching-model/). The difference is that merge commits are managed via pull requests instead of creating merge commits locally.

## Naming Conventions

Naming conventions for the following apply:

* A **local repository** is the repository that lies on your hard drive after cloning.
* A **remote repository** is a repository on a Git server such as Github.
* A **fork** is a copy of a repository. Forking a repository allows you to freely experiment with changes without affecting the original project.
* **Origin** refers to a remote repository that you have forked. Call this repository https://github.com/_YOURUSERNAME_/OpenMS.
* **Upstream** refers to the original remote OpenMS repository. Call this repository https://github.com/OpenMS/OpenMS.

## Create your Fork

Start by [forking](https://docs.github.com/en/get-started/quickstart/fork-a-repo) the OpenMS directory.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

let's replace:

directory
w/
repository.


To create a fork, click **Fork** under the main menu as shown below.

![image info](../images/click-fork.png)

## Clone your Fork

To obtain a local repository copy, clone your fork using:

```bash
$ git clone https://github.com/_YOURUSERNAME_/OpenMS.git
```

This will clone your fork (correctly labelled `origin` by default) into a local copy on your computer.

## Link Remote Branches to your Local Working Repository
Copy link
Contributor

@tapaswenipathak tapaswenipathak May 21, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

let's follow Sentence case, for H2 everywhere.


After cloning your fork, your local repository should be named origin. Validate this by executing:

```bash
$ git remote -v
origin https://github.com/_YOURUSERNAME_/OpenMS.git (fetch)
origin https://github.com/_YOURUSERNAME_/OpenMS.git (push)
```

Sync data between your local copy, your fork (`origin`) and the remote original OpenMS/OpenMS repository (`upstream`) by using the following command:
```bash
$ git remote add upstream https://github.com/OpenMS/OpenMS.git
```
Verify that upstream was added correctly by calling:

```bash
$ git remote -v
origin https://github.com/_YOURUSERNAME_/OpenMS.git (fetch)
origin https://github.com/_YOURUSERNAME_/OpenMS.git (push)
upstream https://github.com/OpenMS/OpenMS.git (fetch)
upstream https://github.com/OpenMS/OpenMS.git (push)

```

Fetch changes and new branches from your fork (`origin`) as well as from the central, upstream OpenMS repository by executing:

```bash
$ git fetch upstream
$ git fetch origin
```
or

```bash
$ git fetch --all
```

Create a local branch using the following:

```bash
$ git checkout -b <insert branch-name>
```
Call `git branch -va` to display the status of local and remote branches. You should see an output that looks like this:

```bash
$ git branch -va
* develop 349ec48 Merge pull request #691 from cbielow/MGF_fix
feature/my_shiny_new_feature 3c05538 [FEATURE] added option to keep, ensure or reassign UIDs during conversion
remotes/origin/SILACAnalyzer 3ceae38 Fixed test.
remotes/origin/antilope 3fe5aa3 git-svn-id: https://open-ms.svn.sourceforge.net/svnroot/open-ms/branches/antilope@12117 6adb6e08-d915-0410-941f-83917bcadc18
remotes/origin/develop 349ec48 Merge pull request #691 from cbielow/MGF_fix
remotes/origin/master b182ba5 [NOP] first commit after SVN import to git
remotes/origin/msnovogen 93a5e4c [OPT] For faster access to specific amino acids a ResidueServer was added.
remotes/upstream/HEAD -> upstream/develop
remotes/upstream/SILACAnalyzer 3ceae38 Fixed test.
remotes/upstream/antilope 3fe5aa3 git-svn-id: https://open-ms.svn.sourceforge.net/svnroot/open-ms/branches/antilope@12117 6adb6e08-d915-0410-941f-83917bcadc18
remotes/upstream/develop 349ec48 Merge pull request #691 from cbielow/MGF_fix
remotes/upstream/master b182ba5 [NOP] first commit after SVN import to git
remotes/upstream/msnovogen 93a5e4c [OPT] For faster access to specific amino acids a ResidueServer was added.
```

## Keep your Fork in Sync

Keep your fork (`origin`) in sync with the OpenMS repository (`upstream`) by following the [Github instructions](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork).
In summary, to keep your fork in sync:
1. Fetch changes from upstream and update your local branch.
2. Push your updated local branch to your fork (`origin`).

> **_NOTE:_** To keep track of others repositories, use `git fetch --all --prune` to update them as well. The option `--prune` tells git to automatically remove tracked branches if they got removed in the remote repository.

```bash
$ git fetch --all --prune
$ git checkout develop
$ git merge --ff-only upstream/develop
$ git push origin develop
```
Feel free to experiment within your fork. However, for your code needs to meet OpenMS quality standards to be merged into the OpenMS repository,

Follow these rules:
* Never commit directly to the `develop` or `master` branches as it will complicate the merge.
* Try to start every feature from develop and not base features on other features.
* Name the OpenMS remote `upstream` and always push directly to `origin` (`git push origin <branch-name>`).
* When updating your fork, consider using `git fetch upstream` followed by `git merge --ff-only upstream/develop` to avoid creating merge commits in `develop`.
If you never commit to `develop` this should always succeed and (if a commit accidentally went to develop) warn you instead of creating a merge commit.

## Create New Feature

All features start from `develop`.

```bash
$ git checkout develop
$ git checkout -b feature/your-cool-new-feature
```
All commits related to this feature will then go into the branch `feature/your-cool-new-feature`.

## Keeping your Feature Branch in Sync with Develop Branch

While working on your feature branch, it is usual that development continues and new features get integrated into the main development branch. This means your feature branch lags behind `develop`. To get your feature branch up-to-date, rebase your feature branch on `develop` using:

```bash
$ git checkout feature/myfeaturebranch
$ git rebase develop
```

The above commands:

1. Performs a rewind of your commits until the branching point.
2. Applies all commits that have been integrated into `develop`.
3. Reapplies your commits on top of the commits integrated into `develop`.

For more information, refer to a [visual explanation of rebasing](http://git-scm.com/book/en/v2/Git-Branching-Rebasing).

> **_NOTE:_** Do not rebase published branches (e.g. branches that are part of a pull request). If you created a pull request, you should only add commits in your feature branch to fix things that have been discussed. After your pull request contains all fixes, you are ready to merge the pull request into develop without rebasing (see e.g. rebase-vs-merge).

## Finish a Feature
Copy link
Contributor

@tapaswenipathak tapaswenipathak May 21, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

say?

Adding a feature to OpenMS


Features that should go into the main development line of OpenMS should be integrated via a [pull request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests). This allows the development community of OpenMS to discuss the changes and suggest possible improvements.

After opening the pull request via the GitHub web site, GitHub will try to create the pull request against the branch that you branched off from. Please check the branch that you are opening the pull request against before submitting the pull request. If any changes are made, a new pull request is required. Select **Allow others to make changes to this pull request** so that maintainers can directly help to solve problems.

Open pull requests only after checking code-style, documentation and passing tests. Pull requests that do not pass CI or code review will not be merged until the problems are solved. It is recommended that you read the [checklist](pull-request-checklist.md) before you submit a pull request.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

let's replace:

checklist
w/
pull request guidelines.

(skip changing the file name)


## Update Git Submodules

Start in your local OpenMS/OpenMS repository (on your feature/pull request branch).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

let's say:

OpenMS/OpenMS


The following example uses a submodule called `THIRDPARTY`.

```bash
git submodule update --init THIRDPARTY
cd THIRDPARTY
# yes, in the submodules the default remote is origin
# usually you want to pull the changes from master (e.g. after your pull request to OpenMS/THIRDPARTY has been merged)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

say:

master/main

git pull origin master
cd ..
git status
# Make sure that you see "modified: THIRDPARTY (new commits)"
git commit -am "updated submodule"
```
218 changes: 218 additions & 0 deletions docs/faqs/contributor-faq.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,218 @@
Contributor FAQ
===============

The following contains answers to typical questions from contributors about OpenMS.

## General

The following section provides general information to new contributors.

### I am new to OpenMS. What should I do first?

* Check out the development version of OpenMS (see website).
Copy link
Contributor

@tapaswenipathak tapaswenipathak May 21, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

let's replace

(see website)

w/

, see OpenMS [releases and installers](downloads/releases.md).

* Try and build OpenMS according to the installation instructions.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Delete:

Try and

* Read the [OpenMS Coding Conventions](https://github.com/OpenMS/OpenMS/wiki/Coding-conventions).
* Read the OpenMS Tutorial.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

link to OpenMS Tutorial? i think it was there before.

* Create a GitHub account.
* Subscribe to the [open-ms-general](https://sourceforge.net/projects/open-ms/lists/open-ms-general) and [open-ms-developers]() mailing lists.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

> ***_NOTE:_*** You can see the developers list only if you are logged in to Sourceforge and if you are a OpenMS developer.

### What is the difference between an OpenMS tool and util?

A tool starts its lifecycle in `UTILS` and may exist without being thoroughly tested. Tools may be promoted from `UTILS` to `TOOLS` if they are stable enough, are fully tested, fully documented, and a test workflow exists.

### I have written a class for OpenMS. What should I do?

Follow the [OpenMS coding conventions](coding-conventions.md).

Coding style (brackets, variable names, etc.) must conform to the conventions.

* The class and all the members must be documented thoroughly.
* You can check your code with the tool `tools/checker.php`. Call `php tools/checker.php` for detailed instructions.

Please open a pull request and follow the [checklist](pull-request-checklist.md).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

let's prefer saying, guidelines everywhere instead of checklist, only let the file name include checklist.


## Troubleshooting

The following section provides information about how to troubleshoot common OpenMS issues.

### OpenMS complains about boost not being found

`CMake` got confused. Set up a new build directory and try again. If you build from source, deleting the `CMakeCache.txt` and `cmake` directory might help.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

delete: if you.


## Build System

The following questions are related to the build system.

### What is CMake?

`CMake` builds BuildSystems for different platforms, e.g. VisualStudio Solutions on Windows, Makefiles on Linux etc.
This allows us to define in one central location (namely `CMakeLists.txt`) how OpenMS is build and have the platform specific stuff handled by `CMake`.
View the [cmake website[(http://www.cmake.org) for more information.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[ -> ].


### How do I use CMake?

See Installation instructions for your platform.
In general, you call `CMake(.exe)` with some parameters to create the native build-system.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

delete. you.

Afterwards you can (but usually don't have to edit the current configuration using a GUI named `ccmake` (or `CMake-GUI` in Windows), which ships with `CMake`).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

delete: you can.


> **_NOTE:_** whenever `ccmake` is mentioned in this document, substitute this by `CMake-GUI` if your OS is Windows. You can also edit the `CMakeCache.txt` file directly.

### How do I generate a build-system for Eclipse, KDevelop, CodeBlocks etc?

Type `cmake` into a console. This will list the available code generators available on your platform, which you can pass to `CMake` using the `-G` option.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

let's say:

which you can pass to

pass them to


### How do I switch to debug or release configuration?

For Makefile generators (typically on Linux), you can set the `CMAKE_BUILD_TYPE` variable to either Debug or Release by calling `ccmake`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

delete:

you can.

For Visual Studio, this is not necessary as all configurations are generated and you can choose the one you like within the IDE itself.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

delete:

you can.

(as we discussed multiple times, let's make sure we do not have wrong occurrence of you/your/we in next iteration)

The 'Debug' configuration enabled debug information. The 'Release' configuration disables debug information and enables optimisation.

### How do I add a new class to the build system?

1. Create the new class in the corresponding sub-folder of the sub-project. The header has to be created in `src/<sub-project>/include/OpenMS` and the cpp file in `src/<sub-project>/source`, e.g., `src/openms/include/OpenMS/FORMAT/NewFileFormat.h` and `src/openms/source/FORMAT/NewFileFormat.cpp`.
2. Add both to the respective sources.cmake file in the same directory (e.g., `src/openms/source/FORMAT/` and `src/openms/include/OpenMS/FORMAT/`).
3. Add the corresponding class test to `src/tests/class_tests/<sub-project>/` (e.g., `src/tests/class_tests/openms/source/NewFileFormat_test.cpp`).
4. Add the test to the `executables.cmake` file in the test folder (e.g., `src/tests/class_tests/openms/executables.cmake`).
5. Add them to git by using the command `git add`.

### How do I add a new directory to the build system?

1. Create two new `sources.cmake` files (one for `src/<sub-project>/include/OpenMS/MYDIR`, one for `src/<sub-project>/source/MYDIR`), using existing `sources.cmake` files as template.
2. Add the new `sources.cmake` files to `src/<sub-project>/includes.cmake`
3. If you created a new directory directly under `src/openms/source`, then have a look at `src/tests/class_tests/openms/executables.cmake`.
4. Add a new section that makes the unit testing system aware of the new (upcoming) tests.
5. Look at the very bottom and augment `TEST_executables`.
6. Add a new group target to `src/tests/class_tests/openms/CMakeLists.txt`.

## Debugging

The following section provides information about how to debug your code.

### How do I run a single test?

You can can execute an OpenMS class test using the CTest regular expressions:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

delete:

You can


```bash

ctest -V -R "^<class>_test"

# To build a class test, you simply call the respective make target in ./source/TEST:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

delete:

you simply


make <class>_test
```
To run a TOPP test, you can use:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

delete:

you can.


```bash

ctest -V -R "TOPP_<tool>"
```

To build the tool, use:

```bash
make <tool>
```
### How do I debug uncaught exceptions?

You can dump a core if an uncaught exception occurs, by setting the environment variable `OPENMS_DUMP_CORE`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

delete:

You can.


Each time an uncaught exception occurs, the `OPENMS_DUMP_CORE` variable is checked and a segmentation fault is caused, if it is set.

### (Linux) Why is no core dumped, although a fatal error occured?

Try the `ulimit -c` unlimited command. It sets the maximum size of a core to unlimited.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

let' say:

Use the..

instead of

Try the


> **_NOTE:_** We observed that, on some systems, no core is dumped even if the size of the core file is set to unlimited. We are not sure what causes this problem

### (Linux) How can I set breakpoints in gdb to debug OpenMS?

Imagine you want to debug the TOPPView application and you want it to stop at line 341 of SpectrumMDIWindow.C.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

delete:

Imagine you want.

🙂


1. Enter the following in your terminal:

```bash
Run gdb:
shell> gdb TOPPView
```

2. Start the application (and close it):

```bash
gdb> run [arguments]
```
3. Set the breakpoint:
```bash
gdb> break SpectrumMDIWindow.C:341
```
4. Start the application again (with the same arguments):

```bash
gdb> run
```

## Cross-platform thoughts

OpenMS runs on three major platforms. Here are the most prominent causes of "it runs on Platform A, but not on B. What now?"

### Reading or writing binary files
Reading or writing binary files causes different behaviour. Usually Linux does not make a difference between text-mode and binary-mode when reading files. This is quite different on Windows as some bytes are interpreted as `EOF`, which lead might to a premature end of the reading process.

If reading binary files, make sure that you explicitly state that the file is binary when opening it.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

let's say:

make sure that you

make sure to


During writing in text-mode on Windows a line-break (`\n`) is expanded to (`\r\n`). Keep this in mind or use the `eol-style` property of subversion to ensure that line endings are correctly checked out on non-Windows systems.

### `UInt` vs `Size`
Both `unsigned int` vs `size_t` `UInt` and `Size` have the same size on Linux GCC (32bit on 32bit systems, 64bit on 64 bit systems), however on Windows this only holds for 32bit. On a 64bit Windows, the `UInt` type is still 32bit, while the `Size` type is 64bit. This might lead to warnings (at best) or overflows and other drawbacks.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

let's use:

32 bit or 64 bit, adding a space b/w number and bit.

Therefore, do not assume that `UInt` is equal to `Size`.

### Paths and system functions

Avoid hardcoding e.g.`String tmp_dir = "/tmp";`. This will fail on Windows. Use Qt's `QDir` to get a path to the systems temporary directory if required.

Avoid names like uname which are only available on Linux.

When working with files or directories, it is usually safe to use "/" on all platforms. Take care of spaces in directory names though. You should always quote paths if they are used in a system call to ensure that the subsequent interpreter takes the spaced path as a single entity.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

delete:

You should


## Doxygen Documentation

### Where can I find the definition of the main page?

You can find a definition of the main page [here](https://github.com/OpenMS/OpenMS/edit/develop/doc/doxygen/public/Main.doxygen).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i'm not sure, if i'm repeating myself on this text again:

delete:

You can.

(ofcourse, I can)


### Where can I add a new module?

You can add a new module [here](https://github.com/OpenMS/OpenMS/edit/develop/doc/doxygen/public/Modules.doxygen).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

delete:

You can.



### How is the command line documentation for TOPP/UTILS tools created?

The program `OpenMS/doc/doxygen/parameters/TOPPDocumenter.cpp` creates the command line documentation for all classes that are included in the static `ToolHandler.cpp` tools list. It can be included in the documentation using the following `doxygen` command:

`@verbinclude TOPP_<tool name>.cli`

You can test if everything worked by calling `make doc_param_internal`. The command line documentation is written to `OpenMS/doc/doxygen/parameters/output/`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

delete:

You can

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

let's follow this everywhere.


### What are the important files for adding a new tutorial section?

View the following OpenMS tutorials:

* `OpenMS/doc/OpenMS_tutorial/refman_overwrite.tex.in` (for PDF tutorials)
* `OpenMS/doc/doxygen/public/OpenMS_Tutorial_html.doxygen~` (for html tutorials)
Copy link
Contributor

@tapaswenipathak tapaswenipathak May 21, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

delete:

tilde character: ~.


View the following TOPP and TOPPView tutorials:

* `OpenMS/doc/TOPP_tutorial/refman_overwrite.tex.in` (for PDF tutorials)
* `OpenMS/doc/doxygen/public/TOPP_Tutorial_html.doxygen` (for html tutorials)

## Bug Fixes

### How do I contribute to a bug fix?

To contribute to a bug fix:
1. Submit the bug as a GitHub issue.
2. Create a feature branch (e.g. `feature/fix_missing_filename_issue_615`) from your (up-to-date) develop branch in your fork of OpenMS.
3. Fix the bug and add a test.
4. Create a pull request for your branch.
5. After approval and merge make sure the issue is closed.

Binary file added docs/images/click-fork.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading