Dev Week -- Helping develop the Ubuntu Websites -- nigelb and mhall119 -- Fri, Jul 15th, 2011

   1 [17:01] <mhall119> hello everyone, my name is Michael Hall, and I'm one of the community webapp developers
   2 [17:02] <mhall119> you may not know it, but there are several projects that live under the * domain that are actually designed, developed and maintained by the Ubuntu community
   3 [17:03] <mhall119> among the biggest are the loco directory at and the UDS scheduler at
   4 [17:04] <mhall119> a larger (but by no means complete) list of these projects can be found under our umbrella project:
   5 [17:05] <mhall119> most of our projects are written in Python and use the Django web framework
   6 [17:05] <mhall119> which makes them pretty easy to get started hacking on
   7 [17:06] <mhall119> the sites themselves are hosted on Canonical's servers, so we regularly interact with their IS team as well
   8 [17:07] <mhall119> any questions about community projects in general?
   9 [17:07] <ClassBot> abhinav_singh asked: Are there PHP based web projects?
  10 [17:08] <mhall119> not yet, no, though we do maintain Wordpress and Drupal themes that match the page
  11 [17:09] <mhall119> not that we have anything against PHP, it just so happens that the projects we've accumulated have all been Python
  12 [17:09] <mhall119> though might be in PHP, cjohnston recently added that one so you can check with him
  13 [17:12] <mhall119> I'm going to single out the loco directory to show you how to get it set up, but the process will be similar across all of our django projects
  14 [17:12] <mhall119> first you need to find the development focus by checking
  15 [17:13] <mhall119> in this case, it's lp:loco-directory
  16 [17:13] <mhall119> so you can just run "bzr branch lp:loco-directory"
  17 [17:14] <mhall119> if you plan on making a single contribution, that's easy enough, but if you plan on working on multiple features or bug fixed, I'd highly recommend you follow the guide described here:
  18 [17:16] <mhall119> for loco-directory, there are instructions for setting up a python virtualenv here:
  19 [17:16] <mhall119> virtualenv is great for python development because you can use python packages specific to your project, without them conflicting with versions used by other projects
  20 [17:17] <mhall119> Django provides a script that lets you perform various setup and maintenance activities, some of which I'll cover in a minute
  21 [17:18] <mhall119> it also provides a for configuring your project.
  22 [17:19] <mhall119> since some configuration settings are specific to your environment, you might want to override them by creating a, an example of which is included in the
  23 [17:19] <mhall119> an example of why you would want this is database configuration
  24 [17:20] <mhall119> loco-directory uses postgresql by default, but that's a pretty big requirement for development, so you can tell Django to use an sqlite database, which is much simpler
  25 [17:21] <mhall119> once you have your django project configured, you will usually run "python syncdb", which will create any database tables Django needs to save your project's data to the database
  26 [17:21] <mhall119> after that, loco-directory provides a couple of commands for populating your database
  27 [17:22] <mhall119> the first is "lpupdate", which will perform a series of calls to Launchpad to retrieve the list of loco teams and their admins
  28 [17:22] <mhall119> this will give you the minimum amount of data that loco-directory needs, you won't have events, meeting or venue data
  29 [17:24] <mhall119> the second option is "import-live-data", which uses the loco-directory's JSON API to populate your local database with a copy of what is in the production site.  This will give you everything you need to test out new features or reproduce bugs, but it can take a long time (upwards of an hour) do to the amount of data
  30 [17:24] <mhall119> you can do either of these by calling again: "python lpupate" or "python import-live-data"
  31 [17:25] <mhall119> but, by far the easiest option is to get a relatively up to date copy of someone else's sqlite database, which I happen to have for you here:
  32 [17:25] <mhall119> once you have that, you can run "python runserver" to run the loco-directory through Django's built in web server, which is perfect for development and testing
  33 [17:26] <mhall119> any questions so far?
  34 [17:28] <mhall119> I guess not
  35 [17:29] <mhall119> each of our projects generally has a lead developer, who is your best point of contact for getting setup, as well as designing new features of solving bugs
  36 [17:29] <mhall119> for loco-directory, the lead is cjohnston
  37 [17:29] <mhall119> for summit it's nigelb
  38 [17:30] <mhall119> for cloud portal: daker
  39 [17:30] <mhall119> and for hall of fame it's cdbs
  40 [17:31] <mhall119> the leads generally set the targets for new features, and will also prioritize bugs if necessary
  41 [17:31] <mhall119> but you are encouraged to make whatever contributions interest you
  42 [17:32] <mhall119> some projects, like loco-directory, will tag small, easy bugs as "bitesize", and this is a good way for you to get starting making a contribution while you get familiar with the codebase
  43 [17:32] <mhall119> here's the list for loco-directory:
  44 [17:33] <mhall119> once you have your local setup working, the process for contributing is generally the same:
  45 [17:33] <mhall119> 1) find a bug or feature to work on
  46 [17:33] <mhall119> 2) fix/implement it
  47 [17:34] <mhall119> 3) push it to a bzr branch on launchpad using "bzr push lp:~${your username}/${project name}/${branch name}
  48 [17:35] <mhall119> where ${branch name} is a unique name for your branch, typically something like "fixes-12345" where 12345 is the bug number
  49 [17:36] <mhall119> then you find your branch on launchpad and click the "Propose for merging" link and describe what your branch does
  50 [17:36] <mhall119> you should also add a "commit message" on this page, this is what will be added to the bzr log when your branch gets approved and merged
  51 [17:37] <mhall119> from there one of the developers on the project (not always the lead) will review your code, and either ask for changes or approve it
  52 [17:37] <mhall119> once it's approved, it will automatically be merged into the project's main branch
  53 [17:37] <mhall119> all of this is pretty standard for Ubuntu distributed development
  54 [17:39] <mhall119> any questions?
  55 [17:40] <mhall119> you don't need to know Python to contribute either, there's plenty of work that can be done in the HTML, CSS and Javascript sides too
  56 [17:44] <mhall119> Oh, I forgot to mention, discussion of community web projects is held in the #ubuntu-website channel here on freenode
  57 [17:44] <mhall119> you can find one or more of us there pretty much any time of day, since we have contributors all over the world
  58 [17:46] <ClassBot> pleia2 asked: you mentioned that is not a complete list, is there a more complete list somewhere?
  59 [17:47] <mhall119> good question, unfortunately not
  60 [17:47] <mhall119> there are several sites that are different mixes of canonical and community involvement, like the wiki, planet, etc
  61 [17:47] <mhall119> also some that probably should be on there, but aren't yet, like
  62 [17:48] <ClassBot> pleia2 asked: do you know the status on the Ubuntu Team Reports project? (I get asked about such a thing a lot by teams who hate using wiki for reporting)
  63 [17:49] <mhall119> I don't, dholbach might be able to give you more information on that
  64 [17:49] <mhall119> I know it's come up in the past couple of UDSs, but we just haven't had anybody willing to lead the project
  65 [17:50] <mhall119> if there are any aspiring community web contributors who want to take it for a spin, that would be awesome
  66 [17:51] <mhall119> right now our list of projects is outpacing our number of contributors
  67 [17:51] <mhall119> so there are plenty of places for people to get involved
  68 [17:51] <mhall119> and we are very encouraging to new contributors
  69 [17:52] <mhall119> any other questions before I'm out of time?

MeetingLogs/devweek1107/HelpingDevelopUbuntuWebsites (last edited 2011-07-18 08:32:16 by dholbach)