Development: Difference between revisions

From Official Kodi Wiki
Jump to navigation Jump to search
 
(37 intermediate revisions by 14 users not shown)
Line 1: Line 1:
{{cleanup}}
{{Kodi_development_nav}}
{{XBMC development nav}}
{{mininav}}
 
__TOC__
__TOC__
{{-}}
{{-}}
== Topics ==
{{see also|Category:Development}}
{{development links}}


==General guidelines==
== Source code ==
* Code documentation (DocBook, rst, or [http://www.doxygen.org doxygen] for the code documentation steps, preferably the latter, [http://www.doxygen.org doxygen])
* See: https://github.com/xbmc/xbmc
* Self-containment - XBMC should be as little dependent as possible on operating-system and third-party services/deamons/libraries
** XBMC should for example contain all file-system and network-client (like samba) support built-into the XBMC package
* Modular design - independent modules made up by localized/isolated code libraries without dependencies
** XBMC should still compile and run if a non-essential module/library is disabled or removed
* Aim for the GUI/interface to run smoothly on a low spec computer (single core with less than 1Ghz)
** 3D graphic controller (GPU) will always be required hardware for XBMC so try to utilize the GPU as much as possible
* Avoid harddisk trashing (excess read/write/erase cycles), so no harddrive paging, (utilize RAM memory instead).
** End-users will be running XBMC and the operating-system on Solid-State memory as a [http://en.wikipedia.org/wiki/LiveDistro Live CD (LiveDistro)] of a USB-key
* Fast load and boot times for end-user perception (other things can still run/start in the background without the user knowledge)
** 15-seconds or less from when the end user press the power-button on the computer till he/she can browse the GUI


== User-friendliness is next to godlyness ==
== Development Tools ==
{{#lst:XBMC manifesto|User-friendliness}}
* [http://www.stack.nl/~dimitri/doxygen/ Doxygen] - Source code documentation generator tool.
 
=Technical summary of XBMC=
==Source code==
*See: https://github.com/xbmc/xbmc


==Development Tools==
== People who can help you with specific development areas of Kodi ==
* [http://www.stack.nl/~dimitri/doxygen/ Doxygen] - Source code documentation generator tool.
Your first point of call is to post on the forum in the development section. This will attract the attention of the developer knowledgeable in the field you are working on.


==Other tools and resources==
== Other tools and resources ==
Though any other tools or resources are not required they can possibly help in development.
Though any other tools or resources are not required they can possibly help in development.
* [[Eclipse CDT Setup For XBMC Development]]
* Eclipse CDT Setup For XBMC Development
* [http://www.stack.nl/~dimitri/doxygen/ Doxygen] - Source code documentation generator tool.
* [http://www.stack.nl/~dimitri/doxygen/ Doxygen] - Source code documentation generator tool.
* [http://valgrind.org Valgrind] (for Linux) - a free Linux programming tool for memory debugging, memory leak detection, and profiling.
* [http://valgrind.org Valgrind] (for Linux) - a free Linux programming tool for memory debugging, memory leak detection, and profiling.
* [http://www.daimi.au.dk/~sandmann/sysprof/ Sysprof] (for Linux) - a free System-wide Linux Profiler for tracking CPU usage. Sysprof is a sampling CPU profiler for Linux that uses a kernel module to profile the entire system, not just a single application. Sysprof handles shared libraries, and applications do not need to be recompiled. In fact they don't even have to be restarted. Just insert the kernel module and start sysprof.
* [http://www.daimi.au.dk/~sandmann/sysprof/ Sysprof] (for Linux) - a free System-wide Linux Profiler for tracking CPU usage. Sysprof is a sampling CPU profiler for Linux that uses a kernel module to profile the entire system, not just a single application. Sysprof handles shared libraries, and applications do not need to be recompiled. In fact they don't even have to be restarted. Just insert the kernel module and start sysprof.


=Mentors=
== General guidelines ==
Mentors are developers from [[Team XBMC and Others|Team-XBMC]] and members of [http://sourceforge.net/projects/xbmc The XBMC Project] that have volunteered to assist and mentor non-official XBMC developers in any non-trivial way they can, helping you by checking, commenting and committing your code patches to our SVN source code tree. These mentors have chosen an area they prefer to specialize in, usually this is an area in which they feel they have most interest, knowledge, and expertise in. Initial [[HOW-TO submit a patch|patches are welcome]], and can and will be merged by the team. If you wish to [[Apply to join the Official XBMC Development-Team|join the team in an official capacity]], please let us know.
* Code documentation (DocBook, rst, or [http://www.doxygen.org doxygen] for the code documentation steps, preferably the latter, [http://www.doxygen.org doxygen])
 
* Self-containment - Kodi should be as little dependent as possible on operating-system and third-party services/daemons/libraries
==Port mentors and developers (Linux, Mac OS X and Windows)==
** Kodi should for example contain all file-system and network-client (like samba) support built-into the XBMC package
If you are a C/C++ programmer expert, porting specialist or guru and like to volunteer as a ''''third-party'''' mentor and/or developer then please let us know.
* Modular design - independent modules made up by localized/isolated code libraries without dependencies
 
** Kodi should still compile and run if a non-essential module/library is disabled or removed
==Linux Mentors (also lead developers)==
* Aim for the GUI/interface to run smoothly on a low spec computer (single core with less than 1Ghz)
* [[User:Yuvalt|Yuvalt]]: Everything Linux
** 3D graphic controller (GPU) will always be required hardware for Kodi so try to utilize the GPU as much as possible
* [[User:Vulkanr|Vulkanr]]: Everything Linux
* Avoid hard-disk trashing (excess read/write/erase cycles), so no hard-drive paging, (utilize RAM memory instead).
* [[User:Jmarshall|JMarshall]]: Anything GUI related, Music Library, Video Library, PAPlayer, etc.
** End-users will be running Kodi and the operating-system on solid-State memory as a [http://en.wikipedia.org/wiki/LiveDistro Live CD (LiveDistro)] of a USB-key
* [[User:D4rk|D4rk]]: OpenGL, other Linux stuff
* Fast load and boot times for end-user perception (other things can still run/start in the background without the user knowledge)
* [[User:Elupus|Elupus]]: DllLoader, Mplayer and DVDPlayer
** 15-seconds or less from when the end user press the power-button on the computer till he/she can browse the GUI
* [[User:Spiff|Spiff]]: Anything other than DllLoader/MPlayer/DVDPlayer internals.
* [[User:monkeyman 67156|monkeyman 67156]]: Everything Linux
* [[User:Topfs2|Topfs2]]: Everything Linux
* [[User:malloc|malloc]]: Everything Linux
 
==Mac OS X Mentors (also lead developers)==
* [[User:Davilla|Davilla]]: Everything Mac OS X
* [[User:D4rk|D4rk]]: OpenGL, other Mac OS X and Linux stuff
* [[User:malloc|malloc]]: Everything Mac OS X and Linux
* [[User:Vulkanr|Vulkanr]]: Everything Mac OS X and Linux
 
==Windows Mentors==
* [[User:WiSo|WiSo]]: Everything Win32 (SDL, not DirectX)
* [[User:Chadoe|Chadoe (a.k.a. Charly)]] - Everything Win32 (SDL, not DirectX)
* [[User:Jmarshall|JMarshall]]: Anything GUI related, Music Library, Video Library, PAPlayer, etc.


=Contact methods=
== Code guidelines and formatting conventions ==
* IRC: [irc://irc.freenode.net/xbmc-dev #xbmc-dev on freenode] official [http://freenode.net IRC network channel] focused on XBMC development
[[Official:Code_guidelines_and_formatting_conventions|Official: Code guidelines and formatting conventions]]
* [http://forum.xbmc.org/forumdisplay.php?fid=93 XBMC Development Community Forum]


* [[HOW-TO submit a patch]] (where and how to submit source code)


== Contact methods ==
* IRC: [irc://irc.libera.chat:6697/kodi-dev #kodi-dev on LiberaChat] ([https://libera.chat/ LiberaChat]) focused on Kodi development | via [https://web.libera.chat/#kodi-dev Kodi-dev on Libera Webchat] | Generic Kodi support via IRC: [irc://irc.libera.chat:6697/kodi #kodi on LiberaChat].
* Forum: [https://forum.kodi.tv/forumdisplay.php?fid=93 Kodi Development Community Forum]
* [[HOW-TO:Submit_a_patch]] (where and how to submit source code)


[[Category:Development|*]]
[[Category:Development]]
[[Category:Skin Development]]
[[Category:Skin development]]
[[Category:Linux]]
[[Category:XBMC Live]]
[[Category:Mac OS X]]
[[Category:XBMC Manual]]

Latest revision as of 10:55, 4 December 2021

Development:
Home icon grey.png   ▶ Development


Topics

Kodi development
Specific topics
Skinning
Add-ons

Source code

Development Tools

  • Doxygen - Source code documentation generator tool.

People who can help you with specific development areas of Kodi

Your first point of call is to post on the forum in the development section. This will attract the attention of the developer knowledgeable in the field you are working on.

Other tools and resources

Though any other tools or resources are not required they can possibly help in development.

  • Eclipse CDT Setup For XBMC Development
  • Doxygen - Source code documentation generator tool.
  • Valgrind (for Linux) - a free Linux programming tool for memory debugging, memory leak detection, and profiling.
  • Sysprof (for Linux) - a free System-wide Linux Profiler for tracking CPU usage. Sysprof is a sampling CPU profiler for Linux that uses a kernel module to profile the entire system, not just a single application. Sysprof handles shared libraries, and applications do not need to be recompiled. In fact they don't even have to be restarted. Just insert the kernel module and start sysprof.

General guidelines

  • Code documentation (DocBook, rst, or doxygen for the code documentation steps, preferably the latter, doxygen)
  • Self-containment - Kodi should be as little dependent as possible on operating-system and third-party services/daemons/libraries
    • Kodi should for example contain all file-system and network-client (like samba) support built-into the XBMC package
  • Modular design - independent modules made up by localized/isolated code libraries without dependencies
    • Kodi should still compile and run if a non-essential module/library is disabled or removed
  • Aim for the GUI/interface to run smoothly on a low spec computer (single core with less than 1Ghz)
    • 3D graphic controller (GPU) will always be required hardware for Kodi so try to utilize the GPU as much as possible
  • Avoid hard-disk trashing (excess read/write/erase cycles), so no hard-drive paging, (utilize RAM memory instead).
    • End-users will be running Kodi and the operating-system on solid-State memory as a Live CD (LiveDistro) of a USB-key
  • Fast load and boot times for end-user perception (other things can still run/start in the background without the user knowledge)
    • 15-seconds or less from when the end user press the power-button on the computer till he/she can browse the GUI

Code guidelines and formatting conventions

Official: Code guidelines and formatting conventions


Contact methods