aboutsummaryrefslogtreecommitdiff
path: root/content/contribute.md
blob: 8cd6b565a73c21852adca7f1f147576e93aa8473 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
---
title: "Contribute"
menu: "main"
draft: false
menu:
  main:
    weight: 20
---

General discussion and support
------------------------------

For general discussion of Ouroboros,
[subscribe](https://www.freelists.org/list/ouroboros) to our mailing
list: [ouroboros@freelists.org](mailto:ouroboros@freelists.org).

For day-to-day discussions, join our IRC chat:
[\#ouroboros](irc://irc.freenode.net/ouroboros).

Contact us on twitter: @ODecentralize

Contributing code
-----------------

Contributions should be sent as patches to the mailing list, using your
real name and real e-mail address.

The git repository contains three branches:

-   master: Contains the most stable version of Ouroboros.
-   testing: Contains tested code but may still contain bugs.
-   be: Contains untested but compiling code.

New development is done against the 'be' branch of the git repository.
The testing and master branches take only bugfixes.

Bug reporting
-------------

Please report all bugs [here](/bugzilla). When reporting a bug, please
do the following:

1.  Provide a description of the bug. How did you get it and which
    version of Ouroboros were you using? Which Operating System are you
    on?
2.  Provide as much technical information as possible (system logs,
    debug traces, \...).
3.  If possible, provide a minimal code example to reproduce the bug.
4.  If you can provide a bugfix, provide it against the HEAD of the most
    stable branch where the bug is present and send the patch to the
    mailing list.

Todo list
---------

We are currently looking for

-   Testing and bugfixing.
-   Integration testing for the build system beyond the "make check"
    unit tests.
-   People that are interested in setting up some nodes to establish a
    global testing layer.
-   Non-blocking flow allocation: Allow specifying a {0, 0} timespec to
    return immediately and use fevent() to know when the flow is ready
    (or allocation failed).
-   Asynchronous IPC over the UNIX sockets. For each command to the
    IRMd, we create a UNIX socket, send the request and wait for the
    response. This could be changed so that there is only a single UNIX
    socket that is used for all messaging. This would simplify parallel
    querying of the IPCPs and speed up flow allocation. The far-future
    option is to ditch UNIX sockets and bootstrap Ouroboros local IPC
    over itself.
-   ECDH-AES encryption using libssl and/or libgcrypt. The goal is to
    support both libraries so that we have a fallback should major bugs
    be discovered in one of them.
-   Customized packet serialization to remove the dependency on Google
    Protocol Buffers. We like GPB, but it\'s not perfect. Importing
    .proto files may give rise to multiple definitions and we found no
    way to solve that.
-   Caching for the DHT.
-   Cross-compilation to OpenWRT (musl).
-   Ported applications! If you want to add native Ouroboros support for
    your applications, just let us know and we will help you out!