App Developer Week -- Introducing Bazaar Explorer: Version Control for your Apps - Riddell -- Mon, Sep 5th, 2011

   1 [17:01] <dpm> Next up is Jonathan Riddell, the Kubuntu rockstar who's on his way of becoming a bzr rockstar this cycle too
   2 [17:01] <Riddell> good day everyone
   3 [17:02] <Riddell> I'm going to give an introduction to Bazaar Explorer
   4 [17:02] <Riddell> and convince you it's a developer tool everyone should use
   5 [17:02] <Riddell> you can follow along by following the images at
   6 [17:02] <Riddell> access with guest/guest
   7 [17:03] <Riddell> Bazaar is the world's finest revision control system
   8 [17:03] <Riddell> if you're coding on files, or even have any non coding files you should use it to keep track of them
   9 [17:03] <Riddell> it's fully distributed so you can use it to collaborate with others very easily
  10 [17:04] <Riddell> you don't need a fancy server to use it, it works locally fine
  11 [17:04] <Riddell> but it's also easy to put on a server, http or ssh is all you need
  12 [17:04] <Riddell> if you don't want it distributed you don't have to
  13 [17:04] <Riddell> and it's designed to be easy to use for people familiar with CVS or Subversion
  14 [17:05] <Riddell> it gives the full power of tools like git but it's understandable to people other than Linus
  15 [17:05] <Riddell> it's used everywhere in ubuntu
  16 [17:05] <Riddell> to store all our packaging and code
  17 [17:05] <Riddell> and it's used in large projects like mysql
  18 [17:06] <Riddell> most people will be familiar with Bazaar through bzr, the command line interface
  19 [17:06] <Riddell> command line interfaces are great for those of use who are comfortable with command lines
  20 [17:07] <Riddell> but as Ubuntu spreads out amongst non-geeks we need it to be available to everyone
  21 [17:07] <Riddell> and besides sometimes GUIs are just better even for hardcore geeks
  22 [17:07] <Riddell> so Bazaar Explorer is the GUI for Bazaar
  23 [17:07] <Riddell> well I should say it's /a/ GUI for Bazaar
  24 [17:07] <Riddell> but it is by far the most complete
  25 [17:08] <Riddell> bulldog98 asked: what toolkit is it written in?
  26 [17:08] <Riddell> it's written in Qt with Python
  27 [17:08] <Riddell> an excellent choice for writing any GUI application
  28 [17:09] <Riddell> Qt means its cross platform so it runs anywhere
  29 [17:09] <Riddell> Python means its easy to fix and improve
  30 [17:09] <Riddell> you can install it from any package manager
  31 [17:09] <Riddell> sudo apt-get install bzr-explorer   will do it
  32 [17:10] <Riddell> and run it from the application menu where it's listed as Bazaar Explorer
  33 [17:10] <Riddell> or from a command line as:  bzr explorer
  34 [17:11] <Riddell> when you start it, it'll look like the image 01 on that owncloud server or
  35 [17:11] <Riddell> actually if you've never used Bazaar before it'll probably prompt you for your name and e-mail first
  36 [17:13] <ClassBot> bulldog98 asked: what toolkit is it written in?
  37 [17:13] <ClassBot> bulldog98 asked: why does the oneiric package depends on tango? Can’t oxygen be used?
  38 [17:13] <Riddell> hmm, this bot is fiddly
  39 [17:13] <Riddell> it uses Tango icons, there's not currently an option to use Oxygen icons I'm afraid
  40 [17:13] <Riddell> fixes welcome :)
  41 [17:14] <Riddell> let's use bzr explorer to get some code
  42 [17:14] <Riddell>  shows us going to the "Get project sources from elsewhere" tab
  43 [17:15] <Riddell> I want to branch a project to make a change to it
  44 [17:15] <Riddell> so I click on the Branch button and enter into the address box  lp:ubuntu-cdimage
  45 [17:15] <Riddell>
  46 [17:15] <Riddell> you can host Bazaar branches anywhere but one of the most common places to do so is in Launchpad
  47 [17:16] <Riddell> which hosts any free software project for free, how very generous
  48 [17:16] <Riddell> Launchpad branches have a nice shortcut to their location which is  lp:
  49 [17:16] <Riddell> and in this case I'm wanting the trunk from the ubuntu-cdimage project
  50 [17:16] <Riddell> so I tell it to branch that code
  51 [17:17] <Riddell>
  52 [17:17] <Riddell> ah but wait, what's this, which I like to initialise a shared repository?
  53 [17:17] <Riddell> bzr is so good at making branches that it's common to make a new branch for any notable change
  54 [17:18] <Riddell> then you can edit the branch with out worrying about mistakes
  55 [17:18] <Riddell> and merge it into the main branch when you're happy
  56 [17:18] <Riddell> this leaves a load of branch directories around on your hard disk
  57 [17:18] <Riddell> which might be wasteful of disk space
  58 [17:19] <Riddell> so a shared repository will share all the history which is the same in your branches
  59 [17:19] <Riddell> so yes we do want to make the shared repository
  60 [17:19] <Riddell> a new dialogue box pops up
  61 [17:20] <Riddell> we let it do its initialisation then we get the branch we want
  62 [17:20] <Riddell> an voila, bzr explorer is ready to work on this branch
  63 [17:20] <Riddell> <bulldog98> I can’t see a pic in the owncloud server
  64 [17:21] <Riddell> well just use the flickr images, they're the same
  65 [17:21] <Riddell> if you look in a file manager it will have made a ubuntu-cdimage/ directory and within it a trunk/ directory
  66 [17:22] <Riddell> the ubuntu-cdimage/ directory is our shared repository and the trunk/ directory is our branch we just made
  67 [17:23] <Riddell> in the bottom right of Bazaar Explorer is the working tree, you can open files from there to edit them if you wish
  68 [17:23] <Riddell> or open the whole directory in a file manager or an IDE
  69 [17:23] <Riddell> today I'm going to add a new Ubuntu flavour
  70 [17:23] <Riddell> Bazaarbuntu!
  71 [17:23] <Riddell> it's going to be the distro to take over the world
  72 [17:24] <Riddell> so I'll edit the file in ubuntu-cdimage to start making those CD images
  73 [17:25] <Riddell> having made the edit the Bazaar Explorer page will refresh to note that I have changes
  74 [17:25] <Riddell> (if it doesn't automatically refresh then you have a version without my automatic refresh patch, you can click the "refresh" button)
  75 [17:25] <Riddell> if I want to see my changes I can click on Diff
  76 [17:26] <Riddell> and if I want to save the change to the Bazaar repository I can click on commit
  77 [17:27] <Riddell> this will save the change to my local branch
  78 [17:27] <Riddell> but now I want to publish the change to the wider world so I need to push it to another location which is publically available
  79 [17:27] <Riddell>
  80 [17:27] <Riddell> there I'm pushing it to a branch on Launchpad
  81 [17:29] <Riddell> so now anyone can see my branch on the web
  82 [17:29] <Riddell> and anyone can download it or review the change
  83 [17:29] <Riddell> Bazaar Explorer can access most of the functions of bzr, such as looking at the log of commits
  84 [17:29] <Riddell>
  85 [17:30] <Riddell>
  86 [17:30] <Riddell> infact it can access all the functions of bzr because if there's a bzr command without a gui you can use the "All" option to run it
  87 [17:31] <Riddell> if I want to make more complex changes I probably want to make a new local branch
  88 [17:32] <Riddell> and work on that, then merge it in to trunk when I'm happy
  89 [17:33] <Riddell> of course you don't always care about having branches
  90 [17:34] <Riddell> you might prefer to work more like subversion or cvs where you just checkout directly from the server
  91 [17:34] <Riddell> and commit directly back
  92 [17:34] <Riddell> Bazaar and Bazaar Explorer support this
  93 [17:34] <Riddell> back on the welcome page i click Checkout
  94 [17:35] <Riddell> here I checkout the ubuntu seeds
  95 [17:35] <Riddell> I make my change (adding bzr-explorer)
  96 [17:35] <Riddell> and commit directly back
  97 [17:35] <Riddell> that's working with existing projects
  98 [17:36] <Riddell> but we are App Developers and we want to make our own projects!
  99 [17:36] <Riddell> the Welcome page has a "Start a new Project" tab
 100 [17:36] <Riddell>
 101 [17:37] <Riddell> I initialise a new project
 102 [17:37] <Riddell> there's a few options for what sort of branch you want, Feature Branches is the best sort for most cases
 103 [17:37] <Riddell> that'll make a shared repository and a trunk branch inside it
 104 [17:38] <Riddell>
 105 [17:38] <Riddell> this takes us to a new page which lists the available branches
 106 [17:38] <Riddell> from here we can open a branch or make a new one
 107 [17:39] <Riddell> as a new project working on trunk is expected so we can add our files
 108 [17:39] <Riddell> and commit them
 109 [17:39] <Riddell>
 110 [17:39] <Riddell> and if I wanted I could push it to Launchpad or anywhere else
 111 [17:40] <Riddell> <trinikrono> bazaar explorer is awesome!
 112 [17:40] <Riddell> why thank you trinikrono, free hugs to you
 113 [17:40] <Riddell> now I said that Bazaar is used throughtout Ubuntu
 114 [17:41] <Riddell> we now have (almost) every ubuntu package kept in a Bazaar branch
 115 [17:41] <Riddell> so you can use Bazaar Explorer to branch any Ubuntu package if you feel the need to fix it or otherwise look at the source code
 116 [17:41] <Riddell>
 117 [17:42] <Riddell> here I'm getting the code to Ubuntu's choqok package
 118 [17:42] <Riddell> by branching   ubuntu:choqok
 119 [17:42] <Riddell> which gives me the code to work on
 120 [17:42] <ClassBot> bUbu87 asked: so upstream development just maps to pull requests on the package's launchpad branch?
 121 [17:43] <Riddell> bUbu87: you're talking about the Ubuntu package branches?  Those are imports of packages in Ubuntu so they're not the upstream development branch
 122 [17:43] <Riddell> so if you want to fix a problem which is specific to ubuntu then use those
 123 [17:44] <Riddell> if it's a general problem in the program then use the normal upstream code whereeever that is kept
 124 [17:45] <Riddell> Bazaar Explorer is a nice GUI which works along with your IDE or file manager/text editor for working with code in Bazaar branches
 125 [17:45] <Riddell> there is a half way between the GUI and command line interfaces
 126 [17:46] <Riddell> which is to launch QBzr commands directly from the command line
 127 [17:46] <Riddell> so if you're into using command lines but want an easier way to, say, browse a branch history you can run
 128 [17:46] <Riddell> bzr qlog
 129 [17:46] <Riddell> instead of bzr log
 130 [17:46] <Riddell> which will give you a GUi to look at the log
 131 [17:47] <Riddell> I use this a lot whenever the history is more complex than straight commits
 132 [17:48] <Riddell> the same goes for   bzr qcommit  or bzr qbranch
 133 [17:48] <Riddell> it's a nice alternative for when the command line is showing its limitations
 134 [17:48] <ClassBot> dpm asked: are there Bazaar Explorer packages for platforms other than Ubuntu? (e.g. Win, Mac...)
 135 [17:49] <Riddell> if you install Bazaaron Windows the installer comes with explorer
 136 [17:49] <Riddell> same for Mac I'm sure
 137 [17:49] <Riddell> so it's actually the main UI for non-Linux users
 138 [17:50] <Riddell> which is why if you follow the Take the Tour link on  it shows you Bazaar Explorer
 139 [17:50] <Riddell> that's all I have prepared, any other questions?
 140 [17:50] <ClassBot> There are 10 minutes remaining in the current session.
 141 [17:51] <ClassBot> bulldog98 asked: will there be a port to freedesktop icon usage?
 142 [17:51] <Riddell> I see this is an important issue for you :)
 143 [17:52] <Riddell> I think when Bazaar Explorer was started Tango was the obvious choice
 144 [17:52] <Riddell> since then Oxygen has come along and the freedesktop icon standard is more available
 145 [17:52] <Riddell> but I don't think freedesktop icons are built into Qt so there's a little bit of code needed there
 146 [17:53] <Riddell> do file a bug if it's something you want done and hopefully we'll get round to iy
 147 [17:53] <Riddell> it
 148 [17:53] <ClassBot> dpm asked: apart from Bazaar Explorer, are there other recommended graphical tools? I.e. I know there's qbzr and bzr-gtk, but I don't know if picking one over the other is a matter of choice or whether there is a recommended one to use
 149 [17:53] <Riddell> qbzr is the GUi for individual commands
 150 [17:53] <Riddell> e.g.  bzr qlog
 151 [17:54] <Riddell> when you ask Bazaar Explorer to show you the branch log it will run  QBzr's qlog
 152 [17:54] <Riddell> you can also tell Bazaar Explorer to run bzr-gtk commands instead of QBzr if you really want
 153 [17:54] <Riddell> but QBzr is generally better maintained and is the default
 154 [17:55] <Riddell> the other main graphical tool is Loggerhead which is the web UI
 155 [17:55] <ClassBot> There are 5 minutes remaining in the current session.
 156 [17:55] <Riddell> elite Bazaar hackers recently changed that from spitting out HTML directly to spitting out JSON so it's now a lot more flexible as a way of making UIs
 157 [17:56] <Riddell> e.g. Launchpad can now show you a recent changes diff for merge proposals
 158 [17:56] <Riddell> there's some other UIs such as my own Dolphin Bazaar plugin for KDE's file manager
 159 [17:56] <Riddell> and there's even some experimental integration with Qt Creator
 160 [17:57] <ClassBot> bulldog98 asked: is there a graphical way to see my bazaar config, eg what bazaar plugins are run after a commit (cia-client?)
 161 [17:57] <Riddell> The settings menu lets you change your Bazaar config
 162 [17:58] <Riddell> but it doesn't do everything from a GUI
 163 [17:58] <Riddell> User Configuration has your user setup
 164 [17:58] <Riddell> but stuff like cia plugin config can only be done with editing a text file for now (Settings -> Locations)
 165 [17:59] <Riddell> Bazaar Explorer is extendable so it should be possible for the bzr-cia plugin to add that
 166 [17:59] <ClassBot> Mipixal asked: What about Bazaar branches that are mirrored from other sources (not hosted on Launchpad). Does pushing commits make them available only on Launchpad or to original sources  too ?
 167 [18:00] <Riddell> it depends where you push them
 168 [18:00] <Riddell> if you push them back to where you got it from then it'll be available in the same place
 169 [18:00] <Riddell> if you push it to Launchpad it'll be available on Launchpad
 170 [18:00] <Riddell> there's no fixed tie in between bzr and Launchpad
 171 [18:00] <Riddell> it's just that Launchpad has been designed to work very well with Bazaar
 172 || Event: App Developer Week - Current Session: Your App and Launchpad best practices - Instructors: jderose
 173 [18:00] <Riddell> time up!
 174 [18:00] <dpm> Thanks Riddell for a really awesome session - even with pictures!

MeetingLogs/appdevweek1109/IntroducingBazaarExplorer (last edited 2011-09-05 18:05:24 by nigelbabu)