Open Source Hacking
Monthly Archives: September 2011
My chosen project for my 0.1 Release, and hopefully rest of the semester as I frankly enjoy it a lot, is Popcorn.js.
For media makers:
Popcorn.js is an event framework for HTML5 media. Popcorn.js utilizes the native HTMLMediaElement properties, methods and events, normalizes them into an easy to learn API, and provides a plugin system for community contributed interactions.
Basically my job here with these two tickets was to first fix that one small typo and then add two missing tests for there. After that it was brought up that there were a fair amount of inefficiencies with the code. A fair amount of the code was duplicated in places and because of how the facebook API functioned a lot of it could be refactored to be made simpler.
In the end I added a lot to the tests as well as I found plenty of things that were missing. This helps a lot because it makes sure that the code is robust and errors that could affect the users aren’t slipping through.
I make it sound easy, but really I went through a lot. If you read the comments for ticket 734 you can see that I had my code rejected more than once. It ranged from merge conflicts to style choices to me simply forgetting to write tests for one or two things (Seriously folks, get used to writing tests). I’m happy that I encountered these problems early on as it makes me feel almost like a seasoned vet of the project (Well, that’s probably a stretch :P).
For now I’m looking forward to contributing more to Popcorn.js with their 1.0 release in the coming months. There’s a lot of work coming that’s going to need people to help work on and I’ll be there to do it! Look for #350 and #740 code coming in the next few weeks as this is my plan of attack at this point!
First off I’ll premise this with the fact that this isn’t exactly a guide on how to get it done but rather my experiences with getting my own code commited, reviewed and eventually staged and on it’s way to the 0.9 release of Popcorn.js.
It all started Thursday night when I was browsing through some of the existing plugins to try and figure out the language some more so I could start working on the ticket I choose for the tumblr plugin. I was looking at the Facebook plugin when I noticed an error left over from the original writers copy and paste from the flickr plugin that read:
flickr target container doesn’t exist
Flickr container you say? Well of course, this is the facebook plugin! Anyway I found this quite humorous so I figured I would point it out on IRC for a good laugh and chuckle from everyone. Shortly afterwards though John Buckley quickly asked me to file a ticket for it, claim it and then commit said code so it could be reviewed. At first I was rather surprised because to me it seemed like it would be such a waste of everyones time for such a minor error, that I could easily just fix it anyway and there wouldn’t be a need to “waste time” with a ticket on it. John quickly said to me however that it really doesn’t matter how small the issue is, that you really need records of every change that’s made to the code so people can know why and when there were changes made. So I did and decided I would worry about it later the next day.
To start off I wanted to get the mandatory discussion about this weeks readings/resources out of the way so I can get on about my experiences this week with IRC and the popcorn team at CDOT.
After watching both of the videos I can tell that there was one evident theme and that was how important the community is to open-source development. Without a community for the development of a piece of open-source software there wouldn’t be any way for it to truly thrive because there wouldn’t be a way for people to find out about the project and contribute to it.
Adventures in IRC
This week is when we all found out what exactly the channel names were for each of the projects and we were sent out to talk to the communities and find out more about the projects so we could get a good idea as to which we would be interested in. I jumped into the #popcorn channel initially because I figured it would be an easier way for me to break the ice and be comfortable there because I know some of the people who are in CDOT working on popcorn. Needless to say this took some of the pressure off my shoulders and allowed me to find out some useful stuff.
I was pointed in the direction of some starter tickets, ones that would be good to dive in to because they aren’t necessarily core features that are important to the immediate future functionality of popcorn meaning it’s okay if they aren’t done right now.
In addition I was able to get my lighthouse account approved for popcorn and with the help of John Buckley I was able to get some hands on assistance getting the most up to date develop branch so I could take a look at some of the code of the tickets I was interested in. It’s tougher than it looks! Don’t fret however, I hear he is stopping by for next week to help show us ” the ropes ” when it comes to using github.
Oddly enough I was able to make my first contribution today to the community, albeit a small one and one that wouldn’t count as my first 0.1 release (Darn!). The ticket I was originally interested in was #707. There was an issue previously with how timed elements were being added to the div’s when their direction was set to down. In a working state this means the new time element would be appended below the previous element in the div. However it turned out in the end that this issue was fixed in ticket #655 and was a duplicate ticket. Quickly made a comment about it and the status of the ticket was changed and everyone was happy (only briefly however as they’re all too busy :P).
Choosing a new ticket and the concerns I have
At this point I’m looking at taking a ticket that would be writing a potential new plugin for another website like #350 which is for a tumblr plugin. It seems interesting enough and they have an API here that I’ve looked over. Truthfully it leaves me confused on a few fronts.
- How much of that am I supposed to write? Popcorn allows video, audio and other media to control the elements of a webpage. Does that mean I have to be writing methods in it that cover the video and audio portions of the API and more?
- I understand I need an auth key as mentioned in the beginning of the API but I have no experience with JSON.
Honestly I feel it all comes down to 2 things.
- I don’t know how to interact and use the information that the services for their API provide me.
I’m sure I’ll be fine in a good 3 or 4 weeks time but at this point I’m worried more worried about how much I’m exactly supposed to have done for our first release. None the less I plan on studying more of the code for other plugins as well over the next few days so I can hopefully get more of an idea on how to go about writing some of it.
Thanks for putting up with the mini essay here. Hope you enjoyed reading it!
First week of classes for the fall semester and the one course that I am easily the most excited to take is OSD600. I’ve been limited in what I have been able to experience programming wise and I really want to get involved in something that matters and will expose me to real world standards. This course will allow me to do that and hell, if I do well enough and put in a lot of effort I might just find myself with a position as a researcher for CDOT! (one can hope at least :P)
Anyway besides all the the normal first class administrative stuff we all go through we were asked by our professor, David Humphrey, to comment on two different sets of software license agreements; one open source and one proprietary license. I choose to look over the Apple License Agreement for Mac OSX 10.7 as I recently upgraded to it and was curious about what silly things I agreed to without even reading them. The other I chose was the open source BSD 2 Clause as I wanted to know more about this one in particular never having used it myself.
- I had no idea that I was limited in how many instances of Mac OSX I can run using a virtual machine. In this case Apple limits you to two. I personally don’t have the need for it anyway to run any VM instances of OSX but still it seems a little bit odd to me that they would want to limit you.
- While this section below doesn’t surprise me as any company will always stay away from the blame, I still found the wording incredibly funny.
APPLE DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE APPLE
SOFTWARE AND SERVICES, THAT THE FUNCTIONS CONTAINED IN, OR SERVICES PERFORMED OR
PROVIDED BY, THE APPLE SOFTWARE WILL MEET YOUR REQUIREMENTS, THAT THE OPERATION OF THE APPLE SOFTWARE OR SERVICES WILL BE UNINTERRUPTED OR ERROR-FREE, THAT ANY
SERVICES WILL CONTINUE TO BE MADE AVAILABLE, THAT THE APPLE SOFTWARE OR SERVICES
WILL BE COMPATIBLE OR WORK WITH ANY THIRD PARTY SOFTWARE, APPLICATIONS OR THIRD
PARTY SERVICES, OR THAT DEFECTS IN THE APPLE SOFTWARE OR SERVICES WILL BE
- The fact that we agree to an enormous amount of data to me taken about how we use the software. Whether it’s diagnostic, usage or location data that Apple and any third parties that are considered to be apart of Apple; it’s a lot. They say that the purpose is to make their own service better but I don’t believe them really.
By using any location-based services provided by or through the
Apple Software, you agree and consent to Apple’s and its partners’, licensees’ and third party
developers’ transmission, collection, maintenance, processing and use of your location data and
queries to provide and improve such products and services
When it comes to the BSD 2 Clause license agreements you can essentially do whatever you want. The only requirements are that you show the appropriate copyright information in your source/binary files and provide a disclaimer saying the software is “As Is” for binary files.
One thing’s for sure, open source is a really easy way to dive in and work with real code that people use without the limitations of proprietary licenses.
Anyway, that’s it for now. Tune in next week!