Git Product home page Git Product logo

development-guidelines's People

Contributors

airenzp avatar fasterius avatar inghylt avatar jbygdell avatar jhagberg avatar kusalananda avatar mihai-sysbio avatar norling avatar pontus avatar viklund avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

development-guidelines's Issues

Improve section on code comments

Update the section on code comments with requiring "what the code does" in the comments, as well as examples/links to best practices.

Packaging

Add section on tips on how to do packaging with for example

  • Containers
  • Conda
  • Github releases
  • and so on

Pull requests update

Introduce Draft pull requests
An author might want early feedback about some complex code base that might need extra tuning. The code might be still in early stage, but the comments can be valuable for the author.

Introduce PR templates
Beneficial if multiple persons are involved writing the code, see example below

Describe the pull request:

  • Bug fix
  • Functional change
  • New feature
  • Code cleanup
  • Build system change
  • Documentation change
  • Language translation

Pull request long description:

Changes made:

Related issues:

Additional information:

Release note:

Documentation change:

Mentions:

External contribution

Should have a CONTRIBUTION file to help indicate that outsiders are welcome to contribute in our open source projects!

Container usage

Team ๐ŸŸจ:

We usually use docker for easy setup for deployment and reproducibility across team members. Some recommendations about this could be in the document or in a separate document.

Another alternative to docker that's used in uppmax (afaik) is Singularity.

Dan philosophises: Although mostly removes the "works on my computer"-problem, where code that consistently works on your computer fails when your colleague tries it, it comes with some problems on its own. Setting up docker for your project can be surprisingly time-consuming. One reason for this is that when trying you typically need to rebuild everything. Volumes (and possibly other caches?) not being reset and emptied can be another problem. Another can be images and non-containerized repositories not being in sync.

This also happens when you check out another branch and need to rebuild everything to try it out.

I am all ears if you know some better way to use docker or have some alternative.

Reproducibility

Should we have a section on reproducibility? This would include guidelines for how to use versioning, package versions, etc. - particularly for analysis tools.

Add link to other NBIS document

Add section on how to use issues

Suggestion from team Yellow:
Write a section on how to work with GitHub issues.

Similar to the existing guidelies for worknig with PRs.

  • Should each new feature start with an issue?
  • When are issues closed, and by whom?
  • Recommended things to include / exclude
  • ...

Add section on agile methods

Suggestion from team Yellow:

Add information and links on this topic. Do we have a standard/preferred way of working?

Sensitive data

add
Everything that includes sensitive data should be in .gitignore

Possible make links to:

  • Docker containers should use secrets for ssh keys and sensitive data
  • Kubernetes

Documentation

Should have links to guides for generating documentation for our most common languages (combined with our thoughts on commenting):
Pydoc, JSDoc...

Related to #19

Update section on programming languages

Suggestion from team Yellow:

The list of "top languages" now includes

  • Python
  • Shell
  • Perl

We suggest that this is updated to reflect the knowledge, use and preferences within the dev group, instead of NBIS in general. Top language would be Python & Shell, and recommended once include TypeScript, Perl, C/C++, R etc.

Merge develop branch into main branch

Someone should merge the develop branch into the main branch.

I noticed there were a PR against the main branch, which was already handled by old (merged) PRs on the develop branch. In general, development should happen on the develop branch.

If the document is in a "stable enough" state, it may be a good idea to merge the develop branch into the main branch.

I'm writing this as an issue rather than just going ahead and merging the branches as I don't know whether there is currently ongoing work to modify the document.

Add continuous integration for tools

  • Use continuous integration (CI) for repositories of tools, pipelines or web-servers etc.
  • What should be the recommended CIs
  • Instructions about how to use CIs (or just links to instructions)

Add recommendation to keep a changelog

I usually try to keep a changelog in my own development projects, because I think it gives a good overview of what has happened. Maybe you want to add some text about that. I personally like the recommendations given at https://keepachangelog.com.

This issue is somewhat related to issue #41 on semantic versioning.

Add example (model) repositories

In sections with coding format and code reviewing, it will be great to link to some examples from the NBIS github repository (or somewhere else).

  • some screenshots might also be nice to be added.

Discuss and update section about licensing

Suggestion from team Yellow:

We appreciate that there is a standard licence to use for all (most) projects, but would like to see a discussion/motivation on which license to go for (GPLv3 vs eg MIT).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.