Skip to content
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

Create open-proposal-agregore-mobile.md #129

Merged
merged 4 commits into from
Mar 23, 2022
Merged

Conversation

RangerMauve
Copy link
Contributor

As per conversations with @autonome, here's the proposal for developing Agregore Mobile with IPFS protocol handlers, integrating IPFS pinning with the Nimble mesh network node, and conducting workshops with community network stakeholders in South Africa.

Let me know if there's anything I could do to help process this. 😁

@RangerMauve
Copy link
Contributor Author

Added @autonome as the technical sponsor.

@autonome
Copy link
Contributor

autonome commented Feb 8, 2022

Thanks, we've discussed this a lot before submission so most of my comments are already addressed. A few additional thoughts:

  • I can put you in touch directly w/ Berty to support gomobile-ipfs usage, which should speed things up if you get blocked
  • Brave's patches should show the way for Chromium Android support for IPFS/IPNS protocol handling, we can ask them for pointers to those. Sadly, Igalia's work to do this at build-time will not be landed in Chromium core until mid-year.
  • Brave only did a HTTP redirect which is similar a bit to the local gateway approach you are taking. Could be that a Chromium->gomobile-ipfs bridge is possible though, which would be less overhead - maybe Berty can point the way here also. Worth looking into that before committing fully to a local HTTP gateway
  • Roadmap section is great, super helpful to see the plan to hit the target, as these dates are pretty aggressive
  • Opportunistic feature could also be the libp2p BLE transport Berty made - might be very useful for the use-cases you're addressing

Aside from the core engineering work happening and focus on mobile, the proposal is very high value in two other specific ways:

  • It engages impacted stakeholders directly and intentionally as part of the implementation plan, instead of "we'll build it and the users will come"
  • The work on a publishing API flow is incredibly important - one of the weakest links in the stack, so there's a lot to be learned there

Related to those - here are two places I'd like to see more detail to in the proposal, to optimize how the broader ecosystem can benefit from your work:

  • Where and how will the program be communicated? Is there a project blog? There's material for at least 4-5 posts in the topic areas you're covering in this work, would be amazing to see that shared in a way that is archived for future use.
  • Can you identity in the proposal which software work might result in modular/reusable components or libraries? You're tackling a lot that others can benefit from. Maybe some is not reusable and that's ok - but please flag where you think it is possible, as it's possibly a compound impact as a side-effect of the work.

Final note: The breakdown of milestone and hours-spent is a fantastically helpful way of making clear where time is spent by who on what. However, I noticed in milestone 4 and 6 (at least) some of the hours at top (eg "tech lead, 30h") didn't reconcile w/ the hour count in the line-items below it. Can you go back through and reconcile those numbers and update the proposal so they all match?

@RangerMauve
Copy link
Contributor Author

