-
Notifications
You must be signed in to change notification settings - Fork 17
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add modules with initial notes #3
Conversation
🐘👟🎉 will review in a bit!
…On Jan 6, 2018 10:55, "Benedict Lau" ***@***.***> wrote:
@benhylau <https://github.com/benhylau> requested your review on:
tomeshnet/p2p-internet-workshop#3
<#3> Add modules with
initial notes.
—
You are receiving this because your review was requested.
Reply to this email directly, view it on GitHub
<#3 (comment)>, or mute
the thread
<https://github.com/notifications/unsubscribe-auth/AEebYjfDpBLvGim-tTbRAuOFfvaMYGDaks5tH0MpgaJpZM4RVQrC>
.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice start, I'll make a round of commits tomorrow most likely to fill in the bits I mentioned :)
module-1.md
Outdated
|
||
## 2: Hands-on and material exploration | ||
|
||
- Introduce yourself, why you are interested in this workshop |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would aim to have the intros before a lecture.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Remember our conversation about giving a little bit of context first (to surface ideas) vs. intro at the start? A while back.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't remember, I think there are tradeoffs, but a round of names from the start and like a one sentence intro makes things feel less lecture, more participatory from the start.
I almost always follow that format.
module-1.md
Outdated
## 2: Hands-on and material exploration | ||
|
||
- Introduce yourself, why you are interested in this workshop | ||
- Activity for audience to "run their own app" on pre-configured nodes, where the apps are relatable with those we are familiar with from the Internet (e.g. Facebook, Dropbox, Whatsapp, Twitter, Spotify) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we need to figure out the best way to specify an activity, my sense:
- format (e.g. group, pairs)
- materials (including slides etc...)
- objectives
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Makes sense to me. Let's add to template.
module-1.md
Outdated
|
||
## 1: Topic introduction | ||
|
||
- Discuss familiar topics like net neutrality, internet service providers, and internet censorship |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should link to materials somewhere (incl. slide deck/site?), these could be contained within this repo
module-1.md
Outdated
|
||
## 4: Wrap-up and week ahead | ||
|
||
- Video on basic networking concepts (Metamesh intro videos) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Think we could rough these in with a link + short description
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yup will do.
module-6.md
Outdated
## 2: Hands-on and material exploration | ||
|
||
- Build a 900 MHz LoRa sensor network with WiFi mesh network as backhaul | ||
- Use case for a community network that functions without internet connectivity |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@uditvira hey can you add details to this one please
module-6.md
Outdated
* How does LoRa work? What are some alternatives? | ||
* ISM band and spectrum allocation in Canada | ||
|
||
- Low Power Microcontrolers |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@benhylau it could be possible to do a hands-on demo of Pi-to-Pi communication over LoRa instead of using Arduino's. That may be easier for people because they would already be familiar with Pi's at this point - however it won't be with low power micro-controllers anymore. Thoughts?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just be careful logic levels are different between Arduino and the pi... Depending on what you do you may need a logic level. Converter..
I don't think not using low level micro processors is an issue in an educational setting.. It's more to intrude a concept to lora. We can note that there are low powered processors but I think the learning curve would be maybe to high to throw Arduino into all this to.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think it is necessary to use Arduinos. It is sufficient to workshop LoRa transmission between two Raspberry Pi nodes, and then perhaps show an Arduino node with a power consumption comparison (just mentioning the numbers).
- USB WiFi radio that is ad-hoc or 802.11s-capable (e.g. TP-Link TL-WN722N) | ||
- SD card with [mesh-orange](https://github.com/tomeshnet/mesh-orange) pre-configured to mesh wirelessly with cjdns | ||
- Tools to discover node identity in the ad-hoc network and share human-readable names with others (e.g. [ssb-dns](https://github.com/ansuz/dnssb)) | ||
- Contain Docker image for Secure Scuttlebutt and multiple Patchwork clients (i.e. [scuttlebot](https://github.com/ssbc/scuttlebot), [patchwork](https://github.com/ssbc/patchwork), [patchbay](https://github.com/ssbc/patchbay), [patchfoo](https://github.com/ssbc/patchfoo)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@ansuz Do you know if patchwork and patchbay can be installed on a Raspberry Pi and accessed over browser from a laptop client?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Patchwork is an electron app, and I don't think there is a way to access it remotely except by X11 Forwarding.
patchbay, patchfoo, and several other clients are written to run in the browser, so they'd just need a means of restricting access to maybe a single cjdns ip.
Initial sync with ssb can be a bit heavy for the CPU, so I'd recommend that nobody start with an existing ssb feed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
scuttlebot can be installed on an raspberry-pi, and it's all you need to access the network at a basic level. A basic UI could be made targeting this platform for whatever display you have. In my case, I plan to show basic (mainly connectivity) details of the ssb nodes attached to my mesh network on the installed sensehat. More details on getting started with sbot: https://www.scuttlebutt.nz/guides/cli-first-steps.html
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@vuldin Do you know if Patchbay can be run on the Pi as well, and then exposed on some port and accessed through browser of a NAT client? The command line is cool, but since this is the first workshop for a general audience, where cli is usually unfamiliar, it's best to start at the browser and then cli to show this is the actual message that is exchanged.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@benhylau I'm not sure about patchbay since I haven't tried it. My plan is to just create a websocket wrapper for sbot that allows a webapp to communicate with the service. Then I can have that webapp run on any other more graphically capable device such as my phone or laptop.
It would be cool to have the Pi connect to the mesh and then provide that connection to my phone (along with connection to the secure-scuttlebutt network). This connection could be done either with the built-in Pi wifi (if available) or bluetooth. All this along with a battery-powered Pi means an entirely mobile mesh-connected system with ssb (and any other P2P app/service you run on the Pi).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are you also building the webapp UI that talks to the ssb websocket? RE: mesh connection, yes the Raspberry Pi 3 configures the on-board WiFi as hostap and all ipv6 NAT traffic is passed to the cjdns tun interface: https://github.com/tomeshnet/prototype-cjdns-pi/blob/master/scripts/hostapd/nat.sh#L11
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@benhylau I'm working on the UI, yes. I'm only at the point of having the framework in place, and it has basic connectivity/communication with the server. Once I have sbot sending data to websocket channels that are successfully displaying on the client I'll push the initial commit of the web project. Keep in mind that that level of functionality will be far from being a patchwork alternative, but it will be a good start.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
By the way @benhylau , that's awesome that cjdns can be the provider for the IPv6 address for mesh networking, and that you are still also able to connect to the broader network provided by cjdns (when connected to an access point). I will still need to do testing since I'm unfamiliar with how this all works... I'll share any notes.
|
||
- Individuals | ||
|
||
### Activity |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@ansuz Thoughts re: this as a workshop activity? Do you know how peer/friend discovery works over LAN?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I tried the other day and was able to sync another feed, while the other person could not see my posts.
It might work better if everyone is using the same hardware and software.
|
||
- USB WiFi radio that is ad-hoc or 802.11s-capable (e.g. TP-Link TL-WN722N) | ||
- SD card with [mesh-orange](https://github.com/tomeshnet/mesh-orange) pre-configured to mesh wirelessly with cjdns | ||
- Tools to discover node identity in the ad-hoc network and share human-readable names with others (e.g. [ssb-dns](https://github.com/ansuz/dnssb)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@ansuz Can ssb-dns allow us a reasonable way to address each other via names instead of cjdns IPv6 addresses?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There's some work involved to change your DNS to resolve to your ssb records, and I'm not sure it would be easier than passing around IPv6s. Theoretically, it's designed to work especially well for in offline environments.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Being worked on by @ansuz and @benhylau here: https://cryptpad.fr/code/#/1/view/Sc1Ktuf+APhkoFqbMhTp2Q/b4E11ypiIRno0MMKm6KJj5QU-q0CIqKz+Yfp5o29A0I/
- Manually `echo`ing plaintext and HTTP messages into `netcat` is like you performing the task of an application (including our day-to-day ones, and the peer-to-peer ones we were playing with the week before) | ||
- End the group stage and take four volunteers to form a more-than-two-node network using the network switch | ||
- Point out two people in different groups may have selected the same IPv4 address, like how two previously disjoint communities gave the same street name and house number, which only becomes a problem when we bridge these two communities (talk about NAT and self-assignment of IPv6) | ||
- Show how we can talk to multiple addresses from one node |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@darkdrgn2k Only here we start using cjdns. Earlier parts are over clear IPv4s.
- An even number of Raspberry Pi 3s | ||
- SD cards with mesh-orange images with all necessary interfaces pre-configured and programs pre-installed (e.g. ifconfig, netcat, cjdns) | ||
- Ethernet cables equaling the number of Raspberry Pis | ||
- Laptops that can make a SSH session to each Raspberry Pi (each running a Host AP with unique SSID) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
One issue we may have is as all these nodes come up there will be so many SSIDs with default passwords floating around that it may be difficult to identify which one is yours.
We will need a way to "lock in" the ssid for each node and record it with a label on the box.
Without using configs perhaps we can tie the ssid to the MAC address of the onboard wireless adapter? or maybe even Ethernet?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes I think we must drop a unique ssid in conf.d
for each node. I already have to do this for two nodes otherwise I don't know which test2 I am connected to.
Okay I'm feeling like having a single PR might be too big to really dig in on each lesson, is there a date after which we aim to merge this in, and separate out remaining work? Module 2 looks pretty far along, but I have some questions about how the initial intro and discussion will be handled (e.g. I think we don't want to just say "discuss" but also create materials, or identify arguments and perspectives?) |
@dcwalk As noted here I am hoping to merge this in asap :) perhaps we should just merge this then have separate PR for each module?
Yes those sections are not yet done and I have not had time to think about them. Once we divide up the work perhaps we will have people contribute to those sections. |
_Preference to those that require minimal steps (e.g. exchanging keys, after `docker start`) and have a familiar UI._ | ||
|
||
- Secure Scuttlebutt / Patchwork (need to pin public keys) | ||
- IPFS (auto peer but need to share content hash) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
https://hub.docker.com/r/jkms/rpi-go-ipfs/
this is tested and working using HypriotOS on my RPI3. GH here: https://github.com/jkms/go-ipfs
module-1.md
Outdated
|
||
## 3: Discussion and reflection activity | ||
|
||
- Reflect on the role of technology in society |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Perhaps a short version of this? https://communitytechnology.github.io/docs/intro-ct/investigate-tech/
|
||
## 3: Discussion and reflection activity | ||
|
||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Something fun? http://networks.land/activities/i-think-therefore-icann/
Not sure if enough time for this.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@dcwalk to follow up
As discussed during meeting, we are merging this in and will have per module PRs to continue future work. See https://github.com/tomeshnet/tpl-workshop/milestone/1 |
This PR is worked on by: @benhylau @dcwalk @darkdrgn2k @uditvira @ansuz and is work-in-progress. Although at some point when the task separation is more clear we should think about merging this and move to a more sane pull model :)