App Developer Week -- Making Ubuntu a Target for App Developer -- jml -- Mon, Sep 5th, 2011

   1 [15:54] <dpm> hi all, is everyone ready for the first day of Ubuntu App Developer Week?
   2 [15:54] <jml> Yes!
   3 [15:54] <dpm> :)
   4 [15:55] <Andy80> yess :)
   5 [15:55] <tviking> Yep!!
   6 [15:56] <dpm> awesome :)
   7 [15:59] <dpm> Let's give a warm welcome to Jonathan Lange (jml), who'll be opening the UADW with a talk about the app developer strategy for Ubuntu
   8 [15:59] <jml> Hello and welcome to App Developer Week!
   9 [15:59] <jml> As dpm said, my name's Jonathan Lange.
  10 [15:59] <jml> I work at Canonical.
  11 [15:59] <jml> For most of the last five years I've been working on Launchpad, but recently I've started working on the Ubuntu developer programme
  12 [15:59] <jml> Which has been really fun.
  13 [16:00] <jml> We believe that to get Ubuntu from 20 million to 200 million users, we need more and better apps on Ubuntu
  14 [16:00] <jml> And in fact, more than that, that we need a thriving ecosystem of applications on Ubuntu
  15 [16:00] <jml> Two simple goals:
  16 [16:00] <jml> 1. More and better apps on Ubuntu
  17 [16:00] <jml> 2. Thriving ecosystem
  18 [16:01] <jml> *ahem*
  19 [16:01] <jml> I guess I started early
  20 [16:01] <jml> anyway, for those that turned up late, my name is Jonathan Lange and I work at Canonical trying to make it possible to have many more and better apps on Ubuntu
  21 [16:02] <jml> so we can get a heap more users :)
  22 [16:02] <jml> To get more and better apps, we need to have more developers -- the kind who are writing apps for Windows, OS X, iOS and Android -- to think of Ubuntu as a platform to develop for.
  23 [16:02] <jml> There are a lot of bits to that.
  24 [16:02] <jml> One is actually making some place that app developers can go to in order to learn how to develop for Ubuntu
  25 [16:02] <jml> A bunch of folk at Canonical are working on that now, and you'll see their results on in the next few weeks.
  26 [16:03] <jml> Also, on Thursday, there's a talk about how they are doing the work
  27 [16:03] <jml> see the schedule in the topic for more details
  28 [16:03] <jml> (btw, ask questions on #ubuntu-classroom-chat and I'll answer at the end of the talk)
  29 [16:03] <jml> Another part is actually *defining* some sort of platform for developers to target.
  30 [16:03] <jml> Which is really, really hard.
  31 [16:04] <jml> Part of the glory of Linux is that there are so many choices at practically every level of the stack.
  32 [16:04] <jml> Roll your own daemon? Use upstart? Use launchd? Use systemd?
  33 [16:04] <jml> Want a GUI? Use Qt or GTK+? Is that Qt with QML or standard Qt? PyGTK or PyGI?
  34 [16:04] <jml> Oh, you want an IDE? What, isn't vim good enough for you? Well, I guess there's umm...
  35 [16:04] <jml> Eclipse, and Anjuta maybe.
  36 [16:04] <jml> Lots and lots of choices.
  37 [16:04] <jml> Also, neither Ubuntu nor Canonical really has any control over them
  38 [16:05] <jml> We "just" import the best open source software and integrate it really well.
  39 [16:05] <jml> So that's a really tough problem, and if you've got any great ideas I'd love to hear them. :)
  40 [16:05] <jml> Hmm. This is getting rambly.
  41 [16:05] <jml> Time for a list
  42 [16:06] <jml> To make Ubuntu a proper, first-class developer platform, we need three things:
  43 [16:06] <jml> a) a place --
  44 [16:06] <jml> b) a definition -- ???
  45 [16:06] <jml> c) a channel
  46 [16:06] <jml> By "channel", I mean a smooth, short, safe path from developers to their users and back again.
  47 [16:06] <jml> At one end of the path is a developer who has just released a gold version of their app (or game or what-have-you)
  48 [16:06] <jml> At the other end is a user who has just installed that app and is happily running it for the first time
  49 [16:07] <jml> As a developer, I want to get from the first end to the second end as quickly as possible
  50 [16:07] <jml> This is for two reasons
  51 [16:07] <jml> The first is that a large part of the reason I write software is to have people _enjoy_ it. They can't do that until it's installed and running on their system.
  52 [16:07] <jml> True fact.
  53 [16:07] <jml> The second is that they probably won't give me any money until then, and I need money to fund my software writing habit.
  54 [16:07] <jml> As a user, I want the same things, sort of.
  55 [16:08] <jml> I want to get the latest apps and the latest updates for apps as soon as they are available. I don't want to wait.
  56 [16:08] <jml> Also, if I have to pay for software, then I want it to be smooth, easy and safe, and I most definitely want it to go to the right person.
  57 [16:08] <jml> And it's around this channel that a lot of exciting work is taking place
  58 [16:09] <jml> Trying to make it smoother, shorter & safer both ways.
  59 [16:09] <jml> Let's be more specific
  60 [16:09] <jml> At the user end, we have the Software Center.
  61 [16:09] <jml> <>
  62 [16:09] <jml> There are a bunch of people working on this (mvo, tremolux, achuni, noodles, mpt, etc.)
  63 [16:09] <jml> And it's a huge part of what we need to make Ubuntu a more attractive target for developers.
  64 [16:10] <jml> If people can't figure out how to find the app they want, install it and run it, then there's no point in writing apps that they want, is there?
  65 [16:10] <jml> There's also a bunch of associated stuff like ratings and reviews that fit in here.
  66 [16:10] <jml> On the other end, the developer end, things are (to me) a little more interesting
  67 [16:10] <jml> First up, Ubuntu's release cycle means that it takes between three to nine months to go from "released application" to "application in released Ubuntu"
  68 [16:11] <jml> And if the Software Center only has apps that are in the released Ubuntu, that means 3-9 months before I can get *any* feedback from users
  69 [16:11] <jml> Which is rubbish.
  70 [16:11] <jml> (Well, thinking only as a developer who wants people using their app. The full picture is somewhat more nuanced.)
  71 [16:11] <jml> Luckily, there are ways to get applications into the Software Center more quickly than that.
  72 [16:11] <jml> If it's a paid app, then they can be submitted through <>.
  73 [16:11] <jml> That can be if they're libre or proprietary. We don't care, as long as they are charged.
  74 [16:12] <jml> More info tomorrow at 1900 UTC.
  75 [16:12] <jml> If it's a free, libre app, then they can be submitted through the Ubuntu Application Review board
  76 [16:12] <jml> I don't have a URL for that -- they are elusive folk
  77 [16:12] <jml> (maybe someone else here does?)
  78 [16:12] <jml> But you can get more info tomorrow at 2000 UTC
  79 [16:13] <jml> All of this gets us the "short" part of that "smooth, short, safe" path I talked about
  80 [16:13] <jml> <davidcalle> url for ARB --
  81 [16:14] <jml> But before *any* software can be installed from the Ubuntu Software Center, it has to be packaged.
  82 [16:14] <jml> And frankly, many developers have neither the time nor the inclination to do so.
  83 [16:14] <ClassBot> ali1234 asked: What about unpaid, proprietary apps?
  84 [16:15] <jml> ali1234: They are a special case, and generally the authors of those have to speak directly to Canonical. I *think* (but am not 100% sure) that Skype is an example of this.
  85 [16:15] <ClassBot> Andy80 asked: are you already in touch with Rovio guys? I'd like to have Angry Birds in Ubuntu. I can ask one of them if you want or make them and Canonical be in touch.
  86 [16:16] <jml> Andy80: thanks. I'm pretty sure that Canonical has already been in touch with them. That'd be a great question to ask John Pugh in his session on Friday.
  87 [16:16] <jml> ali1234: I think the partner repo is the current mechanism for getting unpaid, proprietary apps into Ubuntu
  88 [16:16] <jml> ali1234: and if there are plans to change that, no one has told me.
  89 [16:17] <jml> fwiw, Canonical's interest is in paid stuff, because we keep some of that money, and libre stuff, because we love open source and think it's vital to a sustainable platform.
  90 [16:18] <jml> (he says, very broadly, as an informed engineer who doesn't make business decisions)
  91 [16:18] <jml> anyway, where was I
  92 [16:18] <jml> packaging!
  93 [16:18] <jml> Lots of developers never ever want to do it.
  94 [16:19] <jml> The Angry Birds guys, for example, probably never want to read the Debian policy manual
  95 [16:19] <jml> (which has twelve chapters and seven appendices, just so you know)
  96 [16:19] <jml> This makes that "smooth, short, safe" path I mentioned earlier a lot more rough and full of potholes
  97 [16:19] <jml> Most of the work that I am doing currently is in making that smoother.
  98 [16:20] <jml> I've been taking the great work that james_w has done on pkgme (
  99 [16:20] <jml> and have been making it automatically package binary tarballs
 100 [16:21] <jml> since that's what we're getting when most people submit their apps to us
 101 [16:21] <jml> We've got the proof-of-concept done
 102 [16:21] <jml> ... and written up a spec:
 103 [16:21] <jml> And achuni's team have started adding hooks into
 104 [16:22] <jml> so the idea will be that people can submit binary tarball over the web, and then they'll be automatically packaged, put into a PPA and queued for testing
 105 [16:22] <jml> without the developer having to know anything about it
 106 [16:23] <jml> pkgme is pretty generic, so we're also hoping (slightly longer range) to allow more "backends" than just binary tarball
 107 [16:23] <jml> Python apps, Ruby apps, HTML 5 apps etc.
 108 [16:23] <jml> for commercial apps, there's currently a very short turn-around time to getting them reviewed & approved
 109 [16:24] <jml> for gratis+libre apps, it's a bit longer, but the ARB is working on that.
 110 [16:24] <jml> (More info tomorrow at 2000 UTC w/ stgraber)
 111 [16:24] <jml> There's a whole bunch of questions that will need to be answered
 112 [16:25] <jml> A big one is safety
 113 [16:25]  * jml decides about answering questions
 114 [16:26] <jml> OK. But I really want to talk about safety and other controversial subjects :)
 115 [16:26] <ClassBot> Andy80 asked: to make developers life easier, what do you think about preparing a better documentation for "Ubuntu API" ? I make you a clear example: without the suggestion from Andrea Azzarone I would never know that there was an "EmptyTrash" d-bus method exposed by Nautilus 3 :P luckly he told me about it and I was able to work on a bug in few hours.
 116 [16:26] <jml> Andy80: heck yes.
 117 [16:26] <jml> Andy80: we're hoping to start that sort of documentation with in the next few weeks
 118 [16:26] <jml> Andy80: there are some things that make it complicated though
 119 [16:27] <jml> 1. We have to make opinionated choices about what to document
 120 [16:27] <jml> e.g. the ayatana notification bubble thingy is an obvious thing to document and call part of the "Ubuntu API"
 121 [16:28] <jml> but when we pick Nautilus, we're implicitly saying that KDE isn't part of that Ubuntu API
 122 [16:28] <jml> which is maybe fair enough
 123 [16:28] <jml> the more options we provide, the more documentation we need to write *and* the more confusing that documentation becomes
 124 [16:28] <jml> 2. There's a *lot* of stuff to document
 125 [16:29] <jml> So it's going to have to be a Canonical + community effort. It's just too big a challenge.
 126 [16:29] <jml> 3. It's got to be well coordinated and curated
 127 [16:30] <jml> The last thing we want is a wiki full of docs that are of dubious quality & currency, and aren't findable. We want something that's better than MSDN, the Java docs, Android docs etc.
 128 [16:30] <jml> 4. It's hard to guarantee such an API long term
 129 [16:31] <jml> since we don't write the libraries, often.
 130 [16:31] <jml> As an example, my friend & colleague ev has been porting a bunch of stuff from PyGTK to PyGI recently
 131 [16:31] <jml> not because he wants to, or because it's fun, or even because it will provide a better user experience
 132 [16:32] <jml> it's because PyGTK isn't supported any more for GTK3+ and PyGI is.
 133 [16:32] <jml> That's a change in API that's beyond our control
 134 [16:32] <jml> Ok, and last one...
 135 [16:33] <jml> 5. To document something you have to figure it out
 136 [16:33] <jml> and that can often take some time. e.g. rickspencer3's recent posts to planet about how to copy and paste in GTK+ apps, or drag and drop.
 137 [16:34] <jml> Andy80: so yes, we'd love to do it, and in a few weeks when the new d.u.c is up, that will be the very beginning.
 138 [16:34] <jml> and we'll need your help.
 139 [16:34] <jml> OK.
 140 [16:34] <jml> So we talked about how we're smoothing the path from user to developer by automatically packaging
 141 [16:35] <jml> And how we're shortening it by enabling app authors to get their app onto stable versions of Ubuntu
 142 [16:35] <jml> through either the ARB or
 143 [16:35] <jml> I want to say a very little about how we're going to make it safe(r)
 144 [16:35] <jml> Hmm.
 145 [16:35] <jml> How do I put this
 146 [16:36] <jml> If there's one thing we can learn from Windows, it's that it is a bad idea to let people download random crap from the Internet and then run it.
 147 [16:36] <jml> And if we allow app authors to just write stuff and get it into the software center, then we have that problem
 148 [16:37] <jml> "Review" and "testing" can't be the answer
 149 [16:37] <jml> Some random website I looked at, which is therefore totally trustworthy, said that the iPhone app store gets over 1000 new apps submitted per day
 150 [16:38] <jml> I want Ubuntu to be that popular for app authors
 151 [16:38] <jml> But I also want Ubuntu to be the stable, trusty, well-integrated system that I know and love today.
 152 [16:39] <jml> there's always going to be a lot of tension here
 153 [16:39] <jml> but there's some technical stuff we can do to reduce that tension
 154 [16:39] <jml> which is application isolation
 155 [16:40] <jml> What we'd like to do (and this is all very vague atm) is have some way of automatically (maybe?) wrapping applications up in some sort of container so we can trust them to not do damage to the system
 156 [16:40] <jml> Either accidentally or intentionally
 157 [16:40] <jml> (actually, "accidentally" is probably the best thing to aim for. It's almost impossible to stop someone messing with your computer deliberately if you are running their code and they want it badly enough)
 158 [16:41] <jml> Arkose ( by stgraber has made some great strides here
 159 [16:41] <jml> I'm looking forward to playing with it (shamefully, I haven't yet), and maybe integrating it into pkgme or something similar
 160 [16:41] <jml> Which would go some way to making that path safer.
 161 [16:42] <ClassBot> Andy80 asked: don't you think that "isolating" apps could make applications only compatible with Ubuntu? For example if someone makes an application that works on 99% distro BUT it requires more coding to be compatible with Ubuntu, the developer would say: ok.. I don't release it for Ubuntu.
 162 [16:42] <jml> Andy80: hmm. possibly.
 163 [16:43] <jml> Andy80: I think there are a couple of things that would help there.
 164 [16:43] <jml> first is that no one seems to have a problem with open source apps running uncontained
 165 [16:43] <jml> because there's a chance to figure out what they are doing
 166 [16:43] <jml> and so, I doubt anyone would push too hard for a mandatory containment policy for open source apps
 167 [16:44] <jml> second, I think we can make it very little work
 168 [16:44] <jml> just specifying what the app needs.
 169 [16:45] <jml> third, to some extent, if you want to write a desktop app for linux *and* you want users, you probably want to make it work for Ubuntu
 170 [16:45] <jml> but we can't rely on that.
 171 [16:46] <jml> fourth, I hope that the benefits would be really obvious and that the idea wouldn't be too unfamiliar.
 172 [16:46] <jml> I don't have an iPhone, but my Android phone has already made this concept pretty familiar to me.
 173 [16:46] <ClassBot> Mipixal asked: Isn't  AppArmor an answer to wrapping applications ?
 174 [16:46] <jml> Mipixal: yes. Or rather, it's part of the answer.
 175 [16:47] <jml> Mipixal: the security folks I've spoken seem to be leaning towards some combination of AppArmor and Arkose
 176 [16:47] <jml> spoken *to*, rather
 177 [16:47] <jml> hmm.
 178 [16:48] <jml> I think that's pretty much it.
 179 [16:48] <jml> The idea is that with all of these pieces in place -- software center, developer portal, a defined platform, automagic packaging, safe mechanisms for distributing new apps & paying developers -- then Ubuntu becomes something that developers can seriously start to target
 180 [16:48] <jml> Any more questions?
 181 [16:49] <ClassBot> mohammedalieng asked: what about making an Ubuntu IDE, that's the default IDE for creating Ubuntu apps ?
 182 [16:49] <jml> There isn't currently a default IDE.
 183 [16:50] <jml> It would be a great thing to have something that is to Ubuntu what Xcode is to OS X
 184 [16:50] <jml> However, I'm not going to write one :)
 185 [16:50] <jml> And I don't know of anyone with serious plans along these lines.
 186 [16:50] <ClassBot> There are 10 minutes remaining in the current session.
 187 [16:50] <jml> I would suggest that the best place to start is by making one of the existing IDEs better.
 188 [16:51] <jml> Right, eclipse would be a great place to start.
 189 [16:51] <ClassBot> samtay asked: What about adding a donate button on open source projects in Ubuntu Software Center?
 190 [16:51] <jml> +1 We want that so badly.
 191 [16:51] <jml> But I don't know where it sits on the roadmap
 192 [16:51] <ClassBot> ali1234 asked: What is the revenue split for paid apps?
 193 [16:52] <jml> Canonical passes on 80% to the application author.
 194 [16:53] <jml> I guess one thing I'd add, reminded by bUbu87's comment
 195 [16:53] <jml> is that if we want way more apps
 196 [16:53] <jml> we need way more developers
 197 [16:53] <jml> and they will probably be people who are new to Ubuntu and the UNIX way of doing things
 198 [16:54] <jml> people who look at me funny when I say I use emacs
 199 [16:54] <jml> and make jokes about whether I bang rocks together to make fire also
 200 [16:55] <jml> so part of who we're trying to appeal to now are the developers who are not yet using or even thinking of Ubuntu
 201 [16:55] <jml> Anyway, that's it from me.
 202 [16:55] <jml> Oh. Crap.
 203 [16:55] <jml> One more thing
 204 [16:55] <ClassBot> There are 5 minutes remaining in the current session.
 205 [16:55] <jml> If you want, you can sell your libre application on the software center
 206 [16:55] <jml> rickspencer3 is doing this with photobomb
 207 [16:56] <jml> the code is fully available, there's a public ppa
 208 [16:56] <jml> and that's one hack you can do if you want donations
 209 [16:56] <jml> OK. That's really it.
 210 [16:56] <jml> Ciao
 211 [16:56] <jml> []

MeetingLogs/appdevweek1109/MakingUbuntuTargetAppDevelopers (last edited 2011-09-06 11:10:05 by dpm)