You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: doc/achievements.md
+34-35
Original file line number
Diff line number
Diff line change
@@ -21,45 +21,46 @@ Achievements expire, so if at any given time you don't qualify, you lose those p
21
21
9. Launch and maintain a webserver on Hyperboria.
22
22
10. Provide an RSS feed so others can subscribe for updates.
23
23
11. Help a newb on EFNet.
24
-
12. Read everything in [Project Meshnet's documentation repository](https://github.com/projectmeshnet/documentation).
25
-
13.`watch` the Documentation repository so you hear about updates.
24
+
12. Read everything in [the documentation repository](https://github.com/hyperboria/docs).
25
+
13.`watch` the documentation repository so you hear about updates.
26
26
14. Set up an IRC bouncer and point it at HypeIRC so you don't miss anything. Combinations of command line clients and tmux or screen are considered equivalent.
27
27
15. Contribute to the documentation repository at least once a month.
28
-
16. Participate in [keysigning Tuesday](#).
29
-
17. Make (or contribute to) a meshlocal page for your area.
30
-
18. Have a hype-enabled xmpp account
31
-
19. Configure a persistent link between nodes independent of the internet.
32
-
20. Blag about cjdns or Project Meshnet.
33
-
21. Design some form of rich media for Project Meshnet (graphics, video, animation, audio, presentation slides).
34
-
22. Discover a bug in cjdns, and give it a memorable name.
35
-
23. Host or register a cjdns, Project Meshnet, or Mesh-local mailing list.
36
-
24. Subscribe to any of the above lists.
37
-
25. Learn HTML
38
-
26. Have someone else quote you and commit the results to a HypeIRC bot's factoid system.
39
-
27. Build cjdns on an android phone.
40
-
28. Read all of [xkcd](http://xkcd.com/).
41
-
29. Install at least one Linux distribution other than Ubuntu.
42
-
30. Erase Microsoft windows from every computer you own.
43
-
31. Host your own email server.
44
-
32. Host your own ircd.
45
-
33._Don't_ run your irc client as root!
46
-
34. Host a show on [HypeRadio](http://radio.cynical.us/hostashow.html).
47
-
35. Cross compile cjdns for another platform.
48
-
36. Contribute to [Hyperboria's news agency](http://news.hyperboria.net/).
49
-
37. Document an undocumented function or component of cjdns.
50
-
38. Implement a function or component of cjdns in an alternate language
51
-
39. Translate an article into another language (and maintain it).
52
-
40. Update cjdns without pinging out on IRC.
53
-
41. Configure an authorizedPassword without restarting cjdns.
54
-
42. Find out whether your home router can run cjdns: [OpenWrt table of hardware](http://wiki.openwrt.org/toh/start)
55
-
43. Try out the [Meshbox firmware](https://github.com/seattlemeshnet/meshbox) on your home router.
28
+
16. Make (or contribute to) a meshlocal page for your area.
29
+
17. Have a hype-enabled xmpp account.
30
+
18. Configure a persistent link between nodes independent of the internet.
31
+
19. Blag about cjdns or Project Meshnet.
32
+
20. Design some form of rich media for Project Meshnet (graphics, video, animation, audio, presentation slides).
33
+
21. Discover a bug in cjdns, and give it a memorable name.
34
+
22. Host or register a cjdns, Project Meshnet, or Mesh-local mailing list.
35
+
23. Subscribe to any of the above lists.
36
+
24. Learn HTML
37
+
25. Have someone else quote you and commit the results to a HypeIRC bot's factoid system.
38
+
26. Build cjdns on an android phone.
39
+
27. Read all of [xkcd](http://xkcd.com/).
40
+
28. Install at least one Linux distribution other than Ubuntu or Mint.
41
+
29. Erase Microsoft windows from every computer you own.
42
+
30. Host your own email server.
43
+
31. Host your own ircd.
44
+
32._Don't_ run your irc client as root!
45
+
33. Host a show on [HypeRadio](http://radio.cynical.us/hostashow.html).
46
+
34. Cross compile cjdns for another platform.
47
+
35. Contribute to [Hyperboria's news agency](http://news.hyperboria.net/).
48
+
36. Document an undocumented function or component of cjdns.
49
+
37. Implement a function or component of cjdns in an alternate language
50
+
38. Translate an article into another language (and maintain it).
51
+
39. Update cjdns without pinging out on IRC.
52
+
40. Configure an authorizedPassword without restarting cjdns.
53
+
41. Find out whether your home router can run cjdns: [OpenWrt table of hardware](http://wiki.openwrt.org/toh/start)
54
+
42. Try out the [Meshbox firmware](https://github.com/seattlemeshnet/meshbox) on your home router.
55
+
43. Harden your cjdns OpenWrt router by building OpenWrt with cjdns from source and make sure [seccomp](http://lwn.net/Articles/475043/), [SSP](http://lwn.net/Articles/584225/) and [RELRO](http://tk-blog.blogspot.de/2009/02/relro-not-so-well-known-memory.html) are enabled. Using [musl](http://www.musl-libc.org/) instead of [uClibc](http://www.uclibc.org/) may make you sleep even better. See [buildsdk.sh](https://github.com/SeattleMeshnet/meshbox/blob/master/buildsdk.sh) to see how this can work.
56
+
44. Monitor your nodes' cjdns preformance and make pretty graphs with munin (hint: [here's a nice munin plugin to help](https://github.com/thefinn93/munin-plugins/blob/master/cjdns/cjdns_bandwidth.py))
56
57
57
58
## Penalties
58
59
59
-
Avoid qualifying for these _achievements_, as they count against your score.
60
+
*Don't do the following*, they count against your score:
60
61
61
-
1. Provide peering credentials without including a means of getting in contact.
62
-
2. Provide peering credentials with extra information in the form of line or block comments. (You should be embedding them as JSON attributes instead!)
62
+
1. Provide peering credentials without including a means of getting in contact, such as an email address
63
+
2. Provide peering credentials with extra information in the form of line or block comments. You should be embedding them as JSON attributes instead!
63
64
3. Provide peering credentials without the IPV6 included. (You can get by with just a password and publicKey, and your IPV6 can always be inferred from your publicKey, but it means more work to figure out who you are).
64
65
65
66
@@ -71,5 +72,3 @@ Avoid qualifying for these _achievements_, as they count against your score.
71
72
***Newest is best**. Every now and then there are intentionally breaking changes. This happens when the network is suffering because of old nodes. In such cases, modifications are made which cause up to date nodes to drop old nodes' traffic. If you don't update, you might fall off the map. If you are running a protocol in between the cutoff point and the bleeding edge, you may be the link which allows older nodes to continue participating in the network. Please update so we can all use the latest features to better diagnose bugs.
72
73
***There is no substitute for understanding**. People build tools that streamline difficult processes, but ultimately you cannot rely on software to fix all of your problems. At some point, bad behaviour has to change, and that means understanding the principles behind security, exercising discipline, and informing those around you when they are putting themselves (and possibly others) at risk.
73
74
***We cannot rely entirely on the experts**. This is closely related to [Brooks' Law](http://en.wikipedia.org/wiki/Brooks%27s_law). An expert in a subject is in an excellent position to push further, and learn those things which are out of reach of those with less experience in the subject. Unfortunately, this often means they are in the position of having to choose between learning more about the subject in question, and spending their time sharing disseminating their knowledge. It is very important to understand that when people take the time to help you understand a difficult subject, they need you to help share that information with those who know are less experienced than you. In the Hypeborian community, we've taken to referring to this method as [WTFM](http://www.roaming-initiative.com/blog/posts/wtfm).
Copy file name to clipboardexpand all lines: doc/bugs/distro-quirks.md
+23
Original file line number
Diff line number
Diff line change
@@ -16,3 +16,26 @@
16
16
```
17
17
18
18
There you have it, Macs don't autopeer via ethernet frames.
19
+
20
+
This is also probably why it doesn't work on windows, either.
21
+
22
+
## Raspbian
23
+
24
+
### Failure to start Cjdns
25
+
When running Cjdns on Raspberry Pi with Raspbian you can run in to problems because IPv6 is not enabled by default. This causes Cjdns to fail on startup with the following error message:
One of the central ideas behind the development of cjdns is that networking protocols should scale up smoothly.
2
+
Early development dealt with problems like **not** constructing circular routes, and while that was not yet solved it made sense to limit the length of a path to what would fit within 64 bits of memory.
3
+
4
+
At this point, many of the early issues that were once challenging have been dealt with, and tucked away into a list of things that we shouldn't forget, but which are no longer relevant.
5
+
As the protocol has improved and allowed nodes to see and route further into the network, though, we have begun to encounter bugs which we previously had no opportunity to debug, and consequentially, no opportunity to fix.
6
+
7
+
The **Horizon** bug is one that we knew was coming, but now we've officially started to hit its limitation.
8
+
9
+
## The nature of the bug
10
+
11
+
* nodes have 64 bits of memory in which they can store a path to another node
12
+
* each node along the path consumes a variable number of bits dependiung on the number of peers between which they must distinguish (see [switchfun.txt](../switchfun.txt) for some idea of how this works)
13
+
* your node cannot route to any node beyond this _horizon_ for the lack of bits required
14
+
15
+
## So what are the implications of this bug?
16
+
17
+
1. nodes with more peers consume more bits, and are generally a good thing as they reduce the number of hops to a wider audience of nodes
18
+
2. nodes with fewer peers consume fewer bits, and result in more hops on average, however, their simpler encoding will allow your node to reach further into the network
19
+
3. If you want to have effective routing to the greatest number of nodes possible, the onus is on you to evaluate your position in the network and peer in such a way that the nodes you wish to connect to are within a reasonable distance (via 'backhaul' links with few peers, or via hubs which connect you within a few hops to a large portion of the net)
20
+
21
+
## How can we deal with this?
22
+
23
+
Naturally, we can approach the problem from a few angles, so whatever your skill set is, there's likely something that you can do to help.
24
+
25
+
1. help rewrite the parts of cjdns which encode the paths such that a variable number of bits can be used
26
+
2. use the admin interface to figure out which parts of the network your node can see, and compare those results against a wider view of the network, so we can identify our blind spots
27
+
3. evaluate your peering choices, and try to drop bad peers and pick good ones, so that we can continue to have a functional network in the meantime (we're still quite likely to have lots of paths that are out of reach, so we'll still be able to debug this issue, don't worry)
28
+
4. talk to your friends about cjdns, and get them to join the network, so we have more opportunity to find long _shortest-paths_ to any particular node (see, you don't even need to know how to code!)
29
+
30
+
## Conclusion
31
+
32
+
This is great news! That we are hitting this bug at all means we've progressed quite a bit.
33
+
Let's sort this one out so we can move on to the next and make cjdns the de facto choice for mesh networking!
Copy file name to clipboardexpand all lines: doc/notes/wanted.md
+3
Original file line number
Diff line number
Diff line change
@@ -38,6 +38,9 @@ If you see something listed here that has been taken care of, please knock it of
38
38
+ cjdns/node_build/make.js
39
39
* in the media
40
40
*[FAQ](../faq/)
41
+
+ how does cjdns choose which path to take? latency? number of hops?
42
+
* choosing paths presupposes knowing them, which can get in the way of finding the _optimal_ path. Paths to nodes are stored preferentially based on the [xor metric](../cjdns/functions/Address_xorcmp.md).
43
+
* the path choice metric is a combination of various factors (latency and number of hops are among them). This is poorly documented, and we need someone to explore the exact details. Contributions should go in `../cjdns/functions/`
41
44
+ My service doesn't like ipv6. how can I get it to run on hype? [6tunnel?](http://toxygen.net/6tunnel/)
Copy file name to clipboardexpand all lines: doc/tipsAndTricks.md
+13
Original file line number
Diff line number
Diff line change
@@ -13,5 +13,18 @@ Comment the _router.interface_ section <!-- elaboration required --> of the conf
13
13
14
14
You have the option of configuring your TUN device manually. It will require root, but once established, cjdroute can otherwise run as an unprivileged user.
15
15
16
+
#### Lint the configuration using JSHint/jsonlint
16
17
18
+
This is a little trick that will lint the configuration file (`cjdroute.conf`) before starting cjdns.
17
19
20
+
##### JSHint
21
+
Will allow comments, note that JSHint is designed for JS and may not display errors and warnings etc. in all cases.
0 commit comments