ungleich-staticcms/content/u/projects/jobs-hacks-bounties/contents.lr
2022-02-25 19:42:08 +01:00

190 lines
6.9 KiB
Markdown

title: Jobs, Hacks and Bounties
---
subtitle: Doing stuff with or at ungleich
---
image: /u/image/cards/jobs.jpg
---
description1:
## Introduction
You might know, ungleich means "not equal" or "different" in
English. So working for, with or at ungleich is usually a bit
different from working for other companies. We practice a high degree of
remote working and our team consists of a lot of international
members from a variety of cultures.
So instead of the classical "job openings", we have three different
sections of how to get started with ungleich.
## Hacks
Hacks are easy to do, easy to learn tasks that help you understand
the way we work and the technology stacks we use. These are easy
things to do at home or anywhere you are. You can join the
[open chat room "Hacking & Learning"](/u/projects/open-chat/) for
asking questions.
### Hack 1: Get IPv6
For most stuff we do, you will need IPv6. Head over to the
[IPv6 VPN](/u/products/ipv6-vpn/) to get yourself started. Note:
the VPN is for free if you have a VM with us.
### Hack 2: Deploy ubookmark
[ubookmark](/u/projects/ubookmark/) is a simple Django app.
Deploy it on your local machine (it
is IPv6 reachable, isn't it?) and send us a shout when it's reachable
using HTTPS. If you need a domain name for your letsencrypt
certificate, checkout [has-a.name](https://has-a.name).
### Hack 3: IPv6 cat
Create a micro django project that does the following:
* If you are visiting via IPv4, it will show a static page saying "Sorry, only reachable by IPv6"
* If you are visiting it via IPv6, it will show a friendly cat picture
* No other features required, design up to you
### Hack 4: Mini Marketplace
This project is designed to check your skills as a Django developer.
Create a django project that provides the following features:
* User login + registration
* A logged in user can create items to sell
* An item to sell has a name, description and can have 1-5 pictures
attached, and obviously a price
* There should be one page with all items that are able to be sold
(can be seen without login)
* There should be one page with all items that have been sold
* A logged in user can buy an item from another user
* Users should be able to write messages to each other in a reasonable
way (not to anyone, think about what makes sense)
* You do not need to implement real world payment services
### Hack 5: Mini Marketplace with Matrix communication
* Based on hack 4
* However instead of using your internal messaging, you are going to
use the Matrix protocol
* Whenever users want to talk to each other, create a matrix room for
them
* For each article that is being sold, create a matrix room in which
users can discuss the item
## Jobs
We are currently looking for three new engineers to join us:
* Senior DevOps (K8S, cdist, Alpine Linux) Engineer (20-100% role)
* Senior Developer (Python, Django) (20-100% role)
## Bounties
At ungleich we heavily depend on and contribute [Open Source
Software](/u/projects/opensource). Sometimes (often?) we have a lot of
ideas we would like to implement in Open Source Software, but daily
tasks prevent us from implementing them.
We at ungleich have created a bounty program that offers
money for fixing/hacking Open Source Software.
### Bounty 1: eboard updates
[eboard](https://www.bergo.eng.br/eboard/) is a classical FICS client
for playing chess on the Internet. However, it did not have some
updates for some time, so we offer the following bounties:
* Add eboard to Alpine Linux packages (__30 CHF__)
* Bounty paid when it's in __apk add__ able from either edge/testing/community
* Add alsa support to eboard upstream (__50 CHF__)
* Enable beeping on move of the opponent without the OSS emulation
* Bounty successful when a new eboard release was made with it
* Add IPv6 support to eboard (__50 CHF__)
* FICS is basically using a telnet protocol
* Eboard does not work in NAT64 scenarios, because it does not have IPv6 support
** Bounty successful when a new eboard release was made with it
### Bounty 3: Enable IPv6 only in the Linux kernel
As you might remember, we created
[a challenge to disable
IPv4](https://ungleich.ch/en-us/cms/blog/2019/01/09/die-ipv4-die/) in
your operating system. It turns out that as of 2020-05-01, the only
operating system that truly can turn off IPv4, is FreeBSD.
If you are into hacking the Linux kernel, we offer a __300 CHF__
bounty to disable IPv4 in the Linux kernel. The bounty includes:
* Create a patch against Linux mainline that completely disables IPv4
* Ensure that make menuconfig/config can turn IPv4 off
* Preparing the patch so that it can be included
* Submission to LKML
* Polishing patch so that it can be accepted
* Patch is included in the Linux kernel source git repo
* Show a short proof of concept that there is truly no more IPv4
### Bounty 4: Enable IPv6 only in the OpenBSD kernel
Very similar to bounty 3, we offer another __300 CHF__ bounty, if you
can patch OpenBSD to fully disable IPv4. Requirements for collecting
the bounty:
* Create the necessary kernel patch
* Get it included into the OpenBSD source tree
* Show a short proof of concept that there is truly no more IPv4
### Bounty 5: Add VXLAN support to netbox
At ungleich we love
[netbox](https://netbox.readthedocs.io/en/stable/). However at the
moment it only supports VLANs and not VXLANs. How amazing would it be,
if it also supported VXLANs? The bounty for adding this upstream is
__50 CHF__.
### Bounty 5: Allow wireguard to automatically switch the underlying IP version
If you establish a VPN connection with wireguard, it resolves the
hostname in your configuration and remembers that IP address.
This is problematic, because if you connect to the VPN server in an
IPv6 only network and then later switch to an IPv4 only network,
wireguard will never reconnect. The same problem appears if you switch
the other way round.
We offer a __150 CHF__ bounty for the person who successfully
patches/integrates/releases something (it can be a daemon, a patch)
open source that allows seamless transition between the different IP
networks.
On the wireguard mailing list it was discussed whether a peer can have
multiple IP addresses. This could be a proper solution, as it also
addresses the case when a VPN server has multiple IPv6 or IPv4
addresses.
## Historic Bounties
### Bounty 2: Alpine Linux installable in IPv6 only networks
Alpine Linux currently does not start rdnssd in the installer nor does
it have the ndisc package installed.
The installer in particular needs to assign itself IPv6 addresses
(SLAAC should already work), needs to accept DNS servers and search
suffix from router advertisements (requires rdnssd running) and
wget/curl need to have IPv6 support to retrieve files via IPv6.
Present a short video that successfully shows the updated upstream
installer working in an IPv6 only network to install Alpine
Linux. Bounty is __100 CHF__.
```
Solution: Alpine Linux now ships with dhcpcd enabling IPv6 address
acquisition as well as name resolution.
```