Development: Difference between revisions

From Official Kodi Wiki
Jump to navigation Jump to search
>Gamester17
 
(127 intermediate revisions by 23 users not shown)
Line 1: Line 1:
XBMC is a [http://www.opensource.org/docs/definition.php open source] project licensed under [http://www.gnu.org/licenses/lgpl.html LGPL]/[http://www.gnu.org/copyleft/gpl.html GPL]. Third-party developers/programmers can make and submit [[What_Is_Source_Code|source code]] patches/modules with new features, functions or bug-fixes to us via our [http://sourceforge.net/projects/xbmc SourceForge.net project site]. XBMC's [[What_Is_Source_Code|source code]] is made up of a mix of [http://en.wikipedia.org/wiki/Programming_language programming-languages] (C/C++ and Assembly), and used Microsoft DirectX multimedia framework (Direct3D), (the Xbox does not support OpenGL). XBMC main program (including the GUI) is developed in Microsoft Visual Studio .NET 2003 (7.1) and requires a copy of the latest [[Microsoft Xbox SDK]] (a.k.a. [[XDK]]) to be compiled, (later versions of Microsoft Visual Studio are not supported by the [[XDK]]). XBMC's code also contain four multimedia-player ''cores'' which has to be compiled seperatly, (and work seemslessly to the end-user), none of these ''cores'' require the [[XDK]] to be compiled, (they are instead compiled with [http://www.mingw.org MinGW/MSYS]). One generic audio/video-player core based on [[MPlayer]], one [[DVDPlayer#Development|(FFmpeg-based) dedicated DVD-Video player core]] (for DVD-movies with menus), one [[PAPlayer|dedicated music-player core]], and one [[MODPlayer|Tracker-Mod (audio-modules) player]].
{{Kodi_development_nav}}
{{mininav}}


Some of the XBMC libraries are in the C [http://en.wikipedia.org/wiki/Programming_language programming-languages] but those then uses a C++ wrapper and are loaded via XBMC's own DLL loader. The Xbox Operating-System/BIOS is kind of Win32-based however it does have all of the resources or capabilities of a full Microsoft Windows Operating-System, (for example: DirectShow, registry, nor DLL are nativly supported on the Xbox). Because of the constraints on the hardware  (like only 64MB shared memory and a 733Mhz PIII CPU) and the XDK environment of the Xbox, all software development for XBMC is highly focused on reserving the limited resourses that exist, the main hindrance of which is the amount of available random access memory at any one time, (which is why XBMC code structure is built so modular, enabling libraries to be unloaded when they are not in active use). For more detailed information about XBMC inner working please follow these links and the categories at the end of this article:
__TOC__
{{-}}
== Topics ==
{{see also|Category:Development}}
{{development links}}


==Development Catagory Sections==
== Source code ==
*[http://www.xboxmediacenter.com/wiki/index.php?title=Category:Inner_Workings XBMC Inner Workings]
* See: https://github.com/xbmc/xbmc
*[http://www.xboxmediacenter.com/wiki/index.php?title=Category:Development Development]


==Development HOW-TO==
== Development Tools ==
*[[HOW-TO:_Download_and_compile_your_own_builds_of_XBMC|HOW-TO download and compile your own builds of XBMC]]
* [http://www.stack.nl/~dimitri/doxygen/ Doxygen] - Source code documentation generator tool.
*[[HOW-TO:_Compile_Mplayer.dll|HOW-TO compile a new mplayer.dll from source code]]
*[[HOW-TO Submit a Proper Bug Report|HOW-TO submit a proper bug report]]
*[[HOW-TO submit a patch|HOW-TO submit a patch (contribute source code)]]
*[[Basic overview of the XBMC source code]]
*[[Information on Language Support]]
**[[Keyboard Internationalisation|Overview of input methods + code changes for multi keyboard language support]]
*[[HOW-TO debug Dynamic Link Libraries|HOW-TO debug Dynamic Link Libraries (DLL)]]
*[[Building Scripts|Creating Python Scripts (widget plugins)]]
*[[Apply to join the Official XBMC Development-Team]]


Note! If you are a programmer/developer but not have access to [http://en.wikipedia.org/wiki/Microsoft_Visual_Studio VS.NET] and the [[XDK]] then you can work on [[Linux port project|XBMC for Linux]] or [[HOW-TO: Compile XBMC for Win32 from source code|XBMC for Windows (Win32)]], or you can contribute indirectly by helping the [http://ffmpeg.sourceforge.net FFmpeg] and the [http://www.mplayerhq.hu MPlayer] projects.
== 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.


==XBMC for Linux==
== Other tools and resources ==
*[[Linux port project|XBMC Linux port project]]
Though any other tools or resources are not required they can possibly help in development.
*[[HOW-TO compile XBMC for Linux from source code]]
* Eclipse CDT Setup For XBMC Development
* [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://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.


==XBMC for Windows (Win32)==
== General guidelines ==
*[[HOW-TO: Compile XBMC for Win32 from 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])
* 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 [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


== Code guidelines and formatting conventions ==
[[Official:Code_guidelines_and_formatting_conventions|Official: Code guidelines and formatting conventions]]


[[category:Appendix]]
 
[[category:Inner Workings]]
== Contact methods ==
[[category:Development]]
* 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].
[[category:Skin Development]]
* 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:Skin development]]

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