TODO

To make this sane, we should limit the scope of data types handled. a generic upload/download probably is going too far for now as we want to be able to have "Thumbnails" and these are differently generated between Themes and Wallpapers, and Config profiles would have the abili8ty to add .desktop files for them with an icon selected etc. - so each type is a bit different. Also searching, listing and so on will vary.

To define some terms:

Sync

This means files are uploaded to your account on exchange but are private. Merely modified time stamps are kept and all your exchange using clients connect and listen for change notifications. When 1 client uploads a new file/config all clients get the change/add/delete and then "implement" that change locally (download a new file, delete the wallpaper, download updated config and apply it etc.).

Upload and Share

This means to not just upload for Syncing, but also make it available to share to others so they can download and add to their own collections. Such files/data need to probably be copied to a public repository to allow the original uploader to delete their own copies but not the public ones (but allow separate control over the public ones they shared out originally if they want to remove it from the public - but to make it an extra step to do that).

  • Sync/upload and share
    • Wallpapers (~/.e/e)
    • Themes (~/.e/e)
    • Config profiles (~/.e/e)
    • Order files (Bar, Menu, Start etc.) (~/.e/e)
    • Modules (~/.e/e)
    • Icons (~/.e/e)
    • Fileman favorites (~/.e/e)
    • Fonts (~/.e/e)
    • App desktop files (~/.local/share/applications)

How

An Azy server will be implemented using https (probably with a cert) which will automatically manage http session/authentication for clients. Clients will send/receive content using this server after they have logged in, so we'll need to set up some sort of storage for accounts and settings. Best guess is this will require some sort of eet structure on the server end to manage the accounts securely.
E17 itself needs to get a config panel and subsystem to set http/https_proxy env vars, as well as possible settings for other env vars, but handle these specially.
Exchange should be the wrapper for Azy which simplifies sending/receiving data (handles all eet compression of data, for instance), notifications, getting status, listing personal and shared/public items, fetching and caching "preview thumbnails" and other text etc.

Start it all by re-doing exchange library, then making some cmd-line test apps to make sure it can all work. keep them as part of libexchange for future testing and tools. now make some elementary clients to do some of the above.