THE PROJECT
The RAPstore project aims at building an app store for the Internet of Things around the open source operating system RIOT. Before doing so a number of pieces must be functioning such as the testing infrastructure, improved build system, incorporating external packaging, over-the-air updates, and simplifying programming for users. A large part of this project is supporting and developing in RIOT OS. This is a 3 year project currently ending in March 2020 but is in the process of being extended until December 2020 with strong plans to continue for additional three years. Currently 3 of the 6 positions are filled.
THE WORKPLACE
Prospective candidates will work in Berlin at Freie Universitaet (FU Berlin) in close collaboration with project partners in Hamburg at Hochschule für Angewandte Wissenschaften (HAW Hamburg). We will organize travel arrangements when needed.
As this is an open source and engineering-driven project, you will have the autonomy to design and create an optimum product based on values of freedom and usefulness, rather than making decisions based on commercial constraints. The environment is one in which you will be free to explore, research, and build a solution you are proud of.
Other benefits if working in this environment are:
- Knowlagable co-workers researching cutting edge IoT methods
- University tools available such as measurement devices, workshops, hardware
- Networking and conference opportunities such open source and Internet standardization events
- Possibility of publishing papers
- Improve coding skills by working in a large community and receiving valuable feedback
- Build a profile of open source work to attract future opportunities
- Flexible hours
RIOT OS
The project will involve complete specification, design, development, and deployment of a solution across server and firmware. This solution will allow the configuration of the RIOT operating system (https://riot-os.org) by users; its build, including modules, features, and applications; and subsequently, its deployment to devices.
Candidates will be part of the lively, international RIOT community. RIOT (https://github.com/RIOT-OS/RIOT) is the friendly operating system for the Internet of Things. If you cannot run Linux on your device due to constrained hardware, use RIOT! Over the last five years, RIOT has been emerged as one of the agile and state of the art operating systems for the IoT. The RIOT community consists of companies, academia, and hobbyists, distributed all around the world. We support open source outreach events, standards development, and participation in IoT interoperability tests.
FIELDS OF WORK
Though candidates have the potential of defining their own field of interest in order to fulfill the project requirements a number of fields have already been identified:
Build system:
The build system is a crucial part to enable modular composition of functionalities and scalable testing in RIOT. The current build system in RIOT needs major rework to fulfill the expectations. We aim for a solution that leverages standard mechanisms and tools.
Testing:
An aspect of the project is to improve the overall testing capabilities within RIOT. This involves designing and deploying tools to assist with writing and running of tests. Currently there is an effort to provide Hardware-In-the-Loop Continuous Integration for RIOT. This involves many things such as:
- hardware design
- server deployment and management
- testing interface design
- test logging and visualization.
Configuration:
We aim for improving overall configuration of RIOT. There are two main aspects of it:
- Compile-time configuration
RIOT is a multi-platform operating system, and as such it has to deal with multiple types of hardware and ways of configuring them. Currently there is an effort to improve the current state of RIOT configuration at compile time, making it more flexible, versatile and powerful, as well as improving documentation, description of hardware capabilities and increasing the usability.
- Runtime configuration
Most of IoT applications need to expose configurable aspects of it after being deployed to make them flexible and adaptable them to new conditions. The objective is to design a generic system that allows this type of configurations during runtime, through the available interfaces of the node and making use of standard configuration mechanisms.
Networking:
Networking is central to an IoT OS. Efforts are being made to optimize the abstractions networking layers for versitility, power consumtion, and speed.
ABOUT YOU
We are looking for three team members that are either experienced in embedded software or systems development. We will fill the position based on the expertise of the applicants.
You will either be a technical expert who is able to bring considerable expertise to the team in your own area or join ongoing efforts. You should be familiar with a wide range of current design patterns and best practices; and to take ownership of the area of the system in which you specialize. You will have the space to create technical solutions, and will be able to take the initiative to identify and undertake tasks you feel are useful for the project.
To this end, you will have the following personal attributes:
- A high level of self-motivation to code and make cool, high-quality software solutions.
- Great communication skills, with an ability to work with a team and a distributed community to gather requirements, specifications, and support for your solutions.
- A highly inquisitive nature, with an ability to think outside the box and identify previously unforeseen areas of improvement.
- An insatiable learner, with a drive to keep up-to-date with technology, lead your own research, and include cutting-edge and emerging technologies where appropriate.
QUALIFICATIONS, EXPERIENCE, AND SKILLS
Required:
- Master's degree in Computer Science or a related field
- Knowledge of concurrent programming and RTOS concepts
- Proficiency in C in a constrained embedded environment
- A high level of dedication to code quality and ability to adhere to coding guidelines
- Comfortable with finding and removing bugs, including using methods such as serial printing, step-through debugging, or logic analyzers, as appropriate
- Knowledge of a versioning system such as Git
Desired:
- Knowledge of Internet protocols
- An awesome GitHub profile
- Experience developing on Linux
- Familiarity with toolchains and compilers (gcc, make, etc)
To apply, please send a cover letter, CV, and link to your GitHub profile if you have one to the following contact: Matthias Wählisch - m.waehlisch@fu-berlin.de.
*This is an English speaking enviroment, however, courses are also offered to learn both English and German.*