Преглед изворни кода

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

darkfi пре 1 година
родитељ
комит
3610092be6
3 измењених фајлова са 99 додато и 133 уклоњено
  1. 1 0
      doc/src/SUMMARY.md
  2. 6 133
      doc/src/dev/contrib/contrib.md
  3. 92 0
      doc/src/dev/contrib/hiring.md

+ 1 - 0
doc/src/SUMMARY.md

@@ -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)

+ 6 - 133
doc/src/dev/contrib/contrib.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 - 0
doc/src/dev/contrib/hiring.md

@@ -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
+