# Challenges for New Contributors

**URL:** <https://forum.opencyphal.org/t/challenges-for-new-contributors/1945>\
**Category:** Development & Maintenance\
**Created:** [July 22, 2023, 12:10pm UTC](https://forum.opencyphal.org/t/challenges-for-new-contributors/1945 "2023-07-22T12:10:40Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![maksim.drachov](https://forum.opencyphal.org/user_avatar/forum.opencyphal.org/maksim.drachov/32/1577_2.png) [@maksim.drachov](https://forum.opencyphal.org/u/maksim.drachov)\
**Post date:** [July 22, 2023, 12:10pm UTC](https://forum.opencyphal.org/t/challenges-for-new-contributors/1945/1 "2023-07-22T12:10:40Z")

</div>

## Introduction

As I’ve discussed with @pavel.kirienko, it might be a good thing to have some interesting tasks/challenges/first issues for developers that might be interested in contributing towards OpenCyphal. This post will try to address that question.

Before starting developing for OpenCyphal, it is useful to first get acquainted with the overarching architecture, as well as the different terms used within it: Node, Message, Service, Subscriber,…

A good place to start: [https://opencyphal.org/](https://opencyphal.org/)

The home page answers the following questions:

- _What is Cyphal?_
- _How do I use Cyphal?_
- _Why do I need Cyphal?_

Then (this is taken straight from the previously mentioned home page):

> First, read the [Guide](https://opencyphal.org/guide). To learn the technical details, read the [Specification](https://opencyphal.org/specification). Familiarize yourself with the [regulated DSDL repository](https://github.com/OpenCyphal/public_regulated_data_types).

_From personal experience_: the [Guide](https://opencyphal.org/guide) is quite dense as far as _introductions_ go. It helps to read through it once in the beginning, and then come back to it a couple of times once you’ve gotten acquainted a bit more with the technical jargon used. (I’m trying to say: If you don’t understand 70% upon first reading - don’t panic)

_From personal experience_: the [Specification](https://opencyphal.org/specification) is the final reference as far as technical specifics goes, most often you won’t need to go that far, the code is well-documented using comments, allowing one to focus on trying to understand one piece of the puzzle/protocol at a time.

_From personal experience_: understanding that DSDL files contain “types”, which define the I/O of a particular Node is often enough to work on most parts of Cyphal.

_From personal experience_: Once you’ve done some of the reading, I suggest to try to complete the [Demo](https://pycyphal.readthedocs.io/en/stable/pages/demo.html) of Pycyphal: try to understand what each step is for, and how this could be useful when (for example) developing a UAV. (Or if you’re feeling adventurous, play with some real hardware using @aentinger’s [Arduino library](https://github.com/107-systems/107-Arduino-Cyphal) of Cyphal)

At this stage you might feel like you don’t have anything to contribute, however you’d be mistaken: being new to this project you could provide tangible value (sometimes referred to as _PRs_) by a fresh set of eyes:

- If you’re working through the [Demo](https://pycyphal.readthedocs.io/en/stable/pages/demo.html) (or setting up an [Arduino](https://github.com/107-systems/107-Arduino-Cyphal)) and you come across some step that is unclear, try to:
  - Understand what is missing, if you can solve the issue yourself it means you’ve learning.
  - If you have figured out what the problem is: congratulations, you can submit a PR to the relevant Github repository and try to improve the documentation for the next person that comes across this issue.
  - If you don’t manage to resolve the issue, don’t sweat it, it happens to the best of us: ask a question on the forum.
    - Explain what you’ve tried and what your understanding of the issue is.
    - (This helps the people responding to perhaps correct some mistakes notions about Cyphal you might have at this initial stage.)
    - Once you’ve managed to resolve the issue, try to ask yourself: “Is there a way in which the documentation could be improved to clarify this for the next person”. If the answer is _yes_, feel free to submit a PR.

Now that we have this general introduction to OpenCyphal out of the way, going forward I will assume you have done some of the suggested reading, understand the high-level terms used and tried playing arround with the suggested demos. Now I will describe some tasks/challenges that might be interesting to tackle as a new contributor to OpenCyphal.

## Task 1: cyraft

- Programming language: `Python`
- Complexity: Beginner

### General description

Cyphal does not currently support [named topics](http://wiki.ros.org/Topics), however this would be an interesting feature to implement as this would allow Cyphal to serve as a communication layer between [PX4](https://px4.io/) and [ROS](https://www.ros.org/).

### TODO

An initial draft version of this can already be seen here:

[https://github.com/OpenCyphal-Garage/cyraft](https://github.com/OpenCyphal-Garage/cyraft)

If you’re interested, to reach out to me (@maksim.drachov) and I will prepare some instructions on how to start and what could use further development.

## Task 2: platform\_specific\_components

- Programming language: `C`
- Complexity: Intermediate (embedded)

### General description

Many popular MCUs lack built-in CAN FD-capable controllers, which limits the uptake of CAN FD in new products. There is an interesting IC that could help new hardware revisions or new designs adopt CAN FD without having to port an existing codebase to a new platform: [TI TCAN4550](https://www.ti.com/product/TCAN4550) – a single-chip CAN FD controller with a built-in 5 Mbps transceiver interfaced with the MCU via SPI:

[![](https://user-images.githubusercontent.com/3298404/93756724-35c3fd80-fc0e-11ea-83e2-84522b739465.png) ](https://user-images.githubusercontent.com/3298404/93756724-35c3fd80-fc0e-11ea-83e2-84522b739465.png)

It is also appealing price-wise, being available from DigiKey for $1.5 @ 1k pcs, which is comparable to a regular standalone CAN transceiver.

This is a very promising chip and it would be nice to have portable and reusable drivers for it.

### TODO

The issue can be found here:

[https://github.com/OpenCyphal-Garage/platform\_specific\_components/issues/14](https://github.com/OpenCyphal-Garage/platform_specific_components/issues/14)

If you’re interested, reach out to @pavel.kirienko and he will prepare the necessary instructions.

## Task 3: libcyphal

- Programming language: `C++`
- Complexity: ?
- Contact person: @scottdixon

### General description

### TODO

## Dev call

If you’re interested in helping to develop OpenCyphal, feel free to join the weekly dev call:

> [@Bi-Weekly dev call](https://forum.opencyphal.org/t/weekly-dev-call/173):
>
> A bi-weekly conference call is to take place every other Friday at 17:00 UTC at [https://meet.google.com/htg-hagg-vcn](https://meet.google.com/htg-hagg-vcn). The next call is due at: Friday 2025-12-19 17:00 +00:00 Coordinated Universal Time (UTC) Please post your feedback and suggestions here.

It takes place weekly on `Friday, 17:00-18:00 GMT`, here’s a calendar event:

[OpenCyphal\_devcall.ics](https://forum.opencyphal.org/uploads/short-url/1HjkE1gFpxfwiyhoxOFxQ26Nyky.ics) (739 Bytes)

---

<div class="post-metadata">

**Author:** ![erik.rainey](https://forum.opencyphal.org/user_avatar/forum.opencyphal.org/erik.rainey/32/20_2.png) [@erik.rainey](https://forum.opencyphal.org/u/erik.rainey)\
**Post date:** [July 25, 2023, 2:29pm UTC](https://forum.opencyphal.org/t/challenges-for-new-contributors/1945/2 "2023-07-25T14:29:59Z")

</div>

Task 4

Do you know Lua? Do you like counting loops from 1? No? Would you like to? Do other developer suspect that you howl at the moon? Are you tired of being asked random questions? If so, the Wireshark Filters for OpenCyphal have several task in the back log which could use your help!

- Programming Language: Lua
- Complexity: Moderate
- Contact Person: @erik.rainey

---

<div class="post-metadata">

**Author:** ![maksim.drachov](https://forum.opencyphal.org/user_avatar/forum.opencyphal.org/maksim.drachov/32/1577_2.png) [@maksim.drachov](https://forum.opencyphal.org/u/maksim.drachov)\
**Post date:** [September 18, 2024, 9:24am UTC](https://forum.opencyphal.org/t/challenges-for-new-contributors/1945/3 "2024-09-18T09:24:05Z")

</div>

Task 5

Write framework for Cyphal integration tests. See [this](https://forum.opencyphal.org/t/test-frameworks-for-cyphal-networks/2198) post.

- Programming Language: Python/C++
- Complexity: Moderate
- Contact Person: @maksim.drachov

---

<div class="post-metadata">

**Author:** ![maksim.drachov](https://forum.opencyphal.org/user_avatar/forum.opencyphal.org/maksim.drachov/32/1577_2.png) [@maksim.drachov](https://forum.opencyphal.org/u/maksim.drachov)\
**Post date:** [September 19, 2024, 12:07pm UTC](https://forum.opencyphal.org/t/challenges-for-new-contributors/1945/4 "2024-09-19T12:07:59Z")

</div>

Task 6

Improve Yakut UX.

- [Add format command · Issue #106 · OpenCyphal/yakut · GitHub](https://github.com/OpenCyphal/yakut/issues/106)
- [Improve UI · Issue #114 · OpenCyphal/yakut · GitHub](https://github.com/OpenCyphal/yakut/issues/114)
- [file-server: add `--progress` option · Issue #112 · OpenCyphal/yakut · GitHub](https://github.com/OpenCyphal/yakut/issues/112)
- [CLI is dumb · Issue #103 · OpenCyphal/yakut · GitHub](https://github.com/OpenCyphal/yakut/issues/103)
- [Add note/link to setup\_slcan · Issue #93 · OpenCyphal/yakut · GitHub](https://github.com/OpenCyphal/yakut/issues/93)

Yakut is a great tool, but has many small issues that make it a bit difficult to use.

- Programming Language: Python
- Complexity: Easy
- Contact Person: @maksim.drachov
