Kodi Community Forum

Full Version: GSoC'17 Proposal - Profile Support
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Name : Simon Paillard
forum / email: ashirase / [email protected]

Intro: I'm a huge fan of Kodi and have been using it to replace cable TV in my appartment for 2 years now. I was very excited to learn that Kodi participates in GSoC. I'm a student in Computer Science at McGill University and have been coding for the past two years (in Java mostly). I have been teaching myself C++ over the past 3-4 months. The most challenging projects I have contributed to include writing a web application for a laptop lending program being launched by a student organization I belong to, as well as contributing to the development of an Android application targeted towards users of the organization's services. Code for this and other small projects I've completed is on my github.

Summary: I propose to extend Kodi's current profile management to support a hierarchy of profiles. As suggested in this thread, hierachical profiles would allow profiles for different users to share some common state (such as movies/shows watched together, or linked accounts), while remaining flexible and keeping user-specific options separate. This could be acheived by allowing profile objects to be linked in a tree structure and implementing the expected behaviours using graph traversals. Time permitting, I would also like to work on the option of having "roaming profiles" that can follow the user from device to device. This would be a greater challenge for me, but I believe it could be accomplished by adding the option to sign-in to non-local profiles, and read the serialized profiles from a database that can be either self-hosted or on a cloud service.

What will the project focus on : The main goal of this project is to improve the user exerience. As such, the realization of the project must be done in a way that is intuitive and user friendly.

Benefits : Support for a profile hierarchy would be most beneficial to users who share a common installation (e.g., families, couples, roommates, etc.). Support for roaming profiles would benefit users who are often mobile (e.g., signing in to your own profile from a friend's Kodi installation).

Goals :
  • Reimplement Profiles class to support linked profiles
  • Refactor Profile settings dialogs and windows to support new profile features

What does this touch in Kodi : This touches most of the profile management components and some UI components as well.

Requirements :C++ coding experience, access to multiple Kodi installations for testing.

Tell us about the computer(s) and devices you have available for working on your SoC project? I have a Moto E (XT1527) running LineageOS 14.1, a raspi model B+ running OpenELEC (and Kodi) and access to others, an Asus Zenbook ux31e and an intel mac mini both running arch linux.

How much time do you have available, and how would you plan to use it? I will be available from May 1st to September 1st and have no other full time engagements during the summer. I plan to treat this as a full time job.

Thanks for your consideration,

Simon Paillard
From a mere user point of view: Fantastic, I'd love this :-) I'd be one of the benefitors.

I'll subscribe to this thread, so if you have questions and write them here, I'll try to come up with some kind of answer (from the user point of view).
Whatever new profile system will be put in place will need to be general enough for any new features and any addons to be able to manage their own user-specific settings. If serious work is going to start on rewriting profiles, you may want to look through this thread, and the Retroplayer forum in general. There are aspects of Retroplayer that could be managed in a profile (controller configs, automatic controller assignment, achievements, savestates). Retroplayer would be one consumer of the profile, but any conceivable future feature should be able to be supported without having to modify the profile system later.

I'm not a member of Team Kodi, but I am a software developer, and I am following the development of Kodi (but not a contributor) so take this as a suggestion until otherwise directed.