Almost ten years have passed since we published the first Cool Solution for UCS 3.0: in 2011, on November 25 at 8:02 am, we created a new page in the Univention Wiki which collects the Cool Solutions for the different versions of Univention Corporate Server. A lot has happened since then: Many instructions are now available in English and no longer in German, and there is a separate section for the Cool Solutions in the Univention forum.
Things have also been happening behind the scenes: In 2015, our Professional Services team replaced code management with Subversion (SVN) by Git. The distributed version control system Git was and still is the right choice for us, so at some point, it was obvious to make UCS development available on the GitHub platform as well. Cool Solutions now also have their own GitHub repository since November 2020.
What exactly does that mean for you ? And how do you benefit from publishing on GitHub? This article introduces our Cool Solutions, gives a short GitHub introduction, and demonstrates how you can use this platform to submit changes and extensions for the Cool Solutions to us yourself.
What are Univention Cool Solutions?
Cool Solutions extend our Univention products. A Cool Solution can be a HOWTO and hence simply a description including tips and tricks. But it can just as easily be a script or a more complex application, which we often publish as a finished package. The solutions thus supplement UCS with useful and practical functions that have often, but not always, been developed in the context of customer projects and documented by us.
Cool Solutions are aimed at technically experienced users and admins. The solutions are not part of the official product scope and are not described in our manuals. There is also no claim to support the associated packages from the same-named repository, and their use is at the user’s own risk.
Support and assistance for Cool Solutions
So what can you do if you have questions about a Cool Solution or encounter a problem with a package or script? A good place to start is the aforementioned forum, which you can reach at https://help.univention.com/. The forum is a place where other UCS users as well as our developers and support staff discuss issues. The forum has search and filter functions and, as previously mentioned, its board revolves exclusively around Cool Solutions.
Tip: If the community does not have an answer, or if you are not sure whether a recommendation fits your infrastructure, it is best to contact our Professional Services team.
Since November 2020, we have made all Cool Solutions available on GitHub. That includes not only the source code but also the installation descriptions and configuration files. This way, the community can extend and improve the solutions, regardless of whether they are Univention employees, customers, or partners. We publish HOWTOs in the corresponding category in our forum. They can be supplemented with necessary packages if necessary.
Brief introduction: GitHub
GitHub is a version management platform for software development projects that was founded in 2008 by the San Francisco-based company of the same name. GitHub has been part of Microsoft since 2018. The name gives it away: the linchpin is the version management system Git, which is perfect for working together on software. Collaborative development of complex applications with hundreds or thousands of developers is also no problem.
GitHub is home to many open source projects: Among other things, developers work here on Ruby on Rails, jQuery, and the Linux kernel. Univention also has a repository on GitHub, where we mirror the development of UCS and UCS@school, various connectors, and client applications. All steps can be done with Git (graphically or on the command line) or through the GitHub web interface; there are also apps for Android and iOS. Registering a GitHub account is free. Besides, there are different payment options with additional features, extra storage, and support.
Short GitHub Glossary
|Repository/ Repo||A repository is the most basic element of GitHub. They’re easiest to imagine as a project’s folder. A repository contains all of the project files (including documentation), and stores each file’s revision history. Repositories can have multiple collaborators and can be either public or private.|
|Clone||A clone is a copy of a repository that lives on your computer instead of on a website’s server somewhere, or the act of making that copy. When you make a clone, you can edit the files in your preferred editor and use Git to keep track of your changes without having to be online. The repository you cloned is still connected to the remote version so that you can push your local changes to the remote to keep them synced when you’re online.|
|Branch||A branch is a parallel version of a repository. It is contained within the repository, but does not affect the primary or main branch allowing you to work freely without disrupting the “live” version. When you’ve made the changes you want to make, you can merge your branch back into the main branch to publish your changes.|
|Fork||A fork is a personal copy of another user’s repository that lives on your account. Forks allow you to freely make changes to a project without affecting the original upstream repository. You can also open a pull request in the upstream repository and keep your fork synced with the latest changes since both repositories are still connected.|
|Pull/ Pull Request||Pull refers to when you are fetching in changes and merging them. For instance, if someone has edited the remote file you’re both working on, you’ll want to pull in those changes to your local copy so that it’s up to date. See also fetch. Pull requests are proposed changes to a repository submitted by a user and accepted or rejected by a repository’s collaborators. Like issues, pull requests each have their own discussion forum.|
|Commit||A commit, or “revision”, is an individual change to a file (or set of files). When you make a commit to save your work, Git creates a unique ID (a.k.a. the “SHA” or “hash”) that allows you to keep record of the specific changes committed along with who made them and when. Commits usually contain a commit message which is a brief description of what changes were made.|
|Merge||Merging takes the changes from one branch (in the same repository or from a fork), and applies them into another. This often happens as a “pull request” (which can be thought of as a request to merge), or via the command line. A merge can be done through a pull request via the GitHub.com web interface if there are no conflicting changes, or can always be done via the command line.|
If you would like to contribute your ideas, it is best to submit a pull request. Please note that we set the following criteria for implementation:
- It must not be a fork of an existing product package.
- Only stable APIs of a product may be used.
- If a configuration change is included that could threaten future updates, this must be marked in the documentation.
Currently, we make the code changes manually – but we plan to establish an automatism that automatically checks, builds, tests, and releases the packages.
No support, but a great collection of knowledge
Even though the Cool Solutions are not officially supported and there is no support claim, the extensions are worth a look. Feel free to use the forum to exchange ideas with others. If you want to contribute your tips and tricks, our GitHub repository is the best way. What experiences have you had with Cool Solutions? I look forward to your feedback!