Difference between revisions of "Development guide"

From MythTV Official Wiki
Jump to: navigation, search
(Plug-in developers guide)
(Things you can work on)
 
(47 intermediate revisions by 14 users not shown)
Line 1: Line 1:
= MythTV Development Howto =
+
MythTV is primarily written in C++. Feel free to talk to us about your code and experiments in our mailing lists and chat groups or code something and submit it as a patch or feature to us.
  
So you want to know more about the development of MythTV? Well, ''first'', almost all of the development activity goes through the [http://www.mythtv.org/mailman/listinfo/mythtv-dev/ mythtv-dev mailing list]. When you have an interesting idea, subscribe to mythtv-dev, review [http://gossamer-threads.com/lists/mythtv/dev/ its archive], and ask if anybody else is working on it. Some people might want to help you with figuring things out, and on the other hand, you might also be of assistance to existing efforts.
 
  
== I can't program. Can I help? ==
+
=== Getting started ===
  
Of course, there are lots of things that can be done without being a code wizard. Documentation often lags behind features. The [http://www.mythtv.org/mailman/listinfo/mythtv-commits mythtv-commits mailing list] provides information on what has been coded into the system recently and updating documentation here or in the official docs on mythtv.org is a welcome contribution.
+
The simplest and fastest way to get started coding on MythTV is simply by downloading the current development code, compiling it, and running it on your machine. To do this just simply follow any installation manual for MythTV. We suggest you use:
 +
* [http://code.mythtv.org/trac MythTV Bug Tracker and Git Repo] contains information on obtaining the source code
 +
* one of the [[:Category:Distribution_Specific_Install_Guides|Distribution Specific Install Guides]] (e.g. Ubuntu-8.10 Source Install);
  
If you have language skills, you can work on internationalizing/translating the product. This is needed in the core system as well as the modules.
+
After this you can experiment with the code, recompiling it and test it on your machine. When you're familiar with the code, and after reading the [[Coding_Standards|Coding Standards Guidance]], you could try to pick-up a [http://code.mythtv.org/trac ticket] to solve a bug or you could fix a small bug that you have encountered.
  
If you are interested in creating a new theme, read the [[theme development guide]] section for how to get started.
+
Try not to start with a big project, small but valuable patches are the best way to learn the code and to familiarise yourself with the process of submitting your work for inclusion. You can build to bigger patches later on.
  
Or, of course, you can help writing and editing material right here on the Wiki.  There's a project underway to create a [[User Manual]] which is starting to pick up steam.
+
If you wish to add a '''new feature''', it is strongly recommended that you consult with the developers on the [[Community | Developer mailing list]] since you may be duplicating work, or they may have guidance that would save you wasting time on a patch that won't be accepted.
  
Beta testing new features is always appreciated. One does not need to be a developer to pull code from SVN and compile it - but you do need to be aware that going to SVN code implies a certain responsibility on the user's part to debug their own problems, file useful bugreports, and be able to downgrade or upgrade accordingly to fix issues.
+
=== Things you can work on ===
  
<div style="border: solid 1px; border-color: blue; margin: 1em; padding: 1em; background-color: lightblue; font-size: 80%">
+
You can work on MythTV by picking up a ticket or by implementing a new feature. Before starting on either one, you should let others know about your intentions by posting this to the [[Community | Developer mailing list]]. Visit our [http://code.mythtv.org/trac/ tracker] to find out what you can work on.
Did you know you to can help contributing to MythTV?
+
  
Besides [[Development guide | developers]] we need people to help with the manuals, documentation, design, layout, testing, etc. So join us making MythTV even beter than it already is. '''Find out how you can help''' [[HowToHelp | here]].
+
The following is from a quote from a mailing list post by Stuart Morgan.
</div>
+
  
== I've got this great idea... ==
+
<blockquote>
 +
''"We will generally accept patches against code written by MythTV developers. I stress that last part because the example you chose, RTjpegN.cpp, is in fact third party code that we've included into our code base, we normally don't accept code formatting fixes for those because it would make re-syncing them harder. If you do supply patches, please split them up into bite-size chunks, preferably not touching multiple libs, or too many files at once. This will make them easier to review and easier to apply, especially if one of the files changes before we can get to that point."''
 +
</blockquote>
  
Ultimately, this project's direction is Isaac's to control.
+
=== When your code is ready ===
  
But, some users have taken the time to suggest items to go on a [[Feature Wishlist]]. If you are a developer looking for a project, this might be a place look for some ideas proposed from the user community. Understand that these features may not represent what the project maintainers are looking for. A quick note to the myth-dev mailing list with your intentions will often result in feedback on the viability of your ideas in the project.
+
When your code is ready for the public, check the [[Submitting Bug Fixes]] page for information on how this is done.
  
Often, your idea might already exist -- it's a big project, and the features are sometimes a little tricky to find. Before spending time developing a new concept, try these steps:
 
  
* Look through all of the settings pages in [[MythFrontend]] and setup.  Sometimes the feature you want isn't in the place you'd expect, or it's using a different name.
+
=== How we work together ===
* Read the [http://svn.mythtv.org/trac/browser/trunk/mythtv/keys.txt keys.txt] file in the Myth distribution.  Many options are documented here, and you may not know of their existence.
+
* [http://svn.mythtv.org/trac/report Search Trac reports] to see if someone's submitted a bug report or feature request.  You may be able to help by adding more information and clarifying the original report.
+
* [http://gossamer-threads.com/lists/mythtv/dev/ Search the mythtv-dev archive] to see if someone's already discussed the feature.  It may have been rejected because of some unforeseen consequence, or someone may already be working on it.
+
  
== I can program, how can I help? ==
+
Almost all of the development activity goes through the [http://www.mythtv.org/mailman/listinfo/mythtv-dev/ mythtv-dev mailing list]. When you have an interesting idea, subscribe to mythtv-dev, review [http://gossamer-threads.com/lists/mythtv/dev/ its archive], and ask if anybody else is working on it. Some people might want to help you with figuring things out, and on the other hand, you might also be of assistance to existing efforts.
  
If you are new to developing Myth, these pages can help you through the process:
 
  
* Some guidelines for writing code are on the [[Coding Standards]] page. 
+
There is also the possibility to chat in realtime with other developers as you can findout [[Community | '''here''']].
* When your code is ready for the public, check the [[Submitting Bug Fixes]] page for information on how this is done.
+
  
  
= Plug-in developers guide=
+
=== Plugins ===
In the [[Plug-in developers guide]] we will explain you in a few simple steps how you can build your own plugin for MythTV. All this is explained in a Walk-through example having you build your first (Hello world)plugin within 30 minutes (no need to read any other stuff on this site).
+
  
 +
Users have the possibility to extend their system with extra functionality by simply adding plugins. Users and developers can write their own plugins that run within MythTV and can be controlled by remote. A fast and easy way to get started is by taking a small existing plugin to start with. You can learn more about this '''[[Plug-in_developers_guide | here]]'''.
  
== Developing MythTV themes==
 
'''Required skills:''' Light technical knowlegde, feeling for layout and design
 
  
If you are interested in creating a new theme, read the [[theme development guide]] section for how to get started.
+
=== Themes===
  
=Other developer sources =
+
If you are more into design and graphics you will like the theme possibilities in MythTV to create new looks for the users to look at.
  
* [http://svn.mythtv.org/trac/ More about how to help developing MythTV]
+
 
 +
Theming can be as simple and complex as you want it to be. The best way to get started building your own theme is by experimenting with an existing theme. Learn more about this in the '''[[MythUI Theme Development]]''' guide.
 +
 
 +
=== Translations ===
 +
 
 +
If you have language skills, you can also help out by translating MythTV into other languages. Read more about it '''[[Translation | here]]''' and join the mailing list [http://www.mythtv.org/mailman/listinfo/mythtv-translators here].
 +
 
 +
 
 +
===Still not sure how to help?===
 +
 
 +
Visit our IRC-based development discussions or send us a message through the mailing list. You can find more about this [[Community | '''here''']].
 +
 
 +
 
 +
=== I've got this great idea... ===
 +
 
 +
Every project has a leader, MythTV is led by its steering committee. But some users have taken the time to suggest items to go on a [[Feature Wishlist]]. If you are a developer looking for a project, this might be a place look for some ideas proposed from the user community.
 +
 
 +
 
 +
Understand that these features may not represent what the project maintainers are looking for. A quick note to the mythtv-dev mailing list with your intentions will often result in feedback on the viability of your ideas in the project.
 +
 
 +
=== Your idea might already exist ===
 +
 
 +
There is a chance your idea already exists -- it's a big project, and the features are sometimes a little tricky to find. Before spending time developing a new concept, try these steps:
 +
 
 +
* Look through all of the settings pages in [[mythfrontend]] and setup.  Sometimes the feature you want isn't in the place you'd expect, or it's using a different name.
 +
* Read the [https://github.com/MythTV/mythtv/blob/master/mythtv/keys.txt keys.txt] file in the MythTV distribution.  Many options are documented here, and you may not know of their existence.
 +
* [http://code.mythtv.org/trac/report Search Trac reports] to see if someone's submitted a bug report or feature request.  You may be able to help by adding more information and clarifying the original report.
 +
* [http://gossamer-threads.com/lists/mythtv/dev/ Search the mythtv-dev archive] to see if someone's already discussed the feature.  It may have been rejected because of some unforeseen consequence, or someone may already be working on it.
 +
 
 +
=== Some helpful pages to keep close ===
 +
 
 +
If you are new to developing MythTV, these pages can help you through the process:
 +
 
 +
* [http://www.mythtv.org/mailman/listinfo/mythtv-dev/ mythtv-dev mailing list] - The mailing list developers use to communicate to each other.
 +
* [[Submitting Bug Fixes]] - How to submit your bug fixes when your code is ready for the public.
 +
* [[Coding Standards]] - Some guidelines for writing code.
 +
* [http://code.mythtv.org/trac/ MythTV Trac server] - Trac startpage with relevant coding info
 
* [http://www.mythtv.org//modules.php?name=MythInfo mailinglist and more information]
 
* [http://www.mythtv.org//modules.php?name=MythInfo mailinglist and more information]
 
* [http://www.cuymedia.net/doxygen-dev-docs/html/ 0.20.2 (Stable) Code Documentation]
 
* [http://www.cuymedia.net/doxygen-dev-docs/html/ 0.20.2 (Stable) Code Documentation]
 
* [http://miffteevee.co.uk/documentation/development/ Trunk  (Development) Code Documentation]
 
* [http://miffteevee.co.uk/documentation/development/ Trunk  (Development) Code Documentation]
 +
* [[Developing in Eclipse on Win32]]
 +
* [[Developing in Eclipse on Linux]]
 +
 +
  
 
[[Category:Developer Documentation]]
 
[[Category:Developer Documentation]]
 
[[Category:Plugins]]
 
[[Category:Plugins]]
 
[[Category:HOWTO]]
 
[[Category:HOWTO]]
[[Category:Knowledge Base]]
 
[[Category:Themes]]
 

Latest revision as of 23:45, 28 August 2013

MythTV is primarily written in C++. Feel free to talk to us about your code and experiments in our mailing lists and chat groups or code something and submit it as a patch or feature to us.


Getting started

The simplest and fastest way to get started coding on MythTV is simply by downloading the current development code, compiling it, and running it on your machine. To do this just simply follow any installation manual for MythTV. We suggest you use:

After this you can experiment with the code, recompiling it and test it on your machine. When you're familiar with the code, and after reading the Coding Standards Guidance, you could try to pick-up a ticket to solve a bug or you could fix a small bug that you have encountered.

Try not to start with a big project, small but valuable patches are the best way to learn the code and to familiarise yourself with the process of submitting your work for inclusion. You can build to bigger patches later on.

If you wish to add a new feature, it is strongly recommended that you consult with the developers on the Developer mailing list since you may be duplicating work, or they may have guidance that would save you wasting time on a patch that won't be accepted.

Things you can work on

You can work on MythTV by picking up a ticket or by implementing a new feature. Before starting on either one, you should let others know about your intentions by posting this to the Developer mailing list. Visit our tracker to find out what you can work on.

The following is from a quote from a mailing list post by Stuart Morgan.

"We will generally accept patches against code written by MythTV developers. I stress that last part because the example you chose, RTjpegN.cpp, is in fact third party code that we've included into our code base, we normally don't accept code formatting fixes for those because it would make re-syncing them harder. If you do supply patches, please split them up into bite-size chunks, preferably not touching multiple libs, or too many files at once. This will make them easier to review and easier to apply, especially if one of the files changes before we can get to that point."

When your code is ready

When your code is ready for the public, check the Submitting Bug Fixes page for information on how this is done.


How we work together

Almost all of the development activity goes through the mythtv-dev mailing list. When you have an interesting idea, subscribe to mythtv-dev, review its archive, and ask if anybody else is working on it. Some people might want to help you with figuring things out, and on the other hand, you might also be of assistance to existing efforts.


There is also the possibility to chat in realtime with other developers as you can findout here.


Plugins

Users have the possibility to extend their system with extra functionality by simply adding plugins. Users and developers can write their own plugins that run within MythTV and can be controlled by remote. A fast and easy way to get started is by taking a small existing plugin to start with. You can learn more about this here.


Themes

If you are more into design and graphics you will like the theme possibilities in MythTV to create new looks for the users to look at.


Theming can be as simple and complex as you want it to be. The best way to get started building your own theme is by experimenting with an existing theme. Learn more about this in the MythUI Theme Development guide.

Translations

If you have language skills, you can also help out by translating MythTV into other languages. Read more about it here and join the mailing list here.


Still not sure how to help?

Visit our IRC-based development discussions or send us a message through the mailing list. You can find more about this here.


I've got this great idea...

Every project has a leader, MythTV is led by its steering committee. But some users have taken the time to suggest items to go on a Feature Wishlist. If you are a developer looking for a project, this might be a place look for some ideas proposed from the user community.


Understand that these features may not represent what the project maintainers are looking for. A quick note to the mythtv-dev mailing list with your intentions will often result in feedback on the viability of your ideas in the project.

Your idea might already exist

There is a chance your idea already exists -- it's a big project, and the features are sometimes a little tricky to find. Before spending time developing a new concept, try these steps:

  • Look through all of the settings pages in mythfrontend and setup. Sometimes the feature you want isn't in the place you'd expect, or it's using a different name.
  • Read the keys.txt file in the MythTV distribution. Many options are documented here, and you may not know of their existence.
  • Search Trac reports to see if someone's submitted a bug report or feature request. You may be able to help by adding more information and clarifying the original report.
  • Search the mythtv-dev archive to see if someone's already discussed the feature. It may have been rejected because of some unforeseen consequence, or someone may already be working on it.

Some helpful pages to keep close

If you are new to developing MythTV, these pages can help you through the process: