mirror of
https://github.com/darkrenaissance/darkfi.git
synced 2026-01-10 07:08:05 -05:00
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:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
92
doc/src/dev/contrib/hiring.md
Normal file
92
doc/src/dev/contrib/hiring.md
Normal 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
|
||||
|
||||
Reference in New Issue
Block a user