Closed fortenbt closed 8 years ago
thanks
@fortenbt what parts of the codebase are most confusing? I'm working on improving the documentation
The hardest part for me was getting an overall picture of how things fit in to the larger project.
Retroplayer question: I understand that OpenELEC is a Linux distro and Kodi is an application that runs on that. I understand what libretro is and RetroArch is the reference front-end of libretro. I understand retroplayer is a Kodi player core. Does retroplayer use RetroArch to provide a front-end to the emulators? Or is retroplayer its own front-end to libretro?
Binary Addon questions:
I found this: http://forum.kodi.tv/showthread.php?tid=195552 where you provide a nice block diagram of some of the relevant pieces and APIs.
What I think would be great is to have a block diagram next to that that shows one possible example scenario.
e.g.
So far for me, nothing about the codebase is that confusing because I'm currently working on understanding how everything is laid out. If I wanted to implement a feature or go debug something weird that's happening, I wouldn't know where to look because of the size of the project and abstraction across so many APIs.
That's not a bad thing, either; I'm sure you and others have put a lot of work and thought into the design, so right now I'm just trying to get a hang of where everything is and how it fits together.
I've been making notes on what I'm learning so that I can eventually provide a nice little introduction README for anyone who wants to start hacking on different pieces.
Thanks for the time you've put into responding and the help you've provided. I'm looking forward to hopefully being able to provide something to the project in the future.
Does retroplayer use RetroArch to provide a front-end to the emulators? Or is retroplayer its own front-end to libretro?
RetroPlayer is its own front-end to libretro. RetroPie uses Emulation Station to browse and RetroArch as a frontend. Ignition uses Node.js to browse and RetroArch as a frontend. There's a few other similar projects around.
Binary Addon questions:
- I'm assuming binary addons are addons to Kodi; what can binary addons handle?
Binary add-ons were created so that add-ons could be written in C++. Check out the includes directory for the C interfaces.
- Are there benefits to binary addons other than modularity/keeping code out of Kodi that doesn't necessarily belong?
Many. Third-party providers can author a proprietary extension (like Netflix or Spotify) without source. Kodi can be included in the Play store without patent-encumbered code. Kodi can be shipiped without license-encumbered code (many emulators are non-commercial). Instead, these add-ons can be installed separately from a web repo.
- What are some examples?
- peripheral.joystick is a basic binary add-on that provides joystick APIs and button mapping
- game.libretro is another basic add-on that wraps libretro cores
- game.netplay uses a dependency (protobuf)
- kodi-game hosts all libretro cores
- repo-binary-addons indexes all official binary add-ons
I found this: http://forum.kodi.tv/showthread.php?tid=195552 where you provide a nice block diagram of some of the relevant pieces and APIs. What I think would be great is to have a block diagram next to that that shows one possible example scenario.
Thanks for the advice
I've been making notes on what I'm learning so that I can eventually provide a nice little introduction README for anyone who wants to start hacking on different pieces.
Let me know when this is ready, I can fill in some of the missing details
Thanks for the time you've put into responding and the help you've provided. I'm looking forward to hopefully being able to provide something to the project in the future.
Projects of this scale are hard to tackle, but it's good experience and once you tackle Kodi you can navigate any large project. I actually pull a lot of code from Firefox, it's helpful being able to quickly locate the code I need.
Picking off the low hanging fruit while learning the codebase...