Summer of Code Projects
posted by brian at 01:35 PM
As I mentioned in my last posting, I have the option of participating in the development of either of two Summer of Code proposals. Before I reveal the projects, it might help to put them into context with some information about the mentoring organizations: KDE and the Python Software Foundation. KDE is a desktop environment for Linux with a very complete software suite. I've tried out nearly two dozen window managers and desktop environments, and KDE definitely has something special going on. (Okay, for my brief GNOME-bashing on Alex's blog, I must say that I've learned to appreciate GNOME as well. I'm actually using it right now to write this up.) Python is my favorite programming language — what more can I say? I'm extremely productive with it.
On to the projects — first, the KDE proposal. On the KDE bounties page there's an entry for a "visionary application addition," awarded to innovative proposals — this was the bounty I was selected for. The idea is for a program called Knoware where users voluntarily contribute information about their system's configuration (hardware, installed packages, etc.) and then subscribe to bugs or problems they're experiencing (doesn't have to be a bug — any fixable annoyance). This information is kept on a server, which uses a system called Bayes Nets (short for Bayesian Networks — here are short and long descriptions — basically, inductive logic) to identify patterns between bug subscriptions and system configurations. If enough people participate, Knoware could quickly track down bugs that would otherwise take forever to identify. In my experience, a vast amount of problems in Linux arise from the unlimited number of possible hardware configurations people have. Often people turn to forums for tech support, where users generally don't provide enough information about their problem and others spend forever probing them about their system. There are a lot more details I could go into about this project, but I'll save it for a later posting. For example, the client isn't just a passive application that gathers system information, it also networks you with other users who are subscribed to similar problems, or have similar hardware configurations, so that you can collaboratively work through possible solutions (and log your progress for others to see).
If that description confused you, consider this example: everyone who subscribes to the 'Program Y crashes when I do this' bug has an 'X' brand graphics card. Knoware will recognize this pattern and then examine more details like the card model, specifications, drivers, etc. For instance, it could eventually determine that only 512MB 2nd generation cards with driver version 2.5 cause this crash, and this gives developers a starting point for fixing the problem.
My other submission was picked up from the Python Web Programming Ideas page. I proposed the addition of a comments & annotation system to the Python standard reference, much like what is seen in PHP's documentation. Oddly, I've had multiple conversations with people who agree that the PHP documentation is often made worse by the comments system. My proposal included the use of Ajax to provide abilities like live editing and filtering, a rating or categorization system to prevent abuse, and other additions. Okay, the comments thing is kind of boring, but the annotation part I am excited about — they are two different things. If you take a look at PHP's documentation, you see that all the user contributed notes are at the bottom of the page, like any other comments sytem. Annotation, on the other hand, is meant to sit alongside a specific block of text on the page. For example, many textbooks feature in-margin annotation to identify terms or concepts. Since it can be very easy to disrupt the flow of a page with extraneous text, especially on a web page, I'm looking forward to trying out different solutions such as CSS tooltips, in-margin annotation, and in-place footnote links. Assuming, of course, that I accept this bounty.
Right now I'm leaning heavily towards the Knoware proposal. My reasoning is that it's my own idea and I have a strong interest in seeing it done right and by my own hand. I'll go into more detail about Knoware and other Summer of Code happenings in future postings.
Comments
Congratulations on being accepted! I worked up a proposal for MozDev -- Livesearch for Firefox, one of their ideas -- but they didn't take it. Looking at the proposals that were accepted, I can see why; it's a nice idea, but really pretty simple compared to projects that were accepted. I was looking for something that would fit in around another summer job. ;-)
I prefer GNOME myself, but it's been some years since I tried using KDE, so I imagine it's changed significantly from what little I remember of it.
I hope to keep reading about what you're doing with this! Both projects sound very interesting.
Congratulations on being accepted!
Thanks!
I worked up a proposal for MozDev -- Livesearch for Firefox, one of their ideas -- but they didn't take it.
I know one other person at Case who submitted a proposal (for Gaim, not accepted). Hear about anyone else? I think the full list will be published within the next week or two.
I prefer GNOME myself, but it's been some years since I tried using KDE, so I imagine it's changed significantly from what little I remember of it.
I'm halfway in between the two right now, having problems with both. ;)
Hear about anyone else? I think the full list will be published within the next week or two.
Actually, no, you and I are the only two Case students I know of who applied. I was under the impression that only winning proposals were going to be posted, but maybe I was wrong...
I was under the impression that only winning proposals were going to be posted, but maybe I was wrong...
You're correct. I was mainly interested in seeing if anyone else from Case was accepted. Actually, most of the people I've seen accepted so far aren't even from the US, which is pretty neat. Just one other KDE participant out of the 24 so far, who lives in New Mexico.
Awesome Job Brian! Maybe I'll get to use Knoware in the next KDE release, my Konquerer always crashes. :)
I think one of the biggest hassles with instant messaging is that it’s tied to the computer. If I’m away from the computer, like watching tv, I may miss an important IM. I can leave the speakers on the PC really loud, but then I’m always jumping up and running back to the PC to read an incoming IM in case it’s important. Most of the time it’s not. I can subscribe to a service with my cell phone—but that costs money. So here is (I think) the perfect solution, and a good GAIM plug-in that’s not too much work.
I just installed a Pluto Home system (plutohome.com). It’s a free, open source smarthome and media server. You put Bluetooth dongles on all the pc’s in your house, and then when you enter a room your Symbian Bluetooth phone turns into a remote control for everything in that room. It already tracks your movement—if you start listening to music in 1 room, your music will follow you as you move with your phone to another room. And it already sends messages to the phone based on events. For example, when the song changes, the cover art shown on my phone changes to show me what’s playing.
So that got me thinking… Why not make a GAIM plugin for pluto so that whenever I get an IM, I see it on my Bluetooth phone? That way I can either type a reply on the phone, or go back to the computer if I want to use the keyboard, or ignore it if it’s not important. And I’m not having to run back and forth to the computer to check IM. And it’s free since it uses Bluetooth! Plus, I think it’s such a real convenience it would be a great way to get people to switch to GAIM.
I talked to the programmers at Pluto and they said it would be really easy since their stuff is already written in small modules and plugins. However, since we’re all open source, we could also just take whatever pieces were useful and do something completely new using the same concept.
Many of the other GAIM projects listed are either specific for only some users (like Apple iChat), or would only be used by geeks (like the Perl interpreter). But not having to run back and forth to the computer is something everybody wants (imho). I don’t see how to recommend a new idea for GAIM, so I’ll just try the forums and hope somebody else likes it too.
Knoware is a great idea! I'd like to learn more about it, possibly get involved.