doc: clear out old info from contrib page (migrated any still relevant to tau), and create a separate clear page with the hiring process.

This commit is contained in:
darkfi
2025-02-17 13:34:48 +01:00
parent 1a232e67ad
commit 3610092be6
3 changed files with 99 additions and 133 deletions

View File

@@ -27,6 +27,7 @@
- [Development](dev/dev.md)
- [Contribute](dev/contrib/contrib.md)
- [Hiring](dev/contrib/hiring.md)
- [Using Tor](dev/contrib/tor.md)
- [Learn](dev/learn.md)
- [API Rustdoc](dev/rustdoc.md)

View File

@@ -2,9 +2,9 @@
## How to get started
1. Join the dev chat, and attend a dev meeting.
2. See the areas of work below. Good areas to get started are with
tooling, Python bindings, p2p apps like the DHT.
Join the dev chat, and attend a dev meeting. Make yourself known. Express an
interest in which areas of the code you want to work on. Get mentored by
existing members of the community.
Every monday 15:00 UTC, there is our main dev meeting on
[our chat](../../misc/darkirc/darkirc.md).
@@ -24,6 +24,8 @@ It's best to just jump in.
## Finding specific tasks
Check the tau task manager. There are a ton of tasks on there.
Tasks are usually noted in-line using code comments. All of these tasks should be resolved
and can be considered a priority.
@@ -32,31 +34,6 @@ To find them, run the following command:
$ git grep -E 'TODO|FIXME'
```
## Employment
We are only looking for devs right now. If you're not a dev, see the
[learn section](../learn.md). We offer mentoring. Anybody can become a dev.
It's not that hard, you just need focus and dedication.
To be hired as a dev, you must make commits to the repo, preferably
more than minor cosmetic changes. It also is useful to have online repositories
containing your work. We don't care about degrees or qualifications -
many of the best coders don't have any.
Secondly you need to get on [our online chat](../../misc/darkirc/darkirc.md) and
make yourself known. We are not spending time on social media or proprietary
chats like Telegram because we're very busy.
We value people who have initiative. We value this so highly in fact that
even if someone is less skilled but shows the ability to learn, we will welcome
them and give them everything they need to prosper. Our philosophy is that
of training leaders rather than hiring workers. Our team is self-led. We don't
have any managers or busybody people. We discuss the problems amongst ourselves
and everybody works autonomously on tasks. We don't keep people around who
need a manager looking over their shoulder. The work and tasks should be
obvious, but to help you along below you will find lists of tasks to get started
on.
## Areas of work
There are several areas of work that are either undergoing maintenance
@@ -70,117 +47,13 @@ or need to be maintained:
* Continuing on, it could show how to use the p2p network or event graph
to build an anonymous service like a forum.
* **TODO** and **FIXME** are throughout the codebase. Find your favourite one and begin hacking.
* DarkIRC encrypted DMs to nonexistant users should not be allowed.
* Currently closing DarkIRC with ctrl-c stalls in `p2p.stop()`. This should be fixed.
* Add `log = path` and `log_level = debug` config setting to DarkIRC
* StoppableTask should panic when we call stop() on a task that has not been started.
* **Tooling:** Creating new tools or improving existing ones.
* Improve the ZK tooling. For example tools to work with txs, smart contracts and ZK proofs.
* Also document zkrunner and other tools.
* **Tests:** Throughout the project there are either broken or commented out unit tests, they need to be fixed.
* **Cleanup:** General code cleanup. for example flattening headers and improving things like in
[this commit](https://codeberg.org/darkrenaissance/darkfi/commit/9cd9c3113eed1b5f0bcad2ee449ef926d0908d55).
* **Python bindings:** Help ensure wider coverage and cleanup the Python bindings in `src/sdk/python/`.
* The event graph could have Python bindings but involves some tricky part integrating Python and Rust async.
* Bindings for txs, calls and so on. Make a tool in Python for working with various contract params.
* **Events System:** See the
[event graph](../../misc/event_graph/event_graph.md) system.
We need extra review of the code and improvement of the design. This is a good submodule to begin working on.
* **DHT:** Currently this is broken and needs fixing.
* **p2p Network:** this is a good place to start reviewing the code and suggesting improvements.
For example maintaining network resiliency. You can also look at apps like darkirc, and the event graph subsystem,
and see how to make them more reliable. See also the task manager tau.
* Implement resource manager. See its implementation in libp2p for inspiration.
* Harder **crypto** tasks:
* Money viewing keys
* Eth-DarkFi bridge or atomic swaps. Atomic swaps is probably better since it's trustless and p2p.
## Mainnet tasks
_Tasks are in no particular order. Use common sense._
1. Finish `darkfid` with PoW and research and implement XMR merge mining
2. Make `darkfi-mmproxy` stable and implement what is needed for DarkFi x Monero merge mining
3. ~~~Finish dnetview~~~
4. Make `eventgraph` stable and implement proper unit and integration tests
* Unit tests should test pieces of the eventgraph code
* Integration tests should simulate a P2P network and ensure deterministic state after a simulated run
* Update [event graph](../../misc/event_graph/event_graph.md)
and make it the specification for the `eventgraph` implementation.
5. Rework `drk` (the wallet CLI) to work standalone and make it work with the new `darkfid`
6. Make `tau` stable
7. Make `darkirc` stable
8. Make `lilith` stable, there is currently some bug that causes connection refusals
9. Implement transaction fees logic
10. Implement contracts deployment logic
11. Revisit **all** the code inside `src/runtime/` and make sure it's safe
12. ~~Implement verifiable encryption for `DAO` payments~~
13. ~~`DAO` should be able to perform arbitrary contract calls, it should act as a voted multisig~~
14. Implement cross-chain atomic swaps (XMR, ETH, anything applicable)
15. ~~Rework the connection algo for p2p to use black list, grey and white list~~
* ~~https://eprint.iacr.org/2019/411.pdf (Section 2.2)~~
* ~~See also [P2P Network: Common Mitigations](../../arch/p2p-network.md#common-mitigations)~~
16. Create a P2P stack test harness in order to be able to easily simulate network
behaviour
* Possibly we can create a dummy p2p which can simulate network connections and routing traffic.
We can use this to model network behaviour.
17. Implement address/secretkey differentiation
* See [WIF](https://en.bitcoin.it/wiki/Wallet_import_format)
18. ~~Fix bugs and issues in the DAO implementation~~
19. Perform thorough review of all contracts and their functionalities
20. Randomize outputs in `Money::*`, and potentially elsewhere where applicable
* This is so the change output isn't always in the same predictable place, and makes identifying
which output is the change impossible.
21. Document contracts in the manner of [dao](../../spec/contract/dao/dao.md)
22. Serial used in money coins
* One solution is: don't accept coins with existing serial in drk.
* We should construct a scheme to derive the serial, evaluate how simple changing the crypto is.
* Malicious users could send you a coin which is unspendable. A poorly implemented wallet would
accept such a coin, and if spent then you would be unable to spend the other coin sharing the same
serial in your wallet.
23. Separate mining logic from darkfid into a new program and communicate over RPC
24. Python utility tool (swiss army knife) for working with txs, contract calls and params.
25. ~~Python event viewer to inspect and debug the event graph.~~
26. Fix `protocol_address` for anonymity. There is a loop sending self addr constantly. We should
have this mixed with a bunch of random addrs to avoid leaking our own addr.
27. ~~Add support for colorizing zkas code samples in darkfi book (see arch/dao page)~~
28. Tutorial creating a ZK credentials scheme.
29. resource manager for p2p (DoS protection, disconnect bad nodes)
30. apply DEP 0001
31. fix channel `main_receive_loop()` to use `Weak`
32. configurable MAGIC_BYTES for net code
33. configurable fields for version messages
34. make `PeerDiscovery` in `outbound_session.rs` a trait object which is
configurable in P2p, but by default is set to `PeerSeedDiscovery`.
| Task # | Assignee |
|----------|------------|
| **1.** | `upgrayedd`|
| **2.** | `brawndo` |
| **3.** | `lain` |
| **4.** | `upgrayedd`|
| **5.** | `upgrayedd`|
| **6.** | `dasman` |
| **7.** | `dasman` |
| **8.** | `brawndo` |
| **9.** | `brawndo` |
| **10.** | `brawndo` |
| **11.** | |
| **12.** | `B1-66ER` |
| **13.** | `B1-66ER` |
| **14.** | |
| **15.** | `lain` |
| **16.** | `lain` |
| **17.** | |
| **18.** | `B1-66ER` |
| **19.** | `B1-66ER` |
| **20.** | |
| **21.** | `B1-66ER` |
| **22.** | `B1-66ER` |
| **23.** | `upgrayedd`|
| **24.** | |
| **25.** | `dasman` |
* Money::transfer() contract viewing keys
## Fuzz testing

View File

@@ -0,0 +1,92 @@
# Hiring Process
Follow this guide to work on DarkFi and get paid.
If you're not a dev, see the [learn] section. We offer mentoring.
Anybody can become a dev. It's not that hard, you just need focus and dedication.
[learn]: ../learn.md
## Criteria
We don't care about qualifications, only about code. Even if you're new, if you
show initiative, leadership and the ability to adapt, then you have a strong
chance.
## Join the Community
Get onto the [DarkIRC chat] where the core community is. Every Monday there's
a core dev meet at 15:00 UTC. You can introduce yourself there to make yourself
known and discuss which part of the code you'd like to get involved in.
Then you should run [tau] which is our task manager. The `darkfi-dev` workspace
has a list of open tasks.
Also see the [contribute] page.
We are not spending time on social media or proprietary chats like Telegram
because we're very busy.
## Send an Email (optional)
You can send an email to `hiring@dark.fi` to introduce yourself. This step is
entirely optional and we respect people's privacy. If you can also drop a
message in `#dev` then that's helpful.
From here we can setup a private group on the chat. Then you can follow up in
the group with any specific questions.
## Make a Commit
To be hired as a dev, you must make commits to the repo, preferably more than
minor cosmetic changes. It also is useful to have online repositories
containing your work. We don't care about degrees or qualifications -
many of the best coders don't have any.
Every candidate must make a decent commit that gets merged. We are available to
help people do this by guiding them. But this is a hard prerequisite, and helps
us see people can actually write code. It's the only thing we care about.
## Onboarding
Finally here we discuss specifics. You will have been assigned a team leader who
will arrange with you the details.
We offer fully anon employment. Make sure you make an
[anon account on codeberg][codeberg-anon] over Tor, and also connect to the
DarkIRC chat over Tor too. You can even make an anon email with
[onionmail.org](https://onionmail.org) to email us with. We pay in Monero (XMR)
or stablecoin USDT. You are responsible for any legal obligations incurred by
your host country.
We value people who have initiative. We value this so highly in fact that even
if someone is less skilled but shows the ability to learn, we will welcome them
and give them everything they need to prosper. Our philosophy is that of
training leaders rather than hiring workers. Our team is self-led. We don't
have any managers or busybody people. We discuss the problems amongst ourselves
and everybody works autonomously on tasks. We don't keep people around who need
a manager looking over their shoulder. The work and tasks should be obvious, but
to help you along below you will find lists of tasks to get started on.
### Trial
For the initial phase, there is a 3-month trial where you can be terminated at
any time with a 2-week notice.
We ask candidates to draft a short document which contains:
* Tangible deliverables that will be completed.
* Any areas you want to focus on.
It does not have to be long, and can be a short bullet list. At the conclusion
of the trial, you will be evaluated against this document.
During the trial, candidates have an assigned mentor to assist with guiding
work. We also encourage people to attend the weekly Monday dev chat and propose
topics to discuss.
[DarkIRC chat]: ../../misc/darkirc/darkirc.md
[tau]: ../../misc/tau.md
[contribute]: contrib.md
[codeberg-anon]: tor.md