[Markdown] 

Hubzilla Project: Project Roadmap

Table of Contents

    Project Roadmap (This roadmap is out of date!)


    Core

    Structure and Database

    • Since photos and files are now merged, remove redundant information from the photo DB table. Captions, mentions, and permissions can all be stored with either the linked "item" or the linked "attach". Be aware that connection photos and things photos are still stored in the photo table and have no linked items or attach structures; but they also don't require permissions, captions, mentions, etc.

    • Conversion of core application to a composer format living under the namespace "Zotlabs"

    • Conversion of Modules to a more general purpose Controllers layout with DB/memory based controller routing as opposed to filesystem routing.

    • Conversion of core Zot Protocol to a class library

    • Resolve the "every photo has an item" confusion, perhaps every file should also - but only if we can explain it and separate them conceptually.

    Zot

    • rewrite the "probe" (network discovery) logic to streamline it

    • key revocation (this is a complex topic because your key is integral to your identity). The method under consideration requires your existing key to remain as an identifier - even if it is compromised. A second key is then generated and used for communications. The original key is no longer tied to trust or authentication but is only used to calculate and maintain a consistent identity string

    • Abstraction of nomadic identity so that sending/receiving to/from singleton networks to/from any clone works flawlessly - [b]provided[/b] the clone physically connected to that singleton identity is up. es and special cases a lot of core functionality. (HZ - in progress)

    • Convert E2EE to dynamic loading (on demand) using jQuery.getScript() [or other methods] to only load encryption libs when you require them. This should also support multiple encryption libraries (e.g. SJCL, others) triggered from the choice of algorithm and remain pluggable.

    • DNS abstraction: Allow a channel to live in an arbitrary "DNS" namespace, for instance "mike@core.hubzilla". Use our directories and zot to find the actual DNS location via redirection. This could potentially allow hubs to be hidden behind tor or alt-roots and accessible only via the matrix.

    • Zot Access Tokens

      In order to facilitate sharing of private resources with non-members or members of federation nodes with limited identification discovery, Hubzilla should provide members with a mechanism to create and manage temporary ("throwaway") logins, aka "Zot Access Tokens". These tokens/credentials may be used to authenticate to a hubzilla site for the sole purpose of accessing privileged or access controlled resources (files, photos, posts, webpages, chatrooms, etc.).

    API

    • Identify what API additions and improvements are needed

    Apps

    Files

    • Create a tool for file cloning. Unlike regular clone operations, memory limitations require us to provide just the meta-data in the clone sync operation and fetch the file(s) (possibly in chunks) from the hub holding the original. Probably will end up using the zot 'request' message to do the fetch. Will likely need a DB table to manage state, how much has been downloaded etc., and link to a queue to fetch remaining bits.

    • Provide a mechanism to move files/photos between directories. Harder than it sounds because several different table elements in several different structures need to be changed to maintain consistency.

    • Provide a way to sync web resources. This could be built on DAV except for preserving resource naming (guids) instead of filenames.

    Events and CalDAV

    • Complete creation and integration of CalDAV client. (In progress)
    • Recurring events

    Chat

    Hubzilla chat can be improved in many ways, but additional features should support use cases that are aligned with the goals of the Hubzilla project.

    • Implement browser notifications for various events
      • Members leave
      • New messages
    • Create per-member config options for visual and audio notifications
    • Track unread messages and highlight them somehow when returning to the chat window

    User Interface

    • Focus on visual website design tools, widgets, and sharing mechanisms
    • App organisation.
    • Auto Updater

    Webpages

    • If practical, separate "conversation" sub-themes from overall themes so one can choose different conversation and content layouts within a base theme.
    • Make webpage building easy, with point-n-click selectors to build PDLs
    • bring back WYSIWYG, which ideally requires a JS abstraction layer so we can use any editor and change it based on mimetype

    Documentation


    Addons

    Social networking

    • GNU-social federation plugin for UNO.

    • Pump.io federation plugin for UNO.

    • rework the "like" (dislike, attend, agree, etc.) activities to make a single activity type aligned with the 'react' activity now seen in some corporate projects. Ditto for poke.

    • Migration tools: Friendica importer

    • Migration tools: Diaspora importer (channel and connection import done, conversations and photos still in progress and waiting for support from Diaspora)