Thank you for the review @autonome ! We (and folks I've been chatting with outside the project) are excited to get this put together and into the hands of people. 😁

I went over and made sure the hours lined up everywhere, added info about reusable components from each milestone, and added a blurb about publishing blog posts on https://agregore.mauve.moe 🎉 We'll squeeze the time for creating the blog posts in between all the other tasks. Not sure how many posts we'll end up making yet so we'll figure it out as we go along. :)

@autonome
Copy link
Contributor

autonome commented Feb 9, 2022

Fantastic, thanks for fixing those bits. The re-usability notes are fantastic, we should ask for that in all grant proposals!

@RangerMauve
Copy link
Contributor Author

@autonome Is there anything else we need to do before the next steps? 😁

@autonome
Copy link
Contributor

@mishmosh @realChainLife anything these folks need to do to move to evaluation stage?

@mishmosh
Copy link
Collaborator

Hi @RangerMauve thanks for the very thorough submission (and revision). Currently in the final steps of review, we'll share an update before Friday.

@realChainLife
Copy link
Collaborator

Thanks @autonome!

Hello @RangerMauve we would like to fund the work outlined here. Please email [email protected] to discuss next steps.

@RangerMauve
Copy link
Contributor Author

🎉

@mishmosh mishmosh reopened this Mar 23, 2022
@RangerMauve
Copy link
Contributor Author

Will this be getting merged now that the DocuSign is signed and all that?

@mishmosh
Copy link
Collaborator

@RangerMauve correct, we meant to merge it instead of close it. Apologies!

@mishmosh mishmosh merged commit f52f533 into ipfs:master Mar 23, 2022
@RangerMauve
Copy link
Contributor Author

Hello, we've got the initial version for Milestone 1 ready and would like to get it reviewed so we can process the initial payment. 😁

We have a screenshot of it in action here: https://twitter.com/AgregoreBrowser/status/1511418042122739717

And the APK can be downloaded here: https://build.mauve.moe/builds/AgregoreMobile-0.0.0-rc0.apk

Currently it only works on Android 9 and older due to Android 10 and 11 breaking some go-ipfs functionality but we're planning to work around this as part of Milestone 2.

To be specific:

  • We have created a GitHub repository with patches which may be applied over Chromium and scripts for building the browser
  • Our patches customize the branding of Chromium with the Agregore logo and title
  • We have developed a repository based on the the Go IPFS gateway which enables some of the protocol handlers from Agregore Desktop
  • And we have added patches on top of Chromium which start the gateway on boot and tear it down when the browser is closed
  • The gateway can be accessed via http://localhost:8080/ within web pages and we have tested loading IPFS data on it as can be seen in this screenshot

We ended up not using the Kiwi browser due to their build instructions not being available and them missing some files that are necessary to compile from source. Instead we've started building on top of Bromite which adds a bunch of privacy preserving patches on top of Chromium.

While Milestone 1 is being processed we've already started work on parts of Milestone 2.

@RangerMauve
Copy link
Contributor Author

Since we've had multiple tracks at once the milestones are getting completed a bit out of order.

Here's the current state of our milestone progress:

Milestone 1: Done

  • Got mobile app compiling based on bromite
  • Initial Go-IPFS based gateway
  • Loading gateway on startup

Milestone 2: Almost done

  • Formal spec for protocol hanlders
  • Initial ipfs:// and ipns:// protocol handler APIs
  • Initial app for Wifi autconeccting
  • Currently integrating wifi autoconnect into the browser

Milestone 3: Almost done

  • Running protocol testing suite
  • Updated tests to account for new spec
  • Fixing bugs in protocol handlers in order to get tests passing

Milestone 4: Done

  • Example markdown blog app using protocol handlers
  • QR Code Scanner app

Milestone 5: On hold

  • Need to investigate if IPFS-CLuster is the right approach
  • Need to investigate security/safety implications of p2p on community networks
  • Need to make extension which makes it easier to pin content

Milestone 6: In Progress

  • Settling on a workshop date
  • Putting together workshop materials and demo

@RangerMauve
Copy link
Contributor Author

We were also thinking of asking to add another milestone to work on some Agregore Mobile features like extensions which we couldn't get in due to not being able to build on top of the Kiwi Browser source code. As well as some slight stability improvements.

Would it be possible to talk more about that within the context of this grant, or should we open up another one?

@RangerMauve
Copy link
Contributor Author

Update on milestones:

Milestone 2: Done

Milestone 3: Done

As discussed with Dietrich, I'd like to put together an extra Milestone 7 which will do the following:

  • Add Web Extension support based on the Kiwi Browser (3 weeks / 60h)
  • Add the ability for the gateway to load just on the initial IPFS request (1 week / 20h)

I'll submit a PR this week for it.

@RangerMauve
Copy link
Contributor Author

Also,

Milestone 5: In Progress

  • Dirk is looking at setting up IPFS Cluster and setting up DNS/SSL services for it on the Local stack for the Nimble
  • I'm staring to put together a thing to make it easy to talk to the IPFS-cluster pinning API for IPNS and to regular IPFS Pinning Services.
  • We're also looking at the implications of running a cluster on these networks

Milestone 6: In Progress

  • Eric has worked with folks at VPUU to reserve a space for June 4th to run the workshop. We're going to be getting a diverse set of participants and will be using funds to transport them in from across the region.
  • Dirk has started working on the workshop materials and framing

@RangerMauve
Copy link
Contributor Author

Update for Milestone 5 and Milestone 6:

Milestone 5

Milestone 6

We ran the workshop in Cape Town successfully, and Dirk has posted a blog post talking about how it went along with some recorded interviews of folks that attended: https://www.thebacklog.net/2022/07/12/reflections-on-running-a-p2p-web-workshop/

This has been reviewed+approved by @autonome today and we'll be submitting the invoice for the final milestones today. :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants