Joining the MythTV CommunityBeta
From MythTV Book
| Chapter Details |
|---|
| Credits |
|
Authors: Michael Still, Stewart Smith |
| Links |
|
Published version: Joining the MythTV Community |
| Beta Chapter |
|---|
| Warning: This chapter is currently a beta. This means that the chapter hasn't had any review yet, and might be inaccurate. Please be cautious when implementing recommendations from this chapter. If you find problems with this chapter, then either fix them yourself, or send your comments to the editors. |
Contents |
Introduction
This chapter focuses on something a little different from the others in this book. It’s not specifically about getting a piece of functionality working in MythTV, although we will discuss how to get the latest version of the code from source control and run that. It’s more about how to become an active member of the MythTV community, either as a developer or as a supporter of the community. We will discuss how to install development releases of the MythTV code. We will also discuss the MythTV mailing lists that you should consider joining, the IRC channels devoted to MythTV discussions, and how to file bugs and keep track of the progress of MythTV development.
Joining the Users' Mailing List
The first step you should take when considering joining the MythTV community (or any other open source community) is to join the users' mailing list. You can find the web form to subscribe to the MythTV users' mailing list at MythTV users' mailing list subscription page. Be aware, though, that a fair bit of email flows through the list (it can be as much as 100 messages a day), so you should either set up mail filtering in your client or be prepared for all the email in some other way. Alternatively, you can sign up to a 'digest' of the list so you only receive a single email per day that includes all the message posted in the past 24 hours.
| Don't make a fool of yourself! |
|---|
| As with all mailing lists, it’s a good idea to read before you write; join the mailing lists in advance and follow the traffic for a while so you don’t make a fool of yourself in your first message -- just when you need people to feel helpful toward you. You should also remember to use your favorite search engine before asking questions on a mailing list. It may well be that the answer to your question has been well documented elsewhere. |
Chatting with Other MythTV Users
There are two MythTV-related IRC channels. IRC stands for Internet relay chat and is an online form of "chat room" that predates both instant messaging and web forums. It is very popular in the open source community. In IRC terminology, a chat room is called a channel. To connect to an IRC channel, you will need to install an IRC client. We use Pidgin, formerly known as Gaim, which is available on all popular Linux distributions. On a Debian based system you can install it as shown below, for others use the appropriate package management tool.
$ sudo apt-get install pidgin
Once installed, you will need to configure an account. You do this by running Pidgin from the Applications ➤ Internet ➤ Pidgin Internet Messenger menu of the Gnome panel in Ubuntu. You will see the screen in Figure 1.
You will be greeted by a welcome screen, which tells you that you need to create an account (Figure 2). Click the Add button, and create an account (Figure 3).
You can see here that we want our username to be “newbie” (you can pick pretty much anything provided it's unique, and there isn’t any need to register in advance), we’re connecting to the Freenode IRC network, and we want to log in when Pidgin starts. Click Save, and you will be connected to the IRC server. This will result in an accounts screen being displayed, as well as a buddy list and the IRC session. All three windows are shown in Figure 4.
You can now close the account dialog box, you need to do this only the first time, because next time the auto-start-up preference will be used. Now we're connected to IRC, you can see a message from "NickServ", which is a special user which manages usernames (known as "nicks" in IRC parlance). In this case we got an error message saying someone is using the “newbie” name that we wanted. That’s OK; a different one will be issued to us if we don’t authenticate as that user. You’re now ready to connect to IRC channels. The relevant ones are #mythtv-users and #mythtv. Join a channel by using the join command like this:
/join #mythtv-users
The command can be entered in any active IRC tab, so just type it into the Nickserv tab. A new tab will appear with the #mythtv-users channel (see Figure 5 for an example). To see discussion in that channel, you will of course need to select that tab from the bar at the top of the window. Extra tabs with names like "ChanServ" and "MythLogBot" may show up as well. These are informational messages about the channel you just joined. Select those tabs, read the messages, and then close the tabs by clicking the crosses at the top right of the tab. The #mythtv-users channel is used for the general user discussion of MythTV, such as helping others with their installations or asking installation questions. You should ask general questions here.
The second channel is #mythtv and is devoted to developer discussion. You can join in the same way as for #mythtv-users, but with the different channel name. Again, a new tab will appear. The #mythtv channel is for developer discussion only. Don’t ask user questions here, as you will likely get a rude response! Note that, unlike in some projects, merely the fact that you’re compiling the package from source code -- even if on an unusual platform or operating system -- doesn’t qualify you to be asking questions on the developer channel; there are lots of MythTV users and not many developers, so preserving their peace and quiet is even more important than usual.
Finally, you can add these channels to your buddy list in Pidgin for easy access later by going to the Buddy window and navigating to Buddies ➤ Add chat (Figure 6), which will present you with a dialog box like the one shown in Figure 6.
Now you have a shortcut to the #myth-users channel in your buddy list, as shown in Figure 8.
Helping Others
It is likely that other people in your area will also be trying MythTV. Often there will be several people at your local Linux user group (LUG) who will discuss MythTV-related topics every so often; there are Myth user groups in some cities as well. There are often people at LUGs new to MythTV too.
Sharing your experiences and learning from others is very rewarding, and we encourage you to do so. This is a key part of any Open Source project - freely exchanging ideas and helping one another.
Running the Latest Version of the Code
The MythTV developers change the MythTV code a lot. Most of those changes are incremental and aren’t intended individually to create complete new versions of MythTV. Every now and then the developers release a version of these changes, and they try to make sure the release is as stable as possible. The developers then go back to breaking the code in order to make it even better for the next release.
This is a pretty standard pattern for the software development in general, but in the open source community these incremental releases are public and reasonably frequent. The objective of making them available is so people will download them and give the changes a try and report any problems they experience. Additionally, it allows other people to develop an interest in the MythTV code and perhaps start contributing changes themselves.
You can find the Subversion (also called SVN, after the name of the command-line client) source code repository at http://svn.mythtv.org. You can install a SVN client like this:
$ sudo apt-get install subversion
You check out the latest code with the following command lines (first you’ll want to create a directory specifically for building the software and change directory to there first):
$ mkdir mythtv $ cd mythtv $ svn co http://svn.mythtv.org/svn/trunk/mythtv A mythtv/i18n A mythtv/i18n/mythfrontend_zh_tw.ts A mythtv/i18n/mythfrontend_cs.qm A mythtv/i18n/mythfrontend_es.qm A mythtv/i18n/mythfrontend_nb.ts A mythtv/i18n/mythfrontend_is.qm ... A mythtv/filters/greedyhdeint/greedyhdeint.pro A mythtv/filters/denoise3d A mythtv/filters/denoise3d/filter_denoise3d.c A mythtv/filters/denoise3d/denoise3d.pro A mythtv/COPYING U mythtv Checked out revision 19454. $ svn co http://svn.mythtv.org/svn/trunk/mythplugins A mythplugins/mythweb A mythplugins/mythweb/mythweb.conf.lighttpd A mythplugins/mythweb/LICENSE A mythplugins/mythweb/mythweb.conf.apache A mythplugins/mythweb/mythweb.php A mythplugins/mythweb/INSTALL ... A mythplugins/mythnews/mythnews/dbcheck.h A mythplugins/mythnews/mythnews/mythnewseditor.h A mythplugins/mythnews/mythnews/mythnews.pro A mythplugins/targetdep.pro U mythplugins Checked out revision 19454. $ svn co http://svn.mythtv.org/svn/trunk/myththemes A myththemes/configure A myththemes/MythCenter A myththemes/MythCenter/preview.jpg A myththemes/MythCenter/title A myththemes/MythCenter/title/title_info_center.png A myththemes/MythCenter/title/title_schedule.png ... A myththemes/Retro-OSD/cut_end.png A myththemes/Retro-OSD/edit.png A myththemes/Retro-OSD/themeinfo.xml A myththemes/Retro-OSD/paused_frame.png U myththemes Checked out revision 19454.
Note those revision numbers: you’ll need them if you have to discuss the code with other programmers. Once you have the code, the actual process of building and installing it is the same as in The Hard Way: Installing MythTV From Source. We’ll briefly repeat the relevant portions here, but refer to that chapter for a more complete discussion. First, you need to enable the universe and multiverse package repositories if you haven't already. This is done by un-commenting the relevant lines in /etc/apt/sources.list, which should look like this:
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu ## team. Also, please note that software in universe WILL NOT receive any ## review or updates from the Ubuntu security team. deb http://us.archive.ubuntu.com/ubuntu/ intrepid universe deb-src http://us.archive.ubuntu.com/ubuntu/ intrepid universe deb http://us.archive.ubuntu.com/ubuntu/ intrepid-updates universe deb-src http://us.archive.ubuntu.com/ubuntu/ intrepid-updates universe ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu ## team, and may not be under a free licence. Please satisfy yourself as to ## your rights to use the software. Also, please note that software in ## multiverse WILL NOT receive any review or updates from the Ubuntu ## security team. deb http://us.archive.ubuntu.com/ubuntu/ intrepid multiverse deb-src http://us.archive.ubuntu.com/ubuntu/ intrepid multiverse deb http://us.archive.ubuntu.com/ubuntu/ intrepid-updates multiverse deb-src http://us.archive.ubuntu.com/ubuntu/ intrepid-updates multiverse
Next, install the tools and libraries needed to build MythTV. This is slightly different from those discussed in The Hard Way: Installing MythTV From Source because the current development version of MythTV uses QT4, whilst the current stable version uses QT3. QT is a "widget library", in other words a set of buttons, sliders, and other window elements used to construct a graphical environment. Fetch the required dependencies like this:
$ sudo apt-get install build-essential libmp3lame-dev qt4-dev-tools $ sudo apt-get build-dep mythtv
| liblame-dev vs libmp3lame-dev |
|---|
| When I first tried to fetch the build dependencies for MythTV, I got this error message: $ sudo apt-get install liblame-dev Reading package lists... Done Building dependency tree Reading state information... Done Package liblame-dev is not available, but is referred to by another package. This may mean that the package is missing, has been obsoleted, or is only available from another source However the following packages replace it: libmp3lame-dev E: Package liblame-dev has no installation candidate If this happens to you, try installing the list of dependancies without liblame like this: $ sudo apt-get install autotools-dev ccache comerr-dev dpatch libartsc0 libartsc0-dev libasound2-dev libaudio-dev libaudio2 libavc1394-dev libcups2-dev libcupsys2-dev libdts-dev libdvb-dev libdvdnav-dev libdvdnav4 libdvdread-dev libdvdread3 libexpat1-dev libfaac-dev libfaac0 libfaad-dev libfaad0 libfftw3-3 libfftw3-dev libfontconfig1-dev libfreebob0 libfreetype6-dev libgcrypt11-dev libgif-dev libgl1-mesa-dev libglib2.0-dev libglu1-mesa-dev libgnutls-dev libgpg-error-dev libice-dev libid3tag0 libiec61883-dev libimlib2 libimlib2-dev libjack-dev libjack0 libjack0.100.0-dev libjpeg62-dev libkadm55 libkrb5-dev liblcms1-dev liblircclient-dev libltdl7-dev libmng-dev libmysqlclient15-dev libogg-dev libpng12-dev libpthread-stubs0 libpthread-stubs0-dev libqt3-compat-headers libqt3-headers libqt3-mt libqt3-mt-dev libraw1394-dev libsm-dev libtasn1-3-dev libtiff4-dev libtiffxx0c2 libtool libungif4-dev libvorbis-dev libx11-dev libx264-59 libx264-dev libxau-dev libxcb-xlib0-dev libxcb1-dev libxcursor-dev libxdmcp-dev libxext-dev libxfixes-dev libxft-dev libxi-dev libxinerama-dev libxmu-dev libxmu-headers libxrandr-dev libxrender-dev libxt-dev libxv-dev libxvidcore4 libxvidcore4-dev libxvmc-dev libxvmc1 libxxf86vm-dev mesa-common-dev qt3-dev-tools texi2html x11proto-core-dev x11proto-fixes-dev x11proto-input-dev x11proto-kb-dev x11proto-randr-dev x11proto-render-dev x11proto-video-dev x11proto-xext-dev x11proto-xf86vidmode-dev x11proto-xinerama-dev xtrans-dev zlib1g-dev This resolved the problem for me. |
Next, run the configuration script:
$ cd mythtv $ ./configure # Basic Settings Compile type release Compiler cache yes DistCC no qmake /usr/bin/qmake-qt4 install prefix /usr/local runtime prefix /usr/local CPU x86_32 (model name : Intel(R) Core(TM)2 Duo CPU T8300 @ 2.40GHz) ... # Bindings bindings_perl yes bindings_python yes Creating libs/libmythdb/mythconfig.h and libs/libmythdb/mythconfig.mak
Now we're ready to compile:
$ makeLots of output will now be printed to the screen, as each part of MythTV is built. How long this takes will vary based on the speed of your machine, the number of processors in your machine, and the speed of your disks. It took around 15 minutes on one of our machines. After it has completed, you can install MythTV by executing "make install" with the appropriate permissions -- this means running make install with sudo, like this:
$ sudo make install
All the files needed by MythTV will now be copied into directories under /usr/local/. Its now time to move on to installing plugins. We need a new version of the plugins even if we previously had a version of MythTV installed because the plugins use internal components of MythTV which change between releases. We described how to install the plug-ins in Installing Other Plug-Ins. To save you digging around in that chapter, I'll briefly describe the process again. Change directory to the one you checked the plugins out to, and then run these commands:
$ sudo apt-get build-dep mythplugins
| liblame-dev vs libmp3lame-dev again! |
|---|
| I again had problems with liblame-dev and libmp3lame-dev conflicting, although this will hopefully be fixed by the time you read this. If you have a problem like that described in the sidebar above, then try just installing the components you need, like this: $ sudo apt-get install cvs fftw-dev fftw2 gawk gcc-4.2-base gettext-kde kdelibs-data kdelibs4-dev kdelibs4c2a kdesdk-scripts libaa1-dev libacl1-dev libart-2.0-dev libarts1-dev libarts1c2a libaspell-dev libattr1-dev libaudiofile-dev libavahi-client-dev libavahi-common-dev libavahi-qt3-1 libavahi-qt3-dev libbz2-dev libcaca-dev libcdaudio-dev libcdaudio1 libcdparanoia0-dev libcucul-dev libdbus-1-dev libdirectfb-dev libdirectfb-extra libesd0-dev libexif-dev libflac-dev libgfortran2 libidn11-dev libilmbase-dev libjasper-dev liblua50 liblua50-dev liblualib50 liblualib50-dev libmad0 libmad0-dev libmpich1.0gf libmyth-0.21-0 libmyth-dev libncurses5-dev libopenexr-dev libpcre3-dev libpcrecpp0 libqt3-mt-mysql libsasl2-dev libsdl1.2-dev libslang2-dev libsysfs-dev libtag1-dev libvisual-0.4-dev libxml2-dev libxslt1-dev lua50 |
$ ./configure --enable-transcode --enable-vcd --enable-aac --enable-festival Configuration settings: qmake /usr/bin/qmake-qt4 MythArchive plugin will be built MythBrowser plugin will be built MythControls plugin will be built MythFlix plugin will be built MythGallery plugin will be built ... $ make ... $ sudo make install ...
Finally, you need to install the themes you just downloaded. Again, it’s a case of following the configure, make, make install pattern:
$ ./configure $ make $ sudo make install ...
Updating the Source Code
Now that you have the source code downloaded, you can update your snapshot at any time by changing into the directory containing the code and running this command:
$ svn updateRemember that you should do this for three source directories you downloaded earlier in order to keep them in sync -- otherwise you may end up with incompatible changes between several of the directories. After you update, you can recompile using the steps listed previously.
Things You Should Know While Running the Latest Version
Running unreleased versions of any piece of software has risks. This is true of MythTV as well -- you might miss out on recordings, you might corrupt your database, or you might lose data in some other way. The developers of course try hard to avoid these situations, but you should be aware that they might exist. If you need access to the cool, unreleased features available from the source repository, then remember to keep good backups and be careful about when you upgrade. You can find more information about backing up MythTV in the Making Backups chapter.
Specifically, you should subscribe to the mythtv-commits mailing list, which is updated every time the code changes. Here’s an example of a commit message:
Author: skamithi Date: 2006-12-06 07:26:35 +0000 (Wed, 06 Dec 2006) New Revision: 12209 Changeset: http://cvs.mythtv.org/trac/changeset/12209 Modified: trunk/mythtv/libs/libmythdvdnav/dvdnav.h trunk/mythtv/libs/libmythdvdnav/searching.c trunk/mythtv/libs/libmythdvdnav/vm.c trunk/mythtv/libs/libmythdvdnav/vm.h trunk/mythtv/libs/libmythtv/DVDRingBuffer.cpp trunk/mythtv/libs/libmythtv/DVDRingBuffer.h Log: Closes #2542. this should fix the madagascar dvd menu selection issue. basically check if the title menu exists, if not, then don’t use it. i’m closing #2542 even though problem (1), the “double” button issue, of the ticket is unresolved. I don’t know how to fix it, so if someone has a patch for it, please reopen the ticket and submit the patch.
You can see in this message that the change was fairly safe and might be of interest if you’ve been trying to get that Madagascar DVD working. You should also join the developers' mailing list if you’re interested in the general direction of the code and what people are thinking about at the moment.
Submitting Code
If you end up with changes to the code that you want to submit to the community, then you should follow the instructions on the MythTV website. Basically, it's a case of filing a ticket instead of sending email to the developers' list. That way it's tracked and doesn't get forgotten.
Conclusion
This chapter was pretty short, but it should have set you up to become a more active member of the MythTV community. If you’re looking for places to start helping the MythTV team out, we recommend working on some online documentation or the official MythTV wiki, hanging out on the mailing lists and asking questions, or playing with the code. What you do will of course depend on your free time, interests and level of expertise.









