Your developers don’t work in a vacuum. Chances are pretty good they spend most of their time collaborating with other developers on projects for your company. That collaboration is key to the success of your business. Truth be told, without the ability to collaborate, your software engineers wouldn’t be able to produce at the level your business requires to keep growing and succeeding.
And so they work with others. Those others might be fellow in-house engineers, or they may be developers hired from offshore software outsourcing. It doesn’t matter where they work, though, only that they can work together.
One of the most important tools to enable such collaboration is the software repository.
What is a software repository?
This is the first question your CEOs, CTOs, and COOs might ask. On the surface, you might think a code repository is just a place to store software code. It’s much more than that. Yes, you do have to have a location to house code that is accessible to other developers on your team. But if that’s all a repository is, Google Drive or any other similar service would be enough.
On top of being a location to house code, a repository must also include a version control system. Version control is a group of tools that manage changes in code so you can iterate, check out, push, pull, branch, and generally make modifications to code in such a way that you can access all of its versions (current and previous).
Without version control, maintaining a large code project would be next to impossible, especially when numerous distributed developers are working on it.
There are several repositories you can use. Most teams opt to go the traditional route and host with a third-party like GitHub, which is a great solution because it doesn’t require you to maintain the hardware or the versioning/storage systems required to make the tool function.
Other users and companies prefer to keep their repositories in-house. Why? When you have very sensitive data in your code, or the code itself is of a sensitive/proprietary nature, you might not want to risk that code falling into the hands of someone who might take advantage. To that end, you can always opt to deploy a code repository in-house. Deploying “in-house” means you install the repository software on a server you own. This could be a single server in your physical building and on your Local Area Network or a third-party cloud host.
If that sounds like the perfect solution for you, what options are available? Let’s take a look at four.
Git isn’t just one of the most popular version control systems on the planet, it can also be used to create local repositories for your teams. The one thing you must know about using Git is that it’s command-line only, so your developers must be familiar with how Git works. Of course, any developer who’s collaborated on software projects is most likely familiar with this tool, so it should be a no-brainer.
Git is so popular, you can be sure that offshore software developers, nearshore software developers, and onshore software developers will be adept with the tool. Do note, however, that if you use developers outside of your LAN, you’ll have to set up your Git server in such a way that it can be accessed from the WAN. If this is beyond the scope of your IT staff’s abilities, Git as a software repository tool might not be the best option.
But with Git as a software repository, you have all the power of the git command at your fingertips. So even without a GUI, the system will be flexible and powerful.
GitBucket was written in Scala and offers an intuitive web-based UI, powerful plugin system, API compatibility with GitHub, public and private repositories, GitLFS (large file system) support, repository viewer, online file editor, activity timeline, email notifications, and account and group management (with LDAP integration).
GitBucket uses Java and NGINX to create a user interface that anyone can get up to speed with quickly. Creating repositories with GitBucket is incredibly easy (Figure 1).
Figure 1: gitbucket.jpg
Creating a repository within the GitBucket interface can be done with a few quick clicks.
GitBucket requires a running instance of Linux for installation, so your IT admins will need to have a working knowledge of the open-source platform, to get it up and running.
Gogs is incredibly simple to deploy and includes a very user-friendly, web-based interface. You can host a Gogs repository on Linux, macOS, or Windows from either a standalone binary or installing it from the source. And because Gogs is so lightweight, it can even be deployed to Raspberry Pi, so you can create a very inexpensive local repository for your developers to use.
This particular tool is as simple to get running as any application you’ve ever installed. So if your admins tend to be on the novice side, this might be exactly the solution you need. Gogs features a dashboard, user profiles, activity timeline, SSH and HTTPS protocol support, user/repository management, Git hooks, deploy keys, and GitLFS support, pull request, wiki, protected branches, migration and mirror tools, Jupyter Notebook, and PDF rendering, and SMTP/LDAP/reverse proxy authentication.
Gitea was written in Go and includes common features like a repository file editor, project issue tracking, user management, notifications, a built-in wiki, and all the standard git features your developers depend on. This code repository solution can be deployed from a single binary, as a Docker container, or from a platform-specific package (for Linux, macOS, and Windows).
Gitea is lightweight, open-source, and is sponsored by Digital Ocean, Cloudron, Equinix Metal, and InBlockchain. Like all the other solutions, Gitea works seamlessly with Git. And with an outstanding user interface, your developers can work from either the command line or a GUI.
You have options. In fact, you have several options. Any one of these 4 code repositories can be deployed in-house and serve your developers quite well. Even better, deploying these tools isn’t so challenging that your IT staff couldn’t handle the task. So if your business is concerned about a third-party hosting your code repositories, remove that worry and host them in-house.