Development

From RetroShare Wiki

Jump to: navigation, search

Contents

Software Development Projects.

    • The following are the current high priority development projects for retroshare.**

Projects Already Underway:

Channels

The Channel Distribution allows each user to share material with their retroshare friends. Create a public or private channel to broadcast to your friends. Uses a novel Popularity system to ensure only the best stuff gets through! This system is almost complete. All that is required is persistent storage of keys/channels, management of channel downloads and some other minor features.

  • Connect Play Button
  • Improve GUI display of channels (sorting order etc).
  • Display Channels popularity.
  • Display for VideoFiles Thumbnails (Thumbnails support for VideoFiles).
  • Channel Info only redistributed after a restart (To FIX).
  • Updates not 100% reliable.
  • should delete downloaded files after one month (save space).
  • Probably other bugs too.
  • Image/Picture support for Channels (Title + Poster)
  • Image/Picture support for each Channel Name's Icon Label to can use own pictures(*.png,*.jpg..).
  • changeable Channels Directory from settings.
  • Search Filter Feature to can search for Titles on each Channel

Target: in Development...


Challenging Projects Looking for Developers:

Improve File Transfer System (High Priority):

The File Transfer system is basic but functional at the moment. It needs to be extended in several ways to support other features such as
File Cache / Secure "RetroWeb" Pages / Verifying File Hashes / Directory Downloads etc. NOTE: The FileStore Search Interface of the FileCache needs to be completed before the FileTransfer can be commenced.

Target: Not Specified Yet.

Add F2F Broadcasting/Streaming (High)

Design Broadcasting Channels:
Broadcasting Live Content from VLC Outputs, from TV Card, from Webcam, Videofile to RetroShare for

  • Live Channels ( Live Streaming )
  • Video Channels( Video Streaming | Video on Demand ).

dependent on

improved Streaming.
UDP Transport.
Datagram Encryption.

Target: Not Specified Yet.

Video streaming for Friends Video Files

Because of the spacial locality between friends, a resource consumer service like video streaming could be implemented. Basically, the idea is to browse a video file on a friend's Files and play it on your computer without first downloading the whole of it and then playing it, but, use your friend's RetroShare as a streaming server and your RetroShare as a streaming client (and vice versa when is the case). Similar idea for audio files.

Target: Not Specified Yet.

Improve the class streaming (High)

At the moment all the information that is streamed over the network is in the form of a "PQItem *". These classes were designed a long time ago - and should be re-vamped at some point. Issues with the current system:

  • Encoding/Decoding is currently hand-coded. It would

be great to use a streaming library such as BOOST,GStreamer.

  • The current streaming is not platform independent.

The streaming should be changed to Network-Byte-Order, this will allow retroshare to run on platforms such as MacOSX.

  • The current system cannot be easily extended.

A light weight generic packet should be implemented, that can be easily extended to allow new protocols to be easily added to retroshare.

Target: Not Specified Yet.

Unify transport to single UDP port (High)

retroshare uses TCP connections, and TCP-on-UDP each one uses an independent socket/port. If all communications were switched to packets over UDP then a single socket could be used.

  • This would simplify the routing configuration:

only a single incoming/outgoing UDP port.

  • This would improve performance of enhancements).

Target: Not Specified Yet.

Use Datagram Encryption (High)

All packet would have to use Packet encryption, which is available in the latest version of OpenSSL.

Target: Not Specified Yet.


Add more interaction between the RS library and the GUI

    • CHALLENGING PROJECT FOR A NEW DEVELOPER TO START ON!**

add more interaction between the RS library and the GUI: the problem now is that the GUI is displaying info from time to time and that the library cannot send immediate feedback to the GUI. Practically, this means that you get some lag when deleting messages or removing/adding friends. It's also a pain to implement progress bars for file hashing because of the uni-directional way of running things. Of course one needs to keep the RS library standalone and it's out of question to mix it with the GUI, but maybe passing some callbacks for instance could help doing this.

Target: Not Specified Yet.

Add a Generic Communication/Networking API for RetroShare Plugins:

    • GOOD PROJECT FOR A NEW DEVELOPER TO START ON!**

The Retroshare Network can be used as a networking layer for other programs. To make this easier for application developers, a Generic Networking layer needs to be added to retroshare.

Target: March 2008.

