Skip to content

Commit

Permalink
consolidate docs and add package manager page
Browse files Browse the repository at this point in the history
Signed-off-by: pogi7 <[email protected]>
  • Loading branch information
pogi7 committed May 2, 2024
1 parent 46c5f59 commit d7d18b2
Show file tree
Hide file tree
Showing 8 changed files with 76 additions and 304 deletions.
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
---
sidebar_position: 2
sidebar_position: 1
---

# Automated Builds and Testing
# Agile Development

Let's discover the basics of pleasant and effective **developer experience in less than 5 minutes**.
## Automated Building and Testing

## Version Control
Automated building and testing software is important to pleasant and effective DX.

## CICD Pipelines

[Version control](https://www.atlassian.com/git/tutorials/what-is-version-control) is a way to keep track and manage changes to software code.

Expand Down Expand Up @@ -42,7 +44,44 @@ For a developer, Github is used for a development team to see new changes in a c

An example of a Github repo is shown [here](https://github.com/opencaesar/oml-vision)

## Documenting Code
## DevSecOps

Documenting code is very important because it allows you and the rest of the development team to understand how your code works and is supposed to behave.

Documentation helps dev teams onboard new developers much faster and prevent information from being lost due to turnover or forgetting.

### Comments

Code comments are very helpful for developers because you can put the code documentation right next to the code.

It is highly recommended to follow the documentation standard for your language that your dev team is using.

The list includes some of the most widely used programming languages from [Stack Overflow's 2022 insights](https://survey.stackoverflow.co/2022#section-most-popular-technologies-programming-scripting-and-markup-languages):
- [Python](https://peps.python.org/pep-0257/)
- [Java](https://www.baeldung.com/javadoc#javadoc-comments)
- [Typescript](https://tsdoc.org/)

An example of a Typescript comment that matches a Typescript standard is shown [here](https://github.com/opencaesar/oml-vision/blob/0db2cc46778f1441474c0d4aebc071df453cf52d/controller/src/utilities/loaders/loadCommandFiles.ts#L6-L15)

### READMEs

READMEs are nice to explain higher level functionality of a program, function, class, or piece of software within an app or a piece of software that interacts with your dev team's app.

READMEs can be included at any level of a Git repo, but generally recommended at the root or top level of a repo so that all developers will know where the README is.

READMEs can be written in any programming language, but they are generally written in [plain text](https://www.adobe.com/uk/acrobat/resources/document-files/text-files/txt.html) (.txt) or [Markdown](https://www.markdownguide.org/) (.md) files.

An example of a README.md in a Github repo is shown [here](https://github.com/opencaesar/oml-vision/blob/0db2cc46778f1441474c0d4aebc071df453cf52d/README.md)

### Wikis

Wikis are a good alternative to READMEs when you don't want to store high level documentation about your app inside a Git repo.

According to [Stack Overflow's 2022 insights](https://survey.stackoverflow.co/2022#section-most-popular-technologies-asynchronous-tools), a very common wiki that dev teams use is [Confluence](https://www.atlassian.com/software/confluence)

An example of a Confluence page detailing the architecture of an app is shown [here](https://openmbee.atlassian.net/wiki/spaces/OPENMBEE/pages/320765953/Flexo-MMS+Architecture)

## Ticket System

Documenting code is very important because it allows you and the rest of the development team to understand how your code works and is supposed to behave.

Expand Down
2 changes: 1 addition & 1 deletion docs/advanced-tips/artificial-intelligence.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
sidebar_position: 1
sidebar_position: 2
---

# Artifical Intelligence
Expand Down
80 changes: 0 additions & 80 deletions docs/advanced-tips/devsecops.md

This file was deleted.

80 changes: 0 additions & 80 deletions docs/advanced-tips/open-source-libraries.md

This file was deleted.

85 changes: 29 additions & 56 deletions docs/advanced-tips/package-manager.md
Original file line number Diff line number Diff line change
@@ -1,80 +1,53 @@
---
sidebar_position: 5
sidebar_position: 3
---

# Package Managers

Let's discover the basics of pleasant and effective **developer experience in less than 5 minutes**.
Package managers are an important way to improve the pleasantness and effectiveness of DX.

## Version Control
All package managers are used to add, remove, modify, upgrade, and maintain software.

[Version control](https://www.atlassian.com/git/tutorials/what-is-version-control) is a way to keep track and manage changes to software code.
## OS Level

Version control can allow developer teams to keep track, mitigate, and resolve errors that may arise from code degradation or human error.
For most developers an OS (operating system) level package manager will be the most important package manager to use. These package managers install software into a common folder on a computer making managing software much easier.

### Git
### Windows

:::tip What is Git?
By default, Windows does not come with a package manager.

[Atlassian](https://www.atlassian.com/git/tutorials/what-is-git) does a good job explaining what Git is and the benefits of adopting the technology within a development team.
The two most common Windows package managers are:
- [Chocolatey](https://chocolatey.org/)
- [Scoop](https://scoop.sh/)

:::
### macOS

According to [Stack Overflow's 2022 insights](https://survey.stackoverflow.co/2022#version-control-version-control-system), Git is the de facto version control software that personal and professional developers use.
By default, macOS does not come with a package manager.

Git is used for managing code locally on a computer. This computer can be a personal computer, a bare metal server, or a cloud instance.
The most common macOS package manager is:
- [HomeBrew](https://brew.sh/)

Git stores code in repos. These local repos can be stored on remote hosting services.
According to [Stack Overflow's 2022 insights](https://survey.stackoverflow.co/2022#section-most-popular-technologies-other-tools), homebrew is the most widely used OS level package manager.

### Github
### Linux

:::tip What is Github?
By default, Linux comes with a package manager.

[Github](https://docs.github.com/en/get-started/start-your-journey/about-github-and-git) does a good job explaining how Git and Github interact with each other and the benefits of using Github.
Each distro of Linux comes with a unique package manager but here are the most common:
- [DNF](https://en.wikipedia.org/wiki/DNF_(software))
- [APT](https://en.wikipedia.org/wiki/APT_(software))

:::
## Programming Language Level

According to [Stack Overflow's 2022 insights](https://survey.stackoverflow.co/2022#section-version-control-version-control-platforms), Github is the most used version control platform that personal and professional developers use.
Most programming languages have package managers. These package managers are used to get libraries or dependencies from open source repositories that have been published to the registry of the package managers.

Github is used to store Git repos that can be accessed by developers with the correct authorization.
Most programming languages have a package manager but here are some for the most popular programming languages:
- [pyPI](https://pypi.org/)
- [npm](https://www.npmjs.com/)
- [maven](https://maven.apache.org/)

For a developer, Github is used for a development team to see new changes in a codebase and keep track of and manage those changes.
## App Level

An example of a Github repo is shown [here](https://github.com/opencaesar/oml-vision)
Some large scale apps have package managers as well. This helps since a developer does not need to recreate functionality if it already on the app's package manager registry.

## Documenting Code

Documenting code is very important because it allows you and the rest of the development team to understand how your code works and is supposed to behave.

Documentation helps dev teams onboard new developers much faster and prevent information from being lost due to turnover or forgetting.

### Comments

Code comments are very helpful for developers because you can put the code documentation right next to the code.

It is highly recommended to follow the documentation standard for your language that your dev team is using.

The list includes some of the most widely used programming languages from [Stack Overflow's 2022 insights](https://survey.stackoverflow.co/2022#section-most-popular-technologies-programming-scripting-and-markup-languages):
- [Python](https://peps.python.org/pep-0257/)
- [Java](https://www.baeldung.com/javadoc#javadoc-comments)
- [Typescript](https://tsdoc.org/)

An example of a Typescript comment that matches a Typescript standard is shown [here](https://github.com/opencaesar/oml-vision/blob/0db2cc46778f1441474c0d4aebc071df453cf52d/controller/src/utilities/loaders/loadCommandFiles.ts#L6-L15)

### READMEs

READMEs are nice to explain higher level functionality of a program, function, class, or piece of software within an app or a piece of software that interacts with your dev team's app.

READMEs can be included at any level of a Git repo, but generally recommended at the root or top level of a repo so that all developers will know where the README is.

READMEs can be written in any programming language, but they are generally written in [plain text](https://www.adobe.com/uk/acrobat/resources/document-files/text-files/txt.html) (.txt) or [Markdown](https://www.markdownguide.org/) (.md) files.

An example of a README.md in a Github repo is shown [here](https://github.com/opencaesar/oml-vision/blob/0db2cc46778f1441474c0d4aebc071df453cf52d/README.md)

### Wikis

Wikis are a good alternative to READMEs when you don't want to store high level documentation about your app inside a Git repo.

According to [Stack Overflow's 2022 insights](https://survey.stackoverflow.co/2022#section-most-popular-technologies-asynchronous-tools), a very common wiki that dev teams use is [Confluence](https://www.atlassian.com/software/confluence)

An example of a Confluence page detailing the architecture of an app is shown [here](https://openmbee.atlassian.net/wiki/spaces/OPENMBEE/pages/320765953/Flexo-MMS+Architecture)
An example of an app having a package manager is Kubernetes's [Helm](https://helm.sh)
2 changes: 1 addition & 1 deletion docs/advanced-tips/standard-development-environment.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
sidebar_position: 6
sidebar_position: 4
---

# Standard Development Environments
Expand Down
Loading

0 comments on commit d7d18b2

Please sign in to comment.