Skip to content
Arne Babenhauserheide edited this page Jun 1, 2024 · 55 revisions

Tasks that Freenet Developers see as the most important to increase Freenet adoption. This is a mirror of the Sharesite within Hyphanet: USK@xPkwhS3czAr5oi6yNgLQ7Ld7RbUZuY6eGniS0n5FZtc,WXVIZrZyLlZugJgJKYvbF9SPfKAUAQX9gAX6g7FGNVE,AQACAAE/high-impact-tasks/20/

{toc}

Goal: Release Freenet 8.0

  • Fix a release-blocker for 8.0 from the Roadmap
    • Fix fallback plugin-install from https — we removed that fallback. It could be a threat to privacy and had not been useful since we switched to bundling essential plugins with the installer.
    • ✔ convert the CI from travis to another system to make it easy to contribute again — Basic CI uses github actions now.
    • Recover signing the Windows installer without the expired certificate from FPI.

Goal: Simplify Installing

  • Packaging
    • Create a Debian package (most impactful)
      • ✔ Create Debian package for all changes
      • Get the package into Debian
    • Create a Guix package (ArneBab can mentor that)
    • Add a simple beta-channel for each release by choosing a separate update key with a sitename derived from the next release

Goal: Independently spreading Freenet

This is the central step for highest resilience.

  • Revamp F2F workflow, see insights here: https://www.reddit.com/r/Freenet/comments/lblvdq/how_would_you_improve_freenet/gm2yrxs
    • Create invite-only friend-communication workflow among darknet friends (mobile first): read + publish as regular, sharing links and chatting via n2ntm
  • First connection: Improve inviting friends who do not use Freenet yet
    • Increase visibility of the installer available in each node (for inviting friends without pointing them to the website)
    • Include a prepared noderef in the installer and offer to include some introduction noderefs of peers.
    • Enable one-sided connection with one-time-token: single-use noderefs generated by the node that allow connecting right-away.
    • Include a single-use noderef with one-time-token in the installer so friends connect at once.
    • Ideally make the full invitation bundle
  • Connect more friends
    • Simplify introducing friends to each other: select some peers, click “introduce”, they get messages for the contacts whether they want to connect.
    • When adding a friend, ask to which peers the friend should be introduced.
  • Make the noderef parser work always, even if linebreaks are lost, unicode is mis-escaped, or email uses 7-bit ASCII encoding in an inline PGP message.
  • Increase the convenience of N2NTMs (node-to-node text messages) as a confidential way to keep in contact with real life friends. For a start, see Add core operations interface WIP

Goal: Improve the Core User Experience

  • ✔ Revamp Freenet initial page: On first install add help sections and useful links, list official plugins
  • Cleanup inconsistencies in the web User Interface.
  • Show user-alerts when you get a new Freemail (plugin), or a new Sone reply (plugin), or a new highlighting in FLIRCP (plugin).
  • Enable activating desktop-notifications for user-alerts, separated by type (node-to-node messages, plugin-messages, uploads, …).
  • Add zstd as compression option to reduce the CPU load on nodes that actively download lots of textual data. See https://freenet.mantishub.io/view.php?id=7182
  • Fix the DefaultManifestPutter to avoid intermediate single-CHK redirects. Those affect both Spider and some regular uploads.

Goal: Enable realtime video streaming

  • Content filters for modern codecs can make Freenet viable for realtime streaming
    • improve the existing ogg theora/vorbis filter: Currently filtered videos have annoying stuttering that is not present in unfiltered videos. See https://freenet.mantishub.io/view.php?id=7163
    • ogg opus (this reduces the needed bandwidth enough to enable live streaming of audio from a single node, see How to stream into Freenet )
    • webm with vp9 (direct streaming) or av1 (stream on demand)

Goal: Improve Freenet on Android

Goal: Make Advanced Features Easy to Use

  • Plugin furbishing: Freemail, Keepalive, Freereader, Shoeshop, Floghelper, Flircp, and JFniki need work to make the workflows enjoyable
    • Add SSK-Splitfile support to KeepAlive. Example-File (to check it with KeyUtils)): SSK@h3kHfe67fKIt-G71rbf1B0CDdXW0dtzjWjrL9D0-TQk,OXMHVbz33zanji-FdHRcTaMZj4Cx9gn-Ce5vkwLIgVw,AQACAAE/theradiocc-000.mp3
    • Port plugin buildsystem to gradle (more complex to get right than it sounds!)
    • make jfniki work with changed IP/Port used via Proxy (when you set fred to act as proxy so your browser can only access Freenet)
    • make freemail forward to the original link after login: Freemail forgets that it was called to send a new message if you have to login first
    • make freemail add a recipient to the WoT when replying, so replying always works. This may require adding the key of the ID when sending a message.
    • make freemail never lose the message when clicking send. A missing recipient ID currently causes message loss.
    • make freemail more reliable. While it usually works, it can currently happen that messages get lost or only get delivered with large delays.
    • fix Spider (it currently breaks after a few inserts and needs a lot of resources)

Goal: Integrate Freenet with the clearnet

  • Program or browser-plugin to follow freenet:CHK@…-Links (and freenet:SSK@ and freenet:USK@…) by requesting them from the node.
    • Same for magnets, i.e. magnet:?xt=urn:freenet:CHK:…
    • As a starting point, see freenetbrowser
    • The browser-plugin depends on allow-listing the schema
      • First step: also parse web+freenet and ext+freenet and web+hyphanet and ext+hyphanet to enable using those unrestricted schemas.

Goal: Improve Developer Support

  • Complete FCPv2 documentation: Wiki: FCPv2
  • Document how to create a plugin with a web interface built with pebble templates and integrated into the fproxy menu, using FCPv2 to interact with the node.
  • Simplify updating and changing dependencies over Freenet: Currently this is a manual, error-prone process which relies on manually patching wrapper-files and blocks at least one pull-request.

Goal: Improve Privacy and Security

  • Allow disguising Freenet traffic as HTTP3 udp packets. See transport plugins and steganography for pointers.

Also see the more abstract Ideas and the suggestions of tasks for Google-Summer-of-Code-2021.

Clone this wiki locally