Add a IPC Control Interface for external control of Retroshare

    • CHALLENGING PROJECT FOR A NEW DEVELOPER TO START ON!**

Design a simple set of commands (messages) for controlling retroshare from another application. Create a small stub which can be added to other applications to control retroshare using IPC communications.

This should use the new "Generic Packets/Serialiser" and so is dependent on that task.

Target: Not Specified Yet.

Redesign RetroShare's emoticons,Chat styles,notifications,skins (Low)

  • a feature to can set emoticons from settings, can take different emoteicons
  • use xml defined emoticons, can use avaible emoticons packages from other project for RetroShare
  • Implement incoming/outgoing Chat styles similar kopete's method.
  • make Chat styles feature compatible with exsisting Adium or Kopete Chat styles for RetroShare's Privat Chat.
  • can set from Settings which Chat styles i will use,i can select avaible chat styles.
  • rewrite the skinobject skins feature to make it more useable, to can change widget skins easyer.
  • bether notifications

Target: Not Specified Yet.

Redesign RetroShare's Instant Messaging Protocol (Low)

RetroShare uses a very simple IM chat system at the moment. This should be extended to make features such as "Groups", History etc possible within RetroShare. This is probably best acheived via using some existing messenger protocol. If none exists, a new one should be designed. We're looking for people that use and understand IM well. Can create Puplic or Hidden Dynamic Groupchat Channels with topics.

Target: Not Specified Yet.

Virtual Networking Device (TUN/TAP) for VPN support:

    • LOOKING FOR A LEAD DEVELOPER FOR THIS PROJECT**

Retroshare creates secure connections to your peers. For ultimate flexibility, these connections could be accessed as a virtual Network device on your PC. We are looking for a VPN / TUN / TAP expert to run this project, as the existing retroshare developers have no experience in this area.

Target: Not Specified Yet.

Usefull example: http://www.ntop.org/n2n/

Add Groups feature (High)

Friend Groups. I want to be able to securely share files with my colleagues at work. And I want to be able to securely share files with my personal friends. But I don't want my friends to see my confidential work files. And I don't want my colleagues to see my home movies of me playing guitar hero. There are some files I might like to share with both groups. Similarly, I work with my friend Rob and I'd like to put him in both groups so he could get both sets of files.

It would be great if each shared directory could be tagged with one or more groups. Likewise, "friends" should be able to be tagged with one or more groups.

  • You can have different groups in your network.
  • Hidden from other users/friends
  • Each group has own "Group Name"
  • You can set for different Groups different Shared Files with Privileges (readable/hidden)
  • Public Chat for each group (which will be generated automaticly if the group member joined/connected)
  • Modify Friends Dialog to support Groups feature(for dynamic new groupchats needs tabs)
  • You can set Privilegs for each Friend for this Group by Group Creator
  • For each Group it generates own Incoming and Temp dirs (example: Group1/Incoming dir and Group1/Temp dir)

Target: Not Specified Yet.

In need of improvement/maintenance:

File Transfer (High Priority)

  • Swarming and Partial File Sharing This means that it loads randomly parts of the file(smilar emule,Bittorrent)
  • Not Finished Downloaded File can be used as source for other Friends (similar emule,Bittorrent)


  • Upload Queue System (Each Friend get a Queue Position for your Uploads,example: QR: 7 (QR = Queue Ranking))
  • Upload Slots (Limit number of Upload slots,allow not unlimited,set default to 5, editable over Options.)


Transfers Gui (High Priority)

  • show for Collapsed Completed, Transffered data in B/KB/MB/GB for each peer own calculation
  • show for Collapsed Status a own Status like: Transferring(for downloading)for each Peer, (On Queue , Queue Full needs Upload Queue feature)
  • a bether ProgressBar which shows which parts im downloading from Friends and show avaible Parts
  • show for Collapsed Priority own Priority of each sources like example: QR: 3 QR: 4 ,... , Queue Full (QR = Queue Ranking))


  • count anonymous downloads which using Turtle hopping on Sources column
  • display multiple chunks being downloaded at a time, so we

need something that looks like the "pieces" view of bittorrent example here


Features from Context menu:

  • Stop
  • Details.. (Details View: File Name,sources,hash,Size,Comments, Rating, links)example


  • Correctly display uploads/downloads when transfering internal RS data (file lists, forums,messages etc) a more human-readable name should be used in the transfer tab, et ever we want to show them. Files like "fc-own-*.rsfc"could be renamed into "Shared File List". Users don't care about numbers.

