|
| 1 | +_model: page |
| 2 | +--- |
| 3 | +_template: page-with-toc.html |
| 4 | +--- |
| 5 | +title: Foundational technologies |
| 6 | +--- |
| 7 | +description: Most or many of Creative Commons' projects require a working |
| 8 | +knowledge of these foundational technologies. |
| 9 | +--- |
| 10 | +body: <!-- disregard: vim syntax highlighting fix_ --> |
| 11 | + |
| 12 | + |
| 13 | +## Step zero |
| 14 | + |
| 15 | +Welcome to Creative Commons (CC) software development! We are glad you are |
| 16 | +here! ❤️ |
| 17 | + |
| 18 | +Before engaging with our projects, please ensure you have a working knowledge |
| 19 | +of the following technologies: |
| 20 | +1. Slack |
| 21 | +2. Command line interface (CLI) |
| 22 | +3. Code editor |
| 23 | +4. GitHub and git |
| 24 | +5. Docker |
| 25 | + |
| 26 | + |
| 27 | +## Slack |
| 28 | + |
| 29 | +Slack is currently our primary channel for chat and lower latency communication. |
| 30 | + |
| 31 | +For more information, see [Join the CC Developer Community](/community/). |
| 32 | + |
| 33 | + |
| 34 | +## Command line interface (CLI) |
| 35 | + |
| 36 | +Often shortened to just "command line" or referred to as the "console" or |
| 37 | +"terminal", the command line interface (CLI) is where quite a bit of software |
| 38 | +development work happens. |
| 39 | + |
| 40 | + |
| 41 | +### Getting started with the CLI |
| 42 | + |
| 43 | +- [Terminal Tutor – learn the Command Line interactively][terminal-tutor] |
| 44 | + |
| 45 | +[terminal-tutor]: https://www.terminaltutor.com/ |
| 46 | + |
| 47 | + |
| 48 | +## Code editor |
| 49 | + |
| 50 | +A code editor or integrated development environment (IDE) provides strong |
| 51 | +support for software development. Which one you use is up to personal |
| 52 | +preference. The two editors used by the Technology team are currently Visual |
| 53 | +Studio Code (recommended) and Vim. |
| 54 | + |
| 55 | + |
| 56 | +### Visual Studio Code |
| 57 | + |
| 58 | +- [Visual Studio Code - Code Editing. Redefined][vscode] |
| 59 | +- Highlighted features: |
| 60 | + - [Emmet in Visual Studio Code][emmet] |
| 61 | +- Recommended plugins: |
| 62 | + - [Docker - Visual Studio Marketplace][vscode-docker] *makes it easy to |
| 63 | + build, manage, and deploy containerized applications from Visual Studio |
| 64 | + Code. It also provides one-click debugging of Node.js, Python, and .NET |
| 65 | + inside a container.* |
| 66 | + - [Prettier - Code formatter - Visual Studio Marketplace][prettier]: *is an |
| 67 | + opinionated code formatter.* |
| 68 | + - Prettier is especially helpful for Web develoment (HTML, JavaScript, |
| 69 | + etc.) |
| 70 | + - [Rewrap - Visual Studio Marketplace][rewrap] |
| 71 | + - Some of our repositories hard wrap code and text at 80 characters |
| 72 | + |
| 73 | +[vscode]: https://code.visualstudio.com/ |
| 74 | +[emmet]: https://code.visualstudio.com/docs/editor/emmet |
| 75 | +[vscode-docker]: https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-docker |
| 76 | +[prettier]: https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode |
| 77 | +[rewrap]: https://marketplace.visualstudio.com/items?itemName=stkb.rewrap |
| 78 | + |
| 79 | + |
| 80 | +### Vim |
| 81 | + |
| 82 | +- [welcome home : vim online](https://www.vim.org/) |
| 83 | +- Recommended plugins (install Vundle first): |
| 84 | + - [godlygeek/tabular][tabular]: *Vim script for text filtering and alignment* |
| 85 | + - (required by vim-markdown) |
| 86 | + - [preservim/vim-markdown][vim-md]: *Markdown Vim Mode* |
| 87 | + - [VundleVim/Vundle.vim][vundle]: *Vundle, the plug-in manager for Vim* |
| 88 | + |
| 89 | +[tabular]: https://github.com/godlygeek/tabular |
| 90 | +[vim-md]: https://github.com/preservim/vim-markdown |
| 91 | +[vundle]: https://github.com/VundleVim/Vundle.vim |
| 92 | + |
| 93 | + |
| 94 | +## GitHub and git |
| 95 | + |
| 96 | +All of our projects require a working knowledge of GitHub. It is our primary |
| 97 | +repository for code and we utilize many of the sites features for managing |
| 98 | +code and higher latency communication. |
| 99 | + |
| 100 | +[Git - Wikipedia](https://en.wikipedia.org/wiki/Git): |
| 101 | +> Git (/ɡɪt/) is a distributed version control system that tracks |
| 102 | +> versions of files. It is often used to control source code by programmers who |
| 103 | +> are developing software collaboratively. |
| 104 | +
|
| 105 | + |
| 106 | +### Installing GitHub |
| 107 | + |
| 108 | +As a web service, GitHub doesn't require any installation. However, once you |
| 109 | +become more familiar with it, you may benefit from installing the GitHub |
| 110 | +command line utility: |
| 111 | +- [GitHub CLI | Take GitHub to the command line](https://cli.github.com/) |
| 112 | + |
| 113 | + |
| 114 | +### Installing git |
| 115 | + |
| 116 | +- **Linux:** Git is optimally installed using your distribution's package |
| 117 | + manager. See [Git- Download for Linux and Unix][linux-git] for a wide range |
| 118 | + of popular distros. |
| 119 | +- **macOS:** Mac users can install Git using these instructions: [Git - |
| 120 | + Installing Git - Installing on macOS][macos-git] |
| 121 | +- **Windows:** |
| 122 | + - You must use Windows 10 or 11 with Windows Subsystem for Linux (WSL2). For |
| 123 | + installation instructions: see [Install WSL | Microsoft Learn][wsl2]. |
| 124 | + - Git should be installed within WSL2, using the appropriate Linux |
| 125 | + installation method. For WSL2 Ubuntu, the command is: |
| 126 | + ```shell |
| 127 | + sudo apt-get install git |
| 128 | + ``` |
| 129 | + |
| 130 | +[linux-git]: https://git-scm.com/download/linux |
| 131 | +[macos-git]: https://git-scm.com/book/en/v2/Getting-Started-Installing-Git#_installing_on_macos |
| 132 | +[wsl2]: https://docs.microsoft.com/en-us/windows/wsl/install |
| 133 | + |
| 134 | + |
| 135 | +### Getting started with GitHub and Git |
| 136 | + |
| 137 | +Thankfully GitHub's documentation is relatively robust. Please see: |
| 138 | +- [Get started with GitHub documentation - GitHub Docs][github-start] |
| 139 | + - [GitHub flow - GitHub Docs][github-flow] |
| 140 | +- [GitHub Training Manual][github-training] |
| 141 | +
|
| 142 | +[github-start]: https://docs.github.com/en/get-started |
| 143 | +[github-flow]: https://docs.github.com/en/get-started/using-github/github-flow |
| 144 | +[github-training]: https://githubtraining.github.io/training-manual/#/ |
| 145 | +
|
| 146 | +
|
| 147 | +### CC specifics for GitHub |
| 148 | +
|
| 149 | +For some specifics on how we use GitHub, please see the following information |
| 150 | +on this site: |
| 151 | +- [Pull Request Guidelines — Creative Commons Open Source][ccos-prs] |
| 152 | +- [GitHub Repo Guidelines — Creative Commons Open Source][ccos-repos] |
| 153 | +- [Repository Labels — Creative Commons Open Source][ccos-labels] |
| 154 | +
|
| 155 | +[ccos-prs]: /contributing-code/pr-guidelines/ |
| 156 | +[ccos-repos]: /contributing-code/github-repo-guidelines/ |
| 157 | +[ccos-labels]: /contributing-code/repo-labels/ |
| 158 | +
|
| 159 | +
|
| 160 | +## Docker |
| 161 | +
|
| 162 | +[Docker (software) - Wikipedia][wikipedia-docker]: |
| 163 | +> Docker is a set of platform as a service (PaaS) products that use OS-level |
| 164 | +> virtualization to deliver software in packages called containers. [...] |
| 165 | +> |
| 166 | +> Docker is a tool that is used to automate the deployment of applications in |
| 167 | +> lightweight containers so that applications can work efficiently in different |
| 168 | +> environments in isolation. |
| 169 | +
|
| 170 | +[wikipedia-docker]: https://en.wikipedia.org/wiki/Docker_(software) |
| 171 | +
|
| 172 | +
|
| 173 | +### Installing Docker |
| 174 | +
|
| 175 | +- **Linux:** Both Docker Desktop and Docker Engine are separately supported on |
| 176 | + Linux. Both include the required Compose command plugin, but Docker Engine is |
| 177 | + typically much easier to install: |
| 178 | + - _Recommended:_ See [Install Docker Engine | Docker |
| 179 | + Docs][linux-docker-engine] for links to installation instructions for |
| 180 | + Docker Engine and Compose for various Linux distributions. |
| 181 | + - See [Install Docker Desktop on Linux | Docker Docs][linux-docker-desktop] |
| 182 | + for links to instructions for the graphical desktop app that includes the |
| 183 | + commandline interface and Compose |
| 184 | +- **macOS:** Docker Desktop can be installed using these instructions: [Install |
| 185 | + Docker Desktop on Mac | Docker Docs][macos-docker]. |
| 186 | +- **Windows:** Docker Desktop should be installed on Windows itself and |
| 187 | + integrated with Windows Subsystem for Linux (WSL2) as explained in [Docker |
| 188 | + Desktop WSL 2 backend on Windows | Docker Docs][windows-docker]. Unlike Git, |
| 189 | + you should not install Docker within your WSL2 environment. For installation |
| 190 | + instructions: see [Install WSL | Microsoft Learn][wsl2]. |
| 191 | +
|
| 192 | +[linux-docker-engine]: https://docs.docker.com/engine/install |
| 193 | +[linux-docker-desktop]: https://docs.docker.com/desktop/install/linux-install |
| 194 | +[macos-docker]: https://docs.docker.com/desktop/install/mac-install |
| 195 | +[windows-docker]: https://docs.docker.com/desktop/windows/wsl |
| 196 | +[wsl2]: https://docs.microsoft.com/en-us/windows/wsl/install |
| 197 | +
|
| 198 | +
|
| 199 | +### Getting started with Docker |
| 200 | +
|
| 201 | +- [A Docker Tutorial for Beginners][docker-tutorial] |
| 202 | +
|
| 203 | +[docker-tutorial]: https://docker-curriculum.com/ |
| 204 | +
|
| 205 | +
|
| 206 | +### Docker compose |
| 207 | +
|
| 208 | +Our projects use [Docker Compose | Docker Docs][docker-compose]. |
| 209 | +
|
| 210 | +[docker-compose]: https://docs.docker.com/compose/ |
| 211 | +
|
| 212 | +
|
| 213 | +## Next steps |
| 214 | +
|
| 215 | +We have added a lot of documentation (ex. language guides) and tooling (issue |
| 216 | +finder) to this site that cover frequently asked questions and confusions. |
| 217 | +Please explore this site and reach out on Slack for additional assistance. |
0 commit comments