Want to dive into learning about technical infrastructure at the OCF, but not sure where to start? Here are some self-paced tasks you can do on your own. Feel free to ask for help in our Slack, Discord, Matrix, Slack, or in person during staff hours!
Tasks marked with an asterisk (*) require staff privileges. If you want to work on these but haven't officially been given staff privileges yet, let a current staffer know you’re working on starter tasks and we will add you.
These tasks don’t have to be completed in order.
Internet Relay Chat (IRC) is a chat protocol invented in the 80s, an early precursor to Slack. The OCF runs an IRC server (since 2002!), which is bridged to our Slack network. Many staffers prefer IRC to Slack due to its wide breadth of customizable clients, as opposed to Slack, which requires using their application.
For this task, pick an IRC client, install it on your computer, and use it to connect to the OCF IRC network (details at https://ocf.io/irc). Some popular clients are:
See http://www.irchelp.org/clients/ for more recommendations.
Once you’ve joined IRC, pick any channel (#rebuild, #henlo, etc) and say hi!
All of our servers run Linux, and we interact with them over the command line. There are a lot of online resources about using the Linux command line, so if you're confused about something, try Googling it!
If you haven't used the command line before, you can go to our command
reference page and try running some commands. You
can also connect to our ssh server
(ssh.ocf.berkeley.edu
) using your own SSH client.
If you want to get more comfortable, try completing lab 1 from the OCF/XCF Linux System Administration DeCal.
Our chat bot is named create
and its source code can be found at
https://github.com/ocf/ircbot. Before testing the IRC bot right away, make sure
you know how to use it:
create: thanks
will trigger a response!Once you’ve learned about create
, you can start making changes to it!
create-yourusername
instead of simply create
.OCF staff use a collection of scripts when interacting with the campus
community. For example, before creating an account for a student organization,
we make sure the person requesting the account is listed as a signatory for that
group. Staff members use the
signat
command to perform this
check.
signat
command to list the signatories for the Open Computing
Facility or another student organization of your choice. Hint: if you are not
sure how to use the signat
command, try running signat --help
. This trick
works with most commands. OCF scripts also have documentation on this
website.Every OCF account has web hosting enabled at https://www.ocf.berkeley.edu/~yourusername. As an example, check out ckuehl’s website.
ocflib is a Python library we maintain which is installed on every OCF host. For this exercise, you won’t need to make modifications to ocflib.
ipython3
command).import ocflib.lab.staff_hours
to import utilities relating to
staff hours.staffhours = ocflib.lab.staff_hours.get_staff_hours()
to get the
list of staff hours.staffhours
and check that it matches the info
on the staff hours page. For instance, you should be able
to run staffhours[0]
to see the info corresponding to the first staff
hour entry on the page.Your turn! Use ocflib functions to get the following information in your interactive Python shell:
If you get stuck, don't forget that you can search the GitHub repo or Sourcegraph to find more info.
Whenever a technical change to the OCF is made, we use a pull request on GitHub. Pull requests allow staffers to propose changes in discrete chunks and get feedback before the code goes live.
You're going to make a pull request to ocfweb. Specifically, you'll add your name to the list of everyone who's completed this task.
<OCF username>@ocf.berkeley.edu
) is not connected to your
account, add it to your account emails.xclip
commands will probably not work. Instead, just run cat
~/.ssh/id_rsa.pub
and manually copy it to your clipboard.cd ocfweb
.You only have to do this part once. Now that your fork is set up, all future pull requests to ocfweb will use this same clone.
git checkout -b <branch-name>
. You
have now created and switched to your new branch.Now, you can edit the file and add your username. Figure out which file corresponds to the completion list and add your username to that file. (Just add the name for now, don't worry about adding the URL or brackets.)
There are a few options for editing the file:
vim
or emacs
, you
can use that to edit the file.~/remote
folder on the desktop, which is synced to your home directory on supernova.git add
, and make a commit
using git commit
.git push origin <branch-name>
.Once the pull request has been submitted, other OCF staff will have a change to review your changes and make sure they look good. Once one or two people approve, the pull request can be merged and your change will go live.
Sometimes you will want to update a pull request after it has been created, because you thought of something new or because another staffer suggested a change. In this case, you'll update your pull request so that your username on the list links to the pull request you made.
[username](https://link.to/pull/request)
. The brackets and parentheses
indicate that this is a link in Markdown, which is the
markup language we use for the docs.git rebase -i HEAD~2
(~2
is the number of commits to rebase) to do an
"interactive rebase" of the last two commits.git log
to check: you should only see one commit
at the top that is authored by you, instead of two.--force-with-lease
after push
.After pushing, the pull request on GitHub will automatically update with the new changes.
Congrats on making your PR! If you want to learn more about what you can do with git, check out our documentation on git.