And others too like "grpdist-t*-grps-*.dist","grpdist-t*-msgs-*.dist".

Shared Files

  • When Friend Doesnt has Shared Files then doesnt show his Blank Directory in Files.

Share Manager

  • Share Virtual Folders, can create Virtual Folders for Shared Files in Share Manager
  • "Share sub-directories" (checkbox for enable/disable sub-direcotry sharing)

Search (High)

  • show sources as numbers when more sources avaible bigger then 1 (High Priority)
  • Folders Download(s), Optional:search with Folder view for Folder Download( High)
  • show unfinished sources in search result as sources (when the sources has unfinished sources too)


Low:

  • userfriendly easy Filter Feature: min size, max size, sources, Terms
  • rewrite Search for bether Searching (with tabs?)

Video Tube

  • View and share video clips (Preview as Thumbnail)
  • Feature to can comment and rate Friends shared Videos on Video Tube
  • Feature to can start the Video to Download
  • Feature if streaming avaible to watch the Video

Photo Gallery

There is prototyp of PhotoView avaible under gui sources. look on PhotoDialog.cpp/PhotoDialog.h.

  • View Friends photos (Preview as Thumbnail)
  • Feature to can Download the Photos

Music Gallery

  • Listen to Friends music, or create playlists with songs from many different Friends (including one self).

Blog

  • Finish the Prototyp of Blog feature
  • loook in gui/BlogDialog.cpp, BlogDialog.h

Calendar and Scheduling

  • Implement Calender/Scheduling on Messages which we can switch to different view (Messages,Calendar,Tasks) (for events and tasks with your Friends)
  • example look here or here
  • example outlook
  • First example written for RetroShare on trunk CalDialog.cpp/CalDialog.h

Messages

  • Contacts Manager(Address book) for Messages (similar to Thunderbird Address book feature)
  • Longer Messages (break into chunks.)
  • verification that the message was received.
  • Ability to send to anyone in your network - not just your friends.
  • Signed messages. (+ encrypted?)
  • Special Messages

- Introductions. - friend requests. - share channel/forum keys (enables private forums / group channels )

  • More advanced Messages with more features like which has some other Email clients(Thundebird,Kontact)
  • Filter for Messages(search filter to can filter messages for From,Subject,Date it needs to be use QTreeView/QSortFilterProxyModel)

Privat chat

  • Conference , can invite other Friends in a Privat Chat
  • Send a recorded voice message
  • Voice chat
  • Video Chat
  • Sound notifications

Messenger Window

  • Share a Personal Message with your Contacts( It will be displayed after nicknames, similar MSN)
  • Filter for Search a Friend in Messenger(Rewrite MessengerWindow to QTreeView with QStandardItemModel/QSortFilterProxyModel)
  • set Status from Combobox and send my status to other Friends
  • get Status for every Friend and set the correct Icon.
  • Groups Folder Tree for Messenger,generate different groups(groupname) and invite special Friends in your Group.
  • Favorites Folder Tree, you can move your Favorite Friends to this Favorite section.
  • Each Tree Shows the counts like example:

Favorites(1/4) Groups(0/1) Online(4) Offline(12)

RetroShare Directories/Settings

  • Change RetroShare Settings path for Windows to Userfriendly path use Application Dir Path:

at the moment is usen "c/documents and settings / user / application data / RetroShare /".

  • Customizable Directories for Cache, Channels from DirectoriesDialog
  • let store the settings as plaintext to allow changing settings manually too(at moment the cant read it, its binary )

RetroShare file extensions

  • Associate RetroShare with .pqi file extensions (To can add easy via double click/click a Friend to RetroShare)
  • generate own file extension for RetroShare like .retroshare or .rs

TUN/TAP Support

  • to can use over VPN easyer when RetroShare can use a installed TUN/TAP over Windows/Linux/Mac
  • detect automaticly my own VPN IP(example: 10.5.5.1).
  • Posiblity to can use Tun tap adapter and Ethernet net adapter at the same time.

Statistics

  • improve RetroShare Statistics with lots of more data for stats (StatisticDialog).

Collaboration with Friends

  • support collaborative work between "friends".

Security

  • Optional not allow send own Friends and authed signers to other Friends(Oenable/disable via CheckBox).

Completed Projects

Personal tools
wiki