Skip to content
Sean T. McBeth edited this page Mar 2, 2017 · 5 revisions

When you are first learning to program, there are a lot of unfamiliar tools that you have to learn to use all at once. Luckily, they apply to most of the projects that you will work on over your career.

The basic things we need are:

  • A computer with a good keyboard in a comfortable spot. If you are just working on the website or documentation or design, just about any computer will do. If you would like to use Primrose to do Virtual Reality, you'll need a VR-ready PC.
  • A command line interface (CLI). This is a program that runs on your computer that makes it possible to combine lots of different commands to control your computer. We also describe some of the options available for.
  • A GitHub account. GitHub is this website hosting our Wiki! It does many other things as well.
  • A graphical user interface (GUI) for using Git. Git on its own is difficult to use.
  • A plain text editor. We need a way to write code.

Command Line Interface (CLI)

A command line interface is a simple interface for entering text-based commands that your computer will interpret and use to run different programs.

CLI on macOS

On macOS, most people use Terminal, which by default uses BASH.

CLI on Linux

If you're on Linux, I suspect you are a not a beginner and probably already have a personal preference for your CLI. If that is not the case, Xterm is a very popular terminal emulator, with BASH as the shell being the default for most distributions.

CLI on Windows

While there are a few options that are installed by default on Windows, our recommendation is to use Git BASH. Git BASH installs as part of Git for Windows. If you install one of the Git GUIs from below, they will also install Git for Windows and thus Git BASH. Git BASH is the same BASH from Unix-like operating systems such as macOS and Linux, adapted to run on Windows. Because BASH works the same on all three operating systems, many examples that you find online that are written with respect to one will still apply to the other two.

GitHub account

If you haven't yet joined, it's free to join.

GitHub is a service that hosts Git repositories. Git is a version control system. It's makes it possible for us to quickly and easily share code between each other. It also keeps a record of all the changes we make to our code. It's sort of like an infinitely long UNDO command, except it doesn't go away when you close the editor program. It also helps us combine the independent changes we make into one cohesive whole.

There are lots of different version control systems in the world, but Git is one of the best, and GitHub only works with Git.

Once you have your GitHub account set up, you'll want to follow the instructions for Setting your email in Git, as well as Setting your username in Git

Git GUI

By default, Git uses a command line interface. But its commands are somewhat arcane. There are a lot of them as well, and they can be difficult to remember. A "Git GUI" is an application that runs on your computer that provides a graphical user interface to using Git on your projects. It makes finding the different commands easier and it guides us through fulfilling the requirements of those commands.

There are a few options available:

  • GitHub Desktop. Available on Windows and macOS. GitHub Desktop is really easy to setup, works really well with GitHub, and has a great, minimalist design. It also integrates with GitHub to streamline creating Pull Requests. I used to use GitHub Desktop a lot and still recommend it for beginners.
  • Axosoft GitKraken. It has a similar interface to GitHub Desktop, but with more advanced features like a better DIFF view and access to more Git commands.
  • Atlassian SourceTree. SourceTree works with a few different types of version control systems, including Git and Mercurial. It has a lot of features, but the interface isn't as clean and concise as the others.

Plain text editor

Word processors like MS Word have to store extra information about page layout and formatting in order to create rich documents that have lots of design and style features. But that extra information will cause errors in the other programs we will use to write, manipulate, and run our code. What we need instead is a "Plain Text" editor. Plain text is a file that stores only the text you wrote, with no styling information. You can't make anything bold or underlined or different fonts or different size. But we don't need that to write code.

There are a LOT of options available for text editors. It mostly comes down to personal preference which one you use. If you're just starting out, you probably just want something that is easy to install and easy to use. With a few exceptions, they all pretty much work the same way. Sublime Text, Atom, Visual Studio Code, Notepad++, Notepad2, all are free and fairly easy to use.

The primary features you'll be looking for in a text editor are:

  • Syntax highlighting: different types of code elements will be drawn in different colors, making it easier to differentiate between them.
  • Line numbering: we often have to make only small changes to files, and having the ability to easily refer to specific lines in the file is very helpful.
  • Folder tree view: it's a lot easier to work on a large project if the editor has its own view of the files that live in the project's folder.

This is just the beginning

These are just the tools that are common to all projects, regardless of programming language. Continue on to read Working on Primrose to learn the specific programming languages we use and how to get them set up so you can start making changes.