Saturday, November 24, 2007

Bringing Freedom to Web Apps: Introducing Forkolator

For a while now the back of my mind has been crunching away on web apps/services. It probably started with my work on Tomboy note synchronization, which is disappointing in that we were unable to provide centralized note storage for our users...they'd have to provide that themselves. So of course the idea of providing that service via the Online Desktop is very attractive, but it inevitably leads to demand for a web app for interacting with those notes. Hmm...

Recently, Luis' posts on Gmail have really got me thinking about where free software fits into this whole web apps/services sphere. And then I went to BarCamp...

Erik Pukinskis talked about how he believes that web apps are killing free software. That Gmail takes away even more freedoms from you than Outlook ever did. That even and cripple your ability to meaningfully exercise your freedoms. For example, you may be able to access and modify the source of the wordpress software, but you can't use your modified source on your data at Useful web apps/services are not distributed to users in the same way as traditional software. So how can the open source methodology thrive in this situation?

Erik's idea for solving this is Forkolator. Imagine you're using your favorite web app. You find a bug or think of a feature you'd like to implement. What do you do? Think for a minute of how you would hack on wordpress or mediawiki. Is it a worthwhile investment of your time? Now imagine that you can just click a button that says "Fork this page!". You are taken to a personalized instance of the web app with all the same access to your data, and you can drop into a web-based IDE and tweak your branch live. You can file a bug report that points directly to your live branch, and if the dev team merges in your changes, you can choose to switch back to using the upstream service or keep running your own branch. Maybe the dev team chooses not to accept your changes. With normal free software, you can build your own from source and live happily ever after. Wouldn't it be nice to be able to do this with popular web apps, and not lose the advantages of having hosting and social data handled by a reliable entity?

Right now Forkolator is a web-based IDE which can be forked and modified live. Your fork is not integrated into revision control yet, and the problem of borking your PHP code isn't really addressed. But these are technical hurdles that should be easy to overcome. The difficult problems are staggering:

1. Security.
2. Privacy.
3. Stability.

So Forkolator isn't hosted anywhere yet.

This post is pretty long so I'll have to write later about different ideas for addressing these issues with respect to user data. To sum up insufficiently, Erik believes that the data layer of the app would probably have to be well-defined and untouchable by forkers.

I think that Erik's idea is one that we need to explore. I think it could takes us to a whole new level of community development. I think a combination of social and technical measures can address the huge unanswered problems. We really need people with experience in hosting, security, etc, to hop on the mailing list and weigh in with their opinions. How would you solve these problems? We need to know how start so that we can begin hosting this thing!

Oh, and we need to talk about the GNU Affero GPL at some point...

Monday, November 12, 2007

Slides from my talk

Talking at BarCamp San Diego

So I wasn't really sure what I wanted to talk about at BarCamp, and I've been way too busy to prepare anything. Since this was my first BarCamp, I didn't really know what to expect. I assumed my audience would mostly be Mac-toting, TextMate-using Rails developers, with a healthy dose of open source enthusiasts (and probably not too many free software zealots).

So with that in mind, I thought I'd talk about .NET, and whether or not geeks in general should use it, weighing its technical strengths against its source. My approach was to show that .NET was a compelling platform in a few minutes, and then set up the grounds for a discussion about whether or not it is in our best interests to consume a Microsoft product like that. I did *not* want to talk about whether or not free software zealots should be interested in Mono, because that's just exhausting. I threw the slides together Saturday morning, tweaked them a bit while at BarCamp, and presented on Sunday.

What I learned
  • People came to my talk who really just wanted to hear more about .NET or Mono. This slowed things down a bit, but I'm glad I was able to help.
  • 30 minutes goes by much faster than you think.
  • Telling people they can interrupt and ask questions at any point is counter-productive to trying to power through slides and then have time for a discussion. We didn't really have time.
  • BarCamp folks are awesome and forgiving even if you're not the best presenter.
  • Most people want to be presented to during these 30 minute sessions, so it's important to have a strong focus and a clear message. I didn't really have those, but it still went well I think.
  • Scheduling your talk against one entitled "How To Make Money Online" is not a great idea after half the people you meet have identified themselves as "entrepreneurs". At least I didn't have to watch it!
  • Turns out I'm not that bad of a presenter when I know what I'm talking about.

Sandy, Presentator

Friday night I came home from work, somewhat exhausted, with the goal of starting my slides. I thought I'd try Google Presentations and see what all the fuss was about. Bad idea. I spent almost half an hour preparing five shitty slides, without having time to think about where I really wanted my presentation to go. And I found myself making bullets, just because, the same way I've always felt compelled to make stupid bullets when using PowerPoint/OO.o/etc. I went to bed frustrated.

The next morning I realized it just wasn't going to happen. I had only a couple of hours to clean up and head to BarCamp. Then I remembered somebody at work using a cute little XUL app to prepare Takashi-style presentations. It was perfect! Please load up my slides and press ctrl+e to see how easy it is to write slides in that style. I had a blast, and it was really fast and easy to tweak them on the fly when I had an idea. Plus, I had no problems hacking the CSS and XUL/JavaScript to handle little things I wanted to work differently (EM=>Red in EVA mode, ability to use images without specifying height/width, etc). I managed to do a pretty good job presenting without rehearsing, though if I had a more difficult/subtle topic/message or a longer presentation, I think practicing would be really important.

The downside: my slides only work in XUL-based browsers. I've only tested them in Firefox.
I'm sure there's a way (or easily could be) to do the same sort of thing using S5. I'll look into that for next time.

BarCamp San Diego 2

I have more thoughts about BarCamp, but I think I'll just write about them later. I will say I was a little sad that there were no hackfests, but it's not like I tried to organize one, so I can't really complain. Unconferences are both awesome and weird, and this was my first. Looking forward to the next one!

Saturday, November 10, 2007


Eric Pukinskis just gave a super-awesome presentation entitled "Web apps are killing free software! (and how to save it)". His surprising teaser answer: a web-based IDE.

I went in to heckle, I came out totally energized. In my opinion, the IDE is the least important part of the whole thing.

I'll post more later. Hopefully he'll set up a website or upload the code or something soon.

Friday, November 2, 2007

Quote of the Day: Paul Graham

We in the technology world are used to that sort of solution: you don't beat the incumbents; you redefine the problem to make them irrelevant.

-Paul Graham, The Future of Web Startups

BarCamp San Diego

I'll be attending BarCamp San Diego next weekend (November 10th-11th), which will be my first experience with anything like that. I'm extremely psyched...I hope the massive overtime I'll be putting in next week won't impair my ability to hack. A friend of mine (and rock climbing partner!) will be there, too...she has an awesome idea for a web app to hack on, which would be a pretty neat change of pace for me.

Will any other GNOMEers be there? They say if it's your first time at BarCamp you have to present (sounds familiar). I was thinking about talking about Mono or leading a discussion about how .NET should be approached by geeks, considering its source. People are writing a lot of free software using the .NET framework (I'm not even talking about Mono here), so it's an interesting topic to me.

If anyone's interested in hacking, doing some sort of GNOME-related presentation, or just meeting up, let me know.

Thursday, November 1, 2007

Tomboy needs your help!

I just mailed tomboy-list to let everybody know that I won't be around to help much this release cycle (stupid real world!). The big bummer here is that I won't be able to work on automatic background synchronization, which Tomboy really needs to bring sync to the level of AWESOME.

So, as I said in my email, if you've been waiting for the perfect moment to dive in and be a free software hero, then now is your chance. Mess with the wiki page I linked above, send in patches, draw whatever it is that you do so well! I'll help by reviewing patches and doing whatever polish/integration work I can do in January before the UI/string freezes.

Oh, and keep in mind that we're still looking for a hero to revamp our tagging UI, too.

With your help, Tomboy sync in 0.10.0 will be legen-

...wait for it...