Dev Week -- Having fun with the MozillaTeam - Alexander Sack -- Thu, Sep 4
(03:00:21 PM) asac: so welcome everyone (03:00:33 PM) asac: i think this session is called "Having fun with the MozillaTeam" (03:00:40 PM) chombium: thank you Riddell (03:00:57 PM) asac: sorry for this generic name, but i wasnt really sure what topic to use (03:01:27 PM) asac: i am also in -chat so if you have questions just use my nick to summon me there (03:01:59 PM) asac: so ... agenda (03:02:02 PM) tr_tr_ left the room ("Konversation terminated!"). (03:02:20 PM) asac: first i want to give a quick overview of the MOzillateam, what we do and how we do it (03:02:55 PM) asac: then i want to present you what is new in intrepid and ubufox. we have some nice features there ... which leads to a practical excersize (03:03:10 PM) asac: baking a new release from the latest "ubufox" upstream sources (03:03:35 PM) asac: third - depending on how much there will be left I we will try to write a tiny browser writting in xul (03:03:39 PM) asac: using xulrunner (03:04:07 PM) asac: so first topic: mozillateam overview (03:04:36 PM) asac: the mozillateam feels responsible for all things that are related to mozilla applications in ubuntu (03:05:04 PM) asac: first that is obviously all mozilla standalone applications we have in the archive (03:05:18 PM) asac: most prominently firefox (03:06:13 PM) asac: however, mozilla applications alone are just a small part of the ecosystem that comes with firefox and friends (03:06:48 PM) asac: another big chunk is obviously extensions ... of which we have an ever growing number in the archive (03:07:12 PM) asac: those are quite easy to maintain and are ideal for anyone who wants to do initial packaging contributions (03:07:30 PM) JontheEchidna left the room. (03:07:46 PM) asac: the other chunk are "plugins" ... e.g. handlers for webcontent that isnt natively supported by mozilla apps (03:07:52 PM) asac: like flash, video and others (03:09:19 PM) asac: another category of applications we feel responsible for are applications that use the gecko engine to render HTML (03:10:02 PM) asac: before we had webkit, the gecko engine was practically the only HTML engines applications could embed and thus (03:10:13 PM) asac: most applications that need to render HTML are still using it (03:10:47 PM) asac: prominent gecko embedders are: epiphany, yelp, devhelp, miro and others (03:11:24 PM) asac: most issues in those application that turn out to be gecko related usually end up on the plate of the mozilalteam (03:12:10 PM) asac: the good about webkit is that mozilla has now started a new effort to write a new, easier to use and better to maintain embedding API (03:12:20 PM) asac: so there will certainly be interesting happen in the future here (03:12:46 PM) asac: the other "new" category of applications that fall into the yard of the mozillateam are obviously xulrunner applications (03:13:20 PM) asac: those - as I hopefully can show later - are quite easy to develop and especially those familiar with modern website development techniques should find it easy to get started (03:13:31 PM) asac: as its basically just XML with javascript (03:13:53 PM) asac: QUESTION: is Chromium expected to be part of the browser team efforts shortly? (03:14:15 PM) asac: this is still open. personally i have a high interest in getting this into the archive and thus are monitoring the progress here (03:14:40 PM) asac: however, realistically it will take a few month until there will be something really good to distribute in ubuntu (03:15:08 PM) asac: maybe now that its out they get more contributions than expected or readjust their priorities in favour of linux (03:15:15 PM) asac: so lets keep our eyes open (03:15:36 PM) asac: QUESTION: that new api is for gecko? (03:15:56 PM) asac: yes, the API i referred to is ment to sit on top of gecko and provide a stable and easy to use contract (03:16:28 PM) asac: ok back to xulrunner applications: (03:16:52 PM) asac: firefox itself is a xulrunner application and if you are look at the code you will probably be impressed that its mostly javascript and XML (03:17:12 PM) asac: though firefox is probably a bit tricky to start with as they use all kind of corner-cases (03:17:25 PM) asac: anyway, i expect that new xulrunner applications pop up in the future (03:17:32 PM) asac: one xulrunner app that is in the archive is prism (03:17:49 PM) asac: which basically allows you to make standalone applications out of websites like gmail (03:17:57 PM) asac: e.g. with a menu entry and in a window that has no navigation bar (03:18:04 PM) asac: (just what the chrome folks just presented) (03:18:26 PM) asac: if you want to try you can install prism-google-mail (03:18:27 PM) asac: ;) (03:18:29 PM) asac: a package (03:18:51 PM) asac: ok ... so how does the mozillateam work. (03:19:04 PM) asac: especially when it comes to code and package maintenance. (03:19:25 PM) asac: for all the core things we do, we use bzr (03:19:45 PM) asac: our bzr branches can be found here: (03:19:46 PM) asac: http://code.launchpad.net/~mozillateam (03:20:16 PM) asac: usually whenever you wonder if there is a snapshot or trunk build available, its already done in bzr (03:20:28 PM) asac: for instance we have branches that track firefox 3.1 and xulrunner 1.9.1 there (03:20:51 PM) asac: and even though they are not yet in the archive, using those branches to build your own packages is usually just a matter of CPU power (03:21:21 PM) asac: for our standalong applications - which have a huge source code base - we historically package the debian/ directory only (03:21:38 PM) asac: so building is at best done using the bzr builddeb command (03:22:07 PM) asac: if someone is instersted in building such branches you can just ask in #ubuntu-mozillateam. (03:22:39 PM) asac: maybe a few words to branch naming. the branches that have a .head suffix usually track the development trunk (03:22:54 PM) asac: we regularly bump the upstream date in changelog after we verified that the build still works (03:23:19 PM) asac: when it comes to a new upstream release from that branch, we just merge that branch to the .dev branch (03:23:25 PM) asac: which basically is our release branch (03:23:38 PM) asac: e.g. everything that gets committed there has been somewhat QAed and will be uploaded (03:24:09 PM) asac: for stable maintenance we suffix our branches with .<release> ... e.g. .hardy (03:24:33 PM) asac: so what does that mean. when you want to get a feature into intrepid or want to add a new patch, just do it on top of the .head branch (03:24:44 PM) asac: and propose your work for merging (03:25:27 PM) asac: launchpad has quite a nice feature for "propose a merge". and those requests will get much faster attention and feedback then the "old" way of submitting debdiffs (03:25:49 PM) asac: but maybe we can try the "propose a merge" in the next agenda point (03:27:27 PM) asac: ok before we start, a few suggestions how developers can get started on mozilla in ubuntu (03:27:55 PM) asac: 1. if you are not familiar with packaging or want to get more hands-on experience on bzr you can start helping on packaging extensions (03:28:21 PM) asac: the main contact for extensions and plugins is Jazzva ... but you can also ask me obviously ;) (03:29:02 PM) asac: 2. helping on universe mozilla packages: (03:29:34 PM) asac: we get more and more universe mozilla packages and because of a lack of time it becomes harder to add more to the ubuntu repository (03:30:00 PM) asac: main contact on this topic is fta or me (03:30:09 PM) asac: 3. helping on security updates for universe: (03:30:45 PM) asac: this is a regular task which requires rebuilding packages with new upstream tarball, QAing them and working with the ubuntu security team and me to get them it (03:31:08 PM) asac: 4. bug forwarding ... (03:31:31 PM) asac: if you wnat to know more about mozillas inner guts its usually a good thing to start seriously forwarding bugs (03:31:55 PM) asac: because you need to understand in which component a bug is it will help you to get used to the structure of firefox applications (03:32:10 PM) asac: which in the end helps you to get started on the real code (03:32:23 PM) asac: ok thats it for the intro :) (03:32:28 PM) asac: are there any questions? (03:33:01 PM) asac: QUESTION: How do you build the branches? (03:33:19 PM) asac: basically its just: bzr builddeb --merge (03:33:24 PM) asac: but for that you need the orig.tar.gz (03:33:38 PM) asac: so if you try to build a snapshot that isnt in any archive that you have in your sources.list (03:33:49 PM) asac: (in which case bzr builddeb would automatically download it) (03:33:53 PM) asac: you have to produce the tarball (03:34:13 PM) asac: we have unified way to do that (03:34:35 PM) asac: its ./debian/rules get-orig-source DEBIAN_DATE=20080818t1500 (03:34:49 PM) asac: this will get you a snapshot from 1808 at 1500 UTC (03:35:05 PM) asac: the magic that does all this is shippd i mozilla-devscripts (03:35:51 PM) asac: remember that for firefox-3.1 you also need xulrunner-1.9.1 (03:35:52 PM) asac: :) (03:36:21 PM) asac: anyway. we also have regularly binaries built. in a semi-official archive (03:36:38 PM) asac: but building from the branches is much more flexible and helps you to directly contribute ;) (03:36:54 PM) asac: if you need the archive ask in the mozillateam channel ;) (03:37:14 PM) asac: ok more questions or can we move on? (03:37:56 PM) asac: 2. Ubufox 0.6 Beta (03:38:23 PM) asac: i am proud to announce that ubufox 0.6 has finally reached beta state and that now the only thing left is to plumber a package from it (03:38:41 PM) asac: one of the amazing features we have in their is the ability to switch plugins ;) (03:38:59 PM) asac: e.g. adobe flash is crashy and you like to use gnash ... (03:39:21 PM) asac: in the past you couldnt do that because there was some content that you couldnt use gnash for (03:40:16 PM) asac: so now to get some hands on experience, lets get the latest ubufox upstream code from my development branch (03:40:21 PM) asac: to do that you run: (03:40:26 PM) asac: bzr branch lp:ubufox (03:40:53 PM) asac: and when you got that you can run (03:40:57 PM) asac: sh build.sh (03:41:04 PM) asac: inside the ubufox directory to produce a .xpi (03:41:27 PM) asac: let me know when you got that far ;)= (03:41:54 PM) asac: when you did that you can just install the .xpi like you would install any .xpi (03:42:01 PM) asac: like: firefox /path/to/ubufox.xpi (03:42:09 PM) asac: (which should be in the directory after running build.sh) (03:42:22 PM) asac: so if you are in the ubufox directory you can just run (03:42:23 PM) asac: firefox ubufox.xpi (03:43:06 PM) asac: when you have it installed, please visit youtube (as an example) (03:43:27 PM) asac: whenever you visit a site with flash on it, you should now see a plugin icon (currently blue) in the right bottom status bar (03:44:46 PM) asac: anyone not seeing that icon? when you click on it you theoretically can change amount plugins ;) (03:45:00 PM) asac: requirements: a) you have the latest xulrunner from intrepid (03:45:09 PM) asac: b) you have more than one plugin visible in about:plugins (03:45:56 PM) asac: the other feature we have in the new ubufox are the safe upgrade feature (e.g. when you upgrade firefox you will get a restart notification in firefox) (03:46:19 PM) asac: you should be able to test that by runnign: (03:46:21 PM) asac: /var/lib/update-notifier/user.d/firefox-3.0-restart-required (03:46:23 PM) asac: err (03:46:26 PM) asac: sudo touch /var/lib/update-notifier/user.d/firefox-3.0-restart-required (03:46:45 PM) asac: anyway. since time is running low, lets do the packging ;) (03:47:07 PM) asac: for that you also need the packagin branch (next to the ubufox branch you just downloaded) (03:47:16 PM) asac: bzr branch lp:~ubuntu-core-dev/ubufox/ubuntu (03:47:27 PM) asac: then cd into the ubuntu/ directory (03:47:38 PM) asac: and create a new changelog entry to prepare the new upstream merge (03:48:15 PM) asac: the mozillateam always keeps the changelog targetted for UNRELEASED ... so basically to add a new entry you do: (03:48:26 PM) asac: dch -v0.6~b1-0ubuntu1 -DUNRELEASED (03:48:33 PM) asac: and then safe that changelog without adding any entry (03:48:40 PM) asac: then commit this: (03:49:10 PM) asac: bzr commit -m "* open packaging tree for 0.6 beta 1 merge" (03:49:50 PM) asac: everyone got that far? (03:50:52 PM) asac: ok. lets do the merge ;) (03:51:01 PM) asac: when you are in ubuntu you now just use bzr to merge ;) (03:52:14 PM) asac: when you are in the ubuntu/ branch (03:52:16 PM) asac: you just run: (03:52:20 PM) asac: bzr merge lp:ubufox (03:52:31 PM) asac: which will do some rumbling and the merge the latest upstream development (03:52:54 PM) asac: i think there shouldnt be any conflict so you are basically done (03:53:03 PM) asac: just document the merge in the changelog: (03:53:11 PM) asac: add an entry like: (03:53:19 PM) asac: * MERGE 0.6~b1 release from lp:ubufox (03:53:23 PM) asac: - adds feature 1 (03:53:27 PM) asac: - adds feature 2 (03:53:36 PM) asac: ... (you dont need to add that feature list here now) (03:53:45 PM) asac: when you added that to the debian/changelog yuo can just (03:53:50 PM) asac: run: (03:53:52 PM) asac: debcommit (03:54:07 PM) asac: and that should commit the merge with a proper changelog entry (equal to what you added to debian/changelog) (03:54:35 PM) asac: to test the branch you can now just build it with: (03:54:39 PM) asac: bzr bd --native (03:54:51 PM) asac: (note --native is wrong ... just easy to not neeed to produce a orig.tar.gz) (03:54:59 PM) asac: and installing the .deb (03:55:19 PM) asac: since time is running low: lets assume that you tested all this. (03:55:28 PM) asac: so how to get that released? (03:55:50 PM) asac: simple: you just push your branch to launchpad. lets assume your launchpad nick is "mynick" ... then you just do a: (03:56:01 PM) asac: bzr push lp:~mynick/ubufox/ubuntu (03:56:27 PM) asac: and when you have that up, you navigate to your branch and "propose it for merge" ;) (03:56:47 PM) asac: the branch you should propose the merge into is: https://code.edge.launchpad.net/~ubuntu-core-dev/ubufox/ubuntu (03:57:28 PM) asac: ok :) ... i hope you enjoyed this. and actually i hope i get a propose for merge on this ubufox release ;) (03:57:51 PM) asac: unfortunately i cannot show you how easy its to write a webbrowser in xulrunner ;) ... but well. thats bad luck (03:57:52 PM) sebner: asac: \o/ (03:57:56 PM) asac: if you have questions go ahead now (03:58:14 PM) asac: or after this session: #ubuntu-mozillateam or ubuntu-mozillateam@lists.ubuntu.com (subscriptiuon required) (03:59:30 PM) asac: ok no questions. hope my speed didnt take all energy from you (03:59:32 PM) asac: thanks alot (03:59:39 PM) asac: cu in #ubuntu-mozillatem