Wednesday, April 20, 2011

Last Blog Posting...

Well I never thought this day would come, the semester is coming to an end I will finally be graduating!! Super stoked!! It has been ALOT of hard work but well worth it. Since tomorrow is our last class this will be my last blog post for this class. I may continue this outside of class though...you never know??

This semester has been a great learning experience for me. Getting the class involved in open source projects is a great way to introduce us to real life tools and real life software. These large projects are complex and totally different than the little programs we have tackled before. So I am very thankful for this experience this semester!

Our project was moving along nicely until we ran into a snag at the end with loading the text into the Gwibber window. Apparently there is no straight forward way to do this. We have even been in contact with a Gwibber developer , Ken VanDine. He has provided several suggestions but none of which have worked out for us. It is kind of frustrating to be this close but stuck and running out of time...

Since we are running out of time, Jesse has created a basic window that posts to all social networks that are setup in the Gwibber social client. If we could get the Gwibber window to work, the user would have their choice of which network to post to. We have not given up quite yet though. We will keep chipping away at this up until our presentation. I am hoping for one last breakthrough...

Our team has set up it's rough draft for the presentation all written up. We still need to create the Prezi though. Jesse and I will be talking about the experiences portion of our presentation and Shaun and Kyle will handle the introduction to the project and software libraries that we used. We will also have a demonstration at the end of our presentation as well. We are going to show our plug-in in action by posting to Facebook from the Banshee media player. Neat!

Well that will wrap it up. Time to post this then print out my blog for school records....ADIOS!!!

Tuesday, April 19, 2011

Update to my update...

Well my last posting I typed up a bit ago but did not post until today. A few things have changed since then...so I will update my previous update.

Well I have tried several different times to contact the LibGwibber developers via email and IRC chat-room but no responses on the GetClipboard function. Bummer...I was hoping this was the answer to our problem but I cannot figure out how to use it properly with no documentation on this code.

So Jesse has created a simple GTK window that allows us to pre-load text but we cannot control what social accounts to post because the provided function for this is not working as expected.

I am going to keep working on this part of the project because I really want to be able to use the Gwibber entry window but I do not know if anything will come of it...my fingers are crossed.

Our team also ended up getting a poster together...thanks to Shaun. He really grabbed this side project and ran with it. He produced an awesome poster and is going to show it Thursday. I really appreciate the effort he put into that! Again, the poster he made is impressive!

Well...class is wrapping up. Today in team meeting we discussed our window problem, still no break throughs, and came up with a rough outline of our presentation. We broke up the parts of the presentation to work on and will bring them together to form our rough draft. I am going to work on the 'Experiences' section along with Jesse...and keep chipping away at out pre-loading text issue until we have to submit what we have.

Cheers!!

Update time....

As I mentioned in my last blog, I was going to browse through the available Banshee extensions to find ones that had similar functions to what we are trying to do with our project (right-click menu option, entry window, extracting current track info, ect...). This is exactly what I did. And as expected, or hoped, it really paid off. I was able to find several extensions that implemented the different functions that we were looking to do in our extension. After studying the code for these extensions, some late nights at the computer and a couple group meetings we are very close to wrapping this thing up. Here is the breakdown of our progress, which has really taken off in the past couple weeks.

The first breakthrough was the right-click options menu. We were able to get an option to appear in the right-click menu when clicking on the current track. All of this happens only when our extension is enabled of course. This break through was very important because it gave use a starting point, which is what we were struggling with.

So how did this happen. I was able to locate a LastFM extension that created an option in the right click menu, exactly what we where looking for. So I tracked down the code that performed this function and tailored it for our project. This code even included an event handler that listened for the click of the option button. Perfect! Everything looked like it should work but no option in the right-click menu after compiling he source code. I was not exactly sure why so I brought this to the next team meeting. With a little bit of teamwork we were able to figure out that there was an xml configure file missing that we needed to create in our project to tell the option where to appear. It is pretty cool, we can make this option appear in other places just by specifying it in the xml file. Currently we have our option showing up in the right-click menu and the edit tab on the main tool bar.

Our second break through came about via Jesse. The code I provided for the menu option was a bit messy from me playing around with it. Jess took this code and cleaned it up and in the process added the code for the entry window. He was able to get the event handler to call the window code. So, when the right-click menu option is selected by the user our Gwibber entry window pops up, as needed.

Our latest breakthrough was the ability to grab the current track metadata (artist, song title, album title, ect...). We are able to store the values in string variables. I think Jesse said he had figured this out before but I found a different namespace that provides similar methods for this. SO by placing this code that extracts the current track metadata in the event handler allows us to grab the current track info on the option click. Getting very close!!!

Finally after all that, we are left with one task. Pre-load a formated string of track metadata into the Gwibber entry window. This is proving to be a challenge since there is no direct method for this and there is no extension available with such function. Each of has come up with a different way of attacking this problem. Hopefully one will pay off.

Jesse has been in contact with one of the developers trying to figure out a of doing this. Not sure on the details but I think it involves overriding some sort of event handler to accomplish this. He is going to look into that further.

Kyle thinks that he an create a new class that inherits from the gtk enrty window which will include a setText method. This would make things very easy if he could pull that off.

I found a getClipboard method that is provided by the gwibber entry window. I am not sure how it works but I have been trying to figure that out. It requires that you pass it the type Atom but I am unsure what this I am reading up on this type and I have emailed the gwibber mailing list in hope that someone can shed some light on this method or maybe a better way to pre-load this text.

Guess I should mention what Shawn has been doing as well. He is supposed to be getting a poster ready for the poster contest. The abstract is due Friday and he says he will have this done. Hopefully he follows though on this!

Well that should catch us up for now. The semester is coming to an end quickly so I would like to wrap this the project up so we can submit a patch and look towards our presentation. Exciting stuff!!!

Monday, April 4, 2011

POSSCON experience and project progression...

Well looks like I have some catching up to do...as usual. Sorry Dr. B. Just extremely busy lately and I get this in when I can.

So POSSCON was a cool experience and I would recommend keeping this trip going in the years to come. The presenters where interesting people with lots of information to share. Lunch was good as well, I ended up having seconds! I had plans to speak with some of the presenters at POSSCON and was able to do so as these people were readily available and willing to speak with the conference attendees.

The first workshop that I attended was hosted by Jim McCracken and Neil Underwood. These guys hosted the 3D printing workshop, which I found really interesting. So interesting that I am looking into buying a 3D printer off Ebay to play around with. I think my daughter will enjoy designing little objects and then printing them out. I think I will too, hahah! Just another way to get her involved with and interested in computers. I am trying to mold a little computer whiz!

So my question to these guys was, “When do they think this sort of technology will be readily available for household use?” Mr. Underwood tried to convince me it is here and ready now. But after their demonstration and watching the configuration process I realized that it is clearly not. The configuration process is lengthy and a bit difficult for the average user. I mentioned this and they agreed that it was still a few years off for the technology to be user friendly enough for the average person.

Another drawback to this process is that the printer creates these objects but you can clearly tell they have been printed. The printed objects are covered in ridges. This could cause a problem if trying to produce a precise part. The solution to smooth the ridges is expensive so this is another reason why it is not quite ready for household use.

Although a breakthrough has been made very recently. So recently that the guy who made the discovery has not released his technique and no one is sure of how he is doing it. He has created a printer that prints so finely that there are no ridges. This is what I would expect the hardware to do if it is going to be made available for houses. Seems that it is on its way.

The second workshop I went to was hosted by David Duggins. This one turned out to be somewhat of a disaster but I did get some helpful information after the workshop. The priority of the workshop was to show the audience how to set up a workstation, using FOSS, free of charge. Great concept! He wanted to start out by showing us how to setup Linux, this is where he hit his first snag. There was intermittent and slow Internet connection so he could not download the setup files, it was going to take a very long time. So he decided to show us how to setup open source programs, that he was going to setup in Linux, in Windows but he was missing dependencies for many of programs on his Windows machine. A little preview of how this show was about to go down.

So he decided to set the programs up on his Debian machine, but it would not startup and kept crashing after a kernel panic. After about forty five minutes of floundering through failed setup attempts David called a break and we resumed about 15 minutes later. Nothing improved though. He stalled for a bit then revealed he had no further plans so we broke into a question and answer session then he called the workshop. Several people stuck around to ask more specific questions and I was one of them. I had to wait for a bit but I get to ask him about some FOSS options for my father's ticketing system. He mentioned two in particular, GLOM and SugarCRM. I am going to look more into both of these applications when I have some time. Just by talking with David though I feel one of these will do what I am looking for.

David Trask slipped through my hands. I wanted to make it over to the end of his workshop but did not make it after speaking with David Duggins. I was somewhat disappointed by this because I was going to ask him about FOSS software for my daughter to use because, as mentioned before, I am always looking to teach her new things using a computer. I was able to get his email from the program by scanning his bar code, handy, so I am thinking of emailing him instead. I did see him passing a few times and he seems like a really nice guy.

I'll mention our project progress to finish up. Progress on the plug-in is coming a long but is a bit more difficult than expected, as I suggested it would be. The project is very large but we are figuring things out. There are plug-ins that require the same functionality that we require so right now I am going through plug-ins code and trying to implement the same thing they have done.

I have found a plug-in that implements a couple of the functions we need. Hopefully this will prove useful! I think I am close to getting an option for our plug-in to come up in the right-click menu. Clicking this menu option will bring up our gwibber window. I have also found code that retrieves the needed track information. This will be helpful when it comes to grabbing track info for the gwibber window. I think we need to pick it up a bit though. Not hearing a lot out of a few others. I was really sick last week so I have not been with the group in a while so I am not sure where they are at. Hopefully they will have some breakthroughs to share tomorrow as well.

Back to playing with the project for a bit then bed, night!

Thursday, March 24, 2011

POSSCON!

Well good news at last! I have my Ubuntu system back up and running; the project is even all setup. This is great news because now I can get to playing with some code. I believe all other members of our group have the project setup as well so our project should start moving forward again. Most had a slight hang up setting up the Banshee extensions project.

POSSCON is coming up shortly, tomorrow actually. I am excited to go to this conference. This should be a cool experience. I have found two workshops that I am interested in on Friday, the 3D printing and cheap business startup workshops. I am also interested in meeting David Trask. Below are some questions I have to start off our conversation.

Jim McCracken - 3D printing
I read an article the other day regarding 3D printing. The article was about a 3D printer that could replicate itself, a fully functional copy. I thought this was amazing! I had no idea there were printers out there that could manufacture electronics. The article went on to say that in the future they predict each household will have a 3D printer. If a part breaks on one of your household goods, just print out a replacement, a fully functional replacement! Wow! So I plan to ask Jim about his familiarity with such hardware, because I am really interested to learn more. If he is, how far off does he believe this technology is from being available for household use?

David Duggins - Starting a business for cheap
My father owns a networking and computer repair business. This is where I had some of my first experiences with computers and that is what got me interested. I wanted to give some back. He does strictly networking and repair, he used to program but has lost it because of not using it nor keeping up with the changing technologies. Therefore he does all his ticketing by hand. Tickets are very expensive and the process of manually entering tickets is time consuming. So I began programming a ticketing system for his business. I have the database built and am working on the interface and functionality. I am able to add and remove info from the DB through decent looking web pages. I have also begun to incorporate some reports but I still need to do much more before it can replace his current system. Unfortunately I do not have a lot of time to dedicate to this task right now and I have been working on it here and there. I would like to know if there is some sort of open source framework for something like this out there available for modification. If so, can he recommend one or several to look into?

David Trask - Open Source tools for teaching
I have a nine year old daughter who loves to play around on her laptop and catches on to things I show her very quickly. I would like to get interested in programming. Just to introduce her to the field of computer science at an early age. I would like to ask what open source software he would recommend for this situation?

Well, off to bed now. I must get up early to make it downtown by 7:15, it is a 45 minute drive. I’m picking up Brittany in the morning and we are riding to the conference together. Should be a fun and informative trip!!! Night all!

Monday, March 21, 2011

HDD isuues

So I am kind of upset right now considering the fact that I am reloading Ubuntu right now on my laptop. I was very close to finishing the initial setup of our project when my computer just shut down. When I powered it back on my second HDD, the one Ubuntu is loaded on, would not show up in the boot manager. I removed my primary HDD and replaced it with my secondary, forcing my machine to boot to it. Ubuntu came up but immediately shut down again. Again I pulled the HDD out and noticed it was abnormally hot. Figured it was a bad HDD. I let it sit for a bit to cool down then replaced in the machine and booted again. The OS came up but acted funny. I could not connect to the Internet but the Internet works fine on other machines in my house.
I don’t know much about troubleshooting Ubuntu network problems but I suspect the HDD anyways. I have a spare HDD so I slapped it in real quick and began the reinstall process. After the install finishes it is back to square one with setting up our project. I am very familiar with the setup by now though so hopefully this will not be too big of a set back. This is still frustrating, I have a ton to do right now!!
My machine is coming back up right now. Back to work…

Tuesday, March 15, 2011

Return from break... :-(

Well we are back from Spring Break…ugh! The break was very enjoyable though, spent much needed time with my little one! The break is over though SO……time to get to back to work!

Even though we were officially on ‘break’, I could not resist working on our project just a bit. My main concentration over break was to finish up our initial bug fix. There were a few locations in the code which the developers preferred we did not change, these name changes were causing issues elsewhere since we did not create the ‘migration path’. I was working on making the necessary changes back to ‘banshee-1’ but was running into troubles getting the project to build after making the requested changes.

After some back and forth with the developers on this topic, I guess one of them decided it would be easier if they made the needed tweaks. So he did so and thanked us for all of our work. I am not disappointed at all about his help because it allows us to fully concentrate on our Facebook extension, which will be a bit more exciting of a task.

Before break I mentioned that Jesse sent out an email to the developers announcing our project selection. We received very positive feedback from this email. We received replies from some excited contributors as well as an offer for assistance, which we gracefully accepted.

One of the main developers offered to do the initial setup of the extension for us. I was really stoked about this because this allows us to focus our efforts solely on the functionality of the project and not worry about setting up the extension within Banshee. All this is taken care of already. We have a base extension setup that looks for C# bindings and the gwibber library on the startup of Banshee. This is a very nice jump start!!!

We also have a rudimentary timeline established for our project. We listed some main functionality and associated them with dates to serve as a base guideline. This may need to be tweaked just a bit but it is a solid start.

The next order of business is to establish our backlog. Once we have this established we can assign jobs and get into our sprints. We have decided to make our sprints only a week long instead of a month, which is the suggested amount of time specified by the SCRUM guidelines.

Besides all of that, team stand-ups are going well. I have found these to be very effective. It is a nice way to keep track of what everybody is working on and there upcoming plans. Also, you can tell when someone has been slacking because they have nothing to talk about when it comes there turn to speak. Basically, these stand-ups force people to do something before for the meeting so they have something to talk about, even if it is just a little, as well as have a plan for what they will be working on. I like that!

One more bit of good news. We already have a gwibber window that posts updates to your desired social network. So we can bring up a window, outside of Banshee, type a message then send it to Facebook. Of course we need to figure out how to do this while interfacing with Banshee but we are very much on our way in this project!

Monday, February 28, 2011

Gwibber success!!!

Success at last!!! Finally was able to get the Gwibber library installed along with its long chain of dependencies. I was able to accomplish this without any help from the mailing list. I'm proud of myself because this setup has been one of my biggest challenges yet in this project and I worked through it. It was a frustrating couple of days but persistence paid off in this one.

After many failed attempts I decided to remove all of the libraries I installed and start over. I ended up running 'apt-get auto-remove' as well to clean out unused packages. That removed a lot of things, I was kind of nervous doing this but I rolled with it and it payed off. I did have to go back and reinstall a few 'accidentally' removed packages because of this command.

After that I went through the process of obtaining all the packages one more time and was able to get it installed. On my last attempt I did try something different. Instead of using 'apt-get' to install most of the packages, I installed each dependency by downloading the source code. I then compiled each package and installed. This way I was able to make sure all the dependencies for these packages were there. I noticed I had to install several things I do not remember getting when installing the packages through the package manager. Maybe they were automatically added but whatever, the last time worked!

So after getting the libraries installed I set up a project solution and created a small test program that prints to the console using the Gwibber library. It worked...Awesome!

Next up is our time-line for the project. We already have our project picked out, you can find it here. Now we just need to hash out a reasonable plan to complete this thing.

Oh...I just seen an email pop up. Jesse just sent out an email to the lead devs announcing our project selection. Exciting!!

Friday, February 25, 2011

No Gwibber yet

So I read up on the CFLAGS. Although I'm sure this will be helpful information for future reference it was not quite what I was looking for to solve our problem.

I hung around in the Gwibber IRC for a bit after asking my question. I also continued to play with installing the Gwibber library but did not get anywhere nor did I receive any other helpful tips in the chat room. I decided to ask one more question before I logged out, “Where can I find the Gwibber API?” The answer I received disappointed me, “There isn't one.”

This response has made me rethink our initial plan to create an extension using this library. It could a pain using a library with no documentation. I will discuss this with the team later but for now I am going to send out an email to the Gwibber mailing list to see if anyone out there in the Gwibber world can help me with tis error.

Thursday, February 24, 2011

Jinxed...

So I jinxed us last night when I stated that we have had no major hang-ups yet. Our first hang up has just occurred. We are trying to get the Gwibber library installed and are having problems finding the proper dependencies. After much trial and error we think we have all the dependencies but are running into a strange error during the make process. Here it is:

service.c: In function ‘_dbus_handle_service_interface_loading_started’:
service.c:1365: error: unused variable ‘reply’
service.c: In function ‘_dbus_handle_service_interface_loading_complete’:
service.c:1376: error: unused variable ‘reply’

Even more strange, initially this error was stemming from a couple lines in the 1200s. We ran make clean and tried make again and now these errors are occurring a little further down. Unfortunately the make clean command did not work for these. We have also tried commenting out the variables in the code but it generates a whole other set of issues so it appears these variables are being used???

We Googled this error but it returned nothing at all. So I decided to get on the Gwibber IRC channel a bit ago and post a question, hoping someone had seen this before. I did not receive any direct help to the issue but several people came back fairly quick with links to sites that may be helpful.

http://en.gentoo-wiki.com/wiki/CFLAGS http://www.cs.colby.edu/maxwell/courses/tutorials/maketutor/
Title: CFLAGS - Gentoo Linux Wiki (at en.gentoo-wiki.com)

Getting ready to check these sites out now. These guys seem to think that ignoring the errors will work. Before posting the question I already tried running make with the -i flag and it did not work, the make process failed. I do not know what CFLAGS are so I am about to find out. Hopefully these will help!

Report on my findings later....

Wednesday, February 23, 2011

Missed me??!!

Wow! It has been a while since I have been here. Sorry for not updating more frequently but I have been REAL busy. Just because I have not been on here much does not mean I have not been working away at this project, I have been very active! Let me bring you up to speed on our project.

Our team's moral is high right now. Our project is moving along nicely and we have not had any major hang ups yet. I didn't really expect any but you never know, and it sounds like others are having some troubles. Hope it continues this way until the end of the semester, my fingers are crossed. Our team has meshed nicely. No major issues between us to report and everyone gets along and works well together. That is a big plus! We do have a few members that are dong a little more than others but we have met on this topic and addressed the issue and feel we have it under control. We are excited by our success so far in this endeavor and are ready to close out strong with an interesting addition to the Banshee project.

We are leaning towards a Facebook extension for Banshee. The lead developers mentioned this would be nice to have so we thought maybe we could tackle another project they were trying to throw our way, much like the bug fix they recommended. It may be a bit much to try to finish in the short time we have left in the semester but we are not for sure. Jesse is checking with the developers right now to see how big of a project they feel this will be. Although even if we cannot wrap this extension up by the end of the semester, we can establish a solid foundation and some main functioning that will give others a platform to build off of. We may become involved enough to see this thing through even after graduation.

While Jesse is doing that I am doing my part by looking through the code of some of the other available extensions to see if I can get an estimate of the complexity based on these other modules. I will report back on this later after I have some more time to look through the code.

So what else...

Well, our team made a solid contribution to the Banshee project recently. You can read all about it here. We made many changes to filenames and code to reference 'banshee' instead of 'banshee-1'. It may have been a little grunt work, but it was much needed grunt work as the 2.0 release of Banshee is schedule for April. We are satisfied with our work and the developers are thankful towards us for tackling this for the project.

My last blog posting left off with the Chapter 6 homework. Well I completed Chapter 7's tasks earlier so I might as well add my thoughts on those exercises.

7.2.2

This was a very simple exercise. It just had us experimnet with the 'diff' command. The command without the '-u' flag prints only the line or lines in the file that were changed. With the '-u' flag there is much more information shown on the screen. The number line of the code plus the surrounding code for reference is some of the information that is displayed. This is very helpful for locating the changes in the files. I know because I had to find locations of changes in our project based on these files .

As I was saying, I was already familiar with the patch file before this exercise. I was using a diff file to implement our fix and had no idea. There were many similar changes that were previously tracked so I used these tracked changes to make my own changes. Wish I would of jumped ahead and read this chapter first, it would have made interpreting the patch file a whole lot easier in the begining.

7.8

Was not really successful with this exercise. I was unsure of what they mean by comparing dev/null. I tried to diff this file with the 'foo' file but it returns the message 'diff: dev/null: No such file or directory'. I was not sure about this question so I moved on and will ask the professor about this one later.

7.9

The last exercise was more straightforward than the last. There was a tutorial with the needed commands listed. I downloaded the source code, changed the specified file and created the patch. Very simple process. We just did this process when submitting our own patch to the Banshee project. We used a git patch though.

Well I guess I will finish up with our plans for the upcoming week before Spring Break. We are waiting to hear back from the developers with their thoughts on us taking on this project with a only a couple of months to finish. As I said earlier, Jesse has been in contact with them regarding this subject. In the meantime, I am scouring the massive bug list for other possibilities in case something does not work out with the Facebook extension. I have asked the others to do the same and bring couple options to class on Thursday. After we make a choice on a final project we will hash out a reasonable time-line for reaching our goals.

Well that's it for now. Going to do some actual work on this project now instead of just talking about it. Cheers!!!

Sunday, February 6, 2011

Chapter 6 Exercises

We were assigned several exercises from the Chapter 6 in the open source text we are reading. The first was to search our project's bug tracker for the oldest bug. So I visited Bugzilla's website and searched for Banshee. Many results popped up, nearly 1,500 bug reports. Finding the oldest proved a bit tricky at first because the report opened date was not a displayed column in the bugs list. I figured that there had to be a way to view the opened date without viewing every case. After exploring the page I found a link to change the displayed columns. I changed columns to display the opened date and then sorted by date; up popped the oldest bug.

So I checked out the report:

https://bugzilla.gnome.org/show_bug.cgi?id=122391

It appears this bug pertains to the system icon not appearing properly when Banshee is set to startup automatically on login. When set to startup automatically the tray icon appears only a pixel thick. This bug report was opened In September of 03 and its last update was in 2007. I think it is odd that even though this is the oldest bug it is still marked as 'new'. I figure this bug is still open because it is a minor situation and there is a work around available and posted for it. Reading further through the report I see that this error has been discovered to be a fault on the part of the Gnome panel so it has been assigned to their maintenance team. Then I realized, this is why it is still open. This bug affecting Bashee is probably not a high priority fix on the Gnome developer's list. As of 2007 this bug is still occurring and it has been stale for over three years now. I am not for sure if this bug will ever be resolved.

The next task at hand was to create a Bugzilla account but I did this a long time ago. I have been exploring the Bugzilla website for a couple weeks now and am beginning to feel fairly comfortable with its interface.

After supposedly creating an account it was on to triage duty. I am familiar with this term because we have triage duty where I intern. I began to look over the Banshee bug list and decided to start with the newest because I figured no one had the chance to get to them yet. I sorted by status and began looking through all the bugs marked 'new', there were hundreds! The first couple I visited had extensive histories to them. I took time to read a couple more then I realized there is nothing I can add to these cases, I need to find the fresh cases. So I sorted by date again but this time listing the newest bugs at the top. Some of these bug reports were from today. I thought to myself, 'there has be some untouched cases here.' I opened the most recent case which was from earlier this morning and one of the main developers had already responded to it. I thought, 'WOW, these guys are really on top of things!'

After reading the top couple reports, I found one where the reporter posted this long error in the report instead of attaching it in a file. I wanted to cut out the text of the error and just attach in a file it to the report but was unable to do this. There was hardly any information left in the report except the long error message so I wanted to request more info but I am just not familiar enough yet with Linux, Ubuntu or Banshee to know what information to request. I looked through many other bugs but for the same reason I felt I could not help. I need to really dive into the program and learn its insides before I can really request the appropriate information. Knowledge of this code will come with a little time I am hoping.

I was beginning to get a bit discouraged when I came across a report that I felt I could do something about.

https://bugzilla.gnome.org/show_bug.cgi?id=640736

This user would like better descriptive text of the process when logging into a Last.fm account. I have a Last.fm account and have already set it up in Banshee so I am familiar with the login process. It is a bit convoluted and it requires the user to visit a Last.fm web page in order to allow access but it is sufficient. There is a dialog box that opens as you mouse-over the login button that explains the process better. I was going to post on the bug report to inform the reporter of the dialog box that pops up displays almost the exact information he is requesting but felt the need to ask first since I am a noob. I sent an email to the project emailing list with a link to the bug and my proposed actions. I explained to them the user request and my planned actions and asked for their input. Also mentioned I would be happy to look into changing the Last.fm login window to display the extra information if they thought the suggestion was a good idea.

After finally finding something, it renewed my interest. I thought that there may be other simple things I can do to start off. Well as I expected, I came across a few others.

https://bugzilla.gnome.org/show_bug.cgi?id=638571

This user would like a better description in the dialog box that is displayed as you mouse over the “Simplify” button in the “Now Playing” pane. Not sure this change is necessary, but the dialog could be a bit more descriptive.

https://bugzilla.gnome.org/show_bug.cgi?id=640124

This user would like the text “Transferring” removed from the pod cast download progress that appears in the sidebar of the program. This is an easy fix although I am not sure whether it is necessary either. I do experience the same issue as this user. Maybe replacing 'transferring' with a shorter word (although nothing comes to mind) or stacking it on top of the 'x of y files at...' text would be a feasible solution. Removing it, as the user suggested, is an option as well.

As with the first bug report, I emailed the project mailing list with the links to the bugs and my suggested resolutions. Don't know if these guys will think I'm a total idiot or if they will be excited for me to get involved but I am hoping the latter. We will find out, just waiting to hear back from someone now. If the project leads approve these changes I have already located the places within the code that needs changed. I can make these fixes and submit them for approval quickly. Even though these are very minor contributions it still feels pretty cool to be contributing to a very large project.

Wednesday, February 2, 2011

Chapter 5 Exercise

After setting up our project's source code on the Subversion server I completed the exercise in Chapter Five of the Open Source textbook we are reading. This exercise requires us to get the source code for FreeCiv, an open source role playing game, and build it on our machines. This is already a familiar process so it did not take me very long to complete.

I started by getting the source code from FreeCiv's source code repo. This is done by using the command 'svn co svn://svn.gna.org/svn/freeciv/trunk freeciv'. Running this command downloaded the code to my machine. It took a while to transfer all the code to my machine but it eventually finished.

I opened the INSTALL file to check the needed dependencies. I went through the list and checked if each was installed and discovered I was missing a few but could not install them by the name used in the documentation. So I decided to just try and build it without the few I was missing. This did not work, go figure!

The first package I was missing was referred to as 'glib'. Like I stated above, I could not find this package to install by its name so I searched the package manager. Here I found all of the missing packages that I needed.Through trial and error build attempts, I installed all my missing packages and was able to build the code. After that it was the same process, run the make command and then './ser' and the program was up and running.

Like I said this whole process probably took me 15 minutes and was familiar to me, maybe I am getting a little better at this open source stuff.... ;-)

Importing the code...

I have a little catching up to do so lets get to it. My last blog was about my experience installing the Subversion client and playing around in the Subversion playground Dr. Bowring setup for the class. The other part of that assignment was to set up the server side of Subversion locally on our machines. I did so with the assistance of the Subversion book Dr. B recommended. There were several options for setting up Subversion with different configurations. I choose just set up a local Subversion server to track all of my documents, this may be useful for tracking changes made to my school documents or other files stored on my machine. It only took a couple of commands to do this and it was set up. I played with it a bit but I think I will need to become more familiar with this tool before I put it to such use.

The past couple classes have been mostly discussion sessions. This past class we discussed our experiences at attempting the most recent assignment, obtain our projects source code and build it. Our team did well and has posted its experience report here. Some teams were having some real problems but so far (fingers crossed) everything has been going real smooth for us.

After our team gave its experience report Dr Bowring suggested that we get our source code setup on the Subversion server. This sounded like a great idea so I jumped on it when I had a free moment. Our code came from a Git repository and it needed to be migrated into a SVN repo. Therefore I looked for an article on-line on how to migrate a Git repo to a subversion repo but was unable to find any clear articles on this process. Strangely enough, there are tons of the reverse out there on the web, go figure??? So I decided to manually remove the .git files. This required me doing this this through a command line because the files were locked and I did not even have the option to delete them in the OS GUI. After displaying all the hidden files, I was able to remove all files ending in .git.

After the project was 'clean' I needed to figure out how to get the source code onto the server and versioned properly. I wasted a bit of time trying to just commit it for the first time but ran into nothing but problems. It appeared to begin to copy but would never finish or would fail with an error. So, I did some reading in the Subversion book and figured out it needed to be imported for the first time in order to set up the versioning of the files properly.

It took a very long time to finish the import but when it finished our source code showed up in the playground repo. Awesome!!! Just as a test, I removed all the source code from my working space and updated my folder. Presto, it was back. Just to make sure everything imported properly onto the server, I rebuilt the code I downloaded from the server and ran it. Banshee fired right up with no issues. Looks like the import was a success.

Now that the code is set up in the Playground repo we have moved on th the next stage of our project, locating and fixing a bug. We think we have already located the bug we want to fix. We currently using MonoDevelop to explore the code in order to find this bug. At first it appeared that this was going to be an easy fix but we have yet to locate the bug within the code. We do have a community of help out there so we decided to reach out to them for the first time for help. Jesse sent out an email to the emailing list explaining the bug we have taken interest in and asking for help on it's general whereabouts in the code.

As of right now, we have not heard anything back yet from the community. BUT, we are hopeful considering Jesse just sent this email out earlier today. Feedback or not, we are pushing forward with our project and will continue to pursue this bug.

Wednesday, January 26, 2011

Subversion


Our assignment was to experiment with Subversion. Although I do not have any prior experience with Subversion, we do use version tracking software where I intern.

I began with installing Subversion on my Ubuntu machine. This was very easy, 'get-apt install subversion' does the trick. Although when doing so, I received a message stating I am using the most current version. I do not recall installing this previously but I must have, unless it came packaged with the distribution of Ubuntu I am using.

Next was to log into the Subversion 'playground' Dr. Bowring setup for us to mess around with. First I wanted to be cool, so I tried accessing the playground via command line. I was unable to accomplish anything this way, I kept receiving server rejection errors. Probably because I did not know authenticate to the server through the command line tool. I knew it had to be something I was doing wrong because my command line skills are limited at this point in time, I'm betting this changes by the end of this semester. Therefore I turned to a Subversion GUI client called RapidSVN.

I downloaded and installed RapidSVN then launched the program. It did not take me long to learn the interface, it was fairly simple. I setup a repository by entering the repository URL, a user-name and a password; I was in. I looked at what others had done and then decided I needed to leave my own mark.

I began by checking out the repository onto my machine. Then I played with some of the existing files and even created a file using VIM. Took a minute to get used to this editor because it is my first time using it. Command mode and insert mode threw me off at first but it did not take me long to figure it out. I saved the text file and added it to my local repository, this is important because if a file is not added to your local repository it will not be committed to the repository on the server, then committed my local directory back to the server repository. No problems so far, everything seems very straightforward.

Figured I would play around a bit more though. I wanted to delete a folder so I deleted it on my machine then tried to commit my local working set to the on-line repository. I received an error instead of the desired results, this makes sense. I deleted the folder on the server and updated my directory and even though the folder was not on the server it stayed on my machine. I figured it would delete it, this was not the case. After further thought this made sense as well. I played around for a bit more and decided I was through for now.

Well, that is going to wrap up my first experience with Subversion. The next task at hand is obtaining the source code. I do not feel this will be difficult as we have done this before with last semester's project. More to come on this later....toodles!!

Sunday, January 23, 2011

First contact and possible contributions

In Thursday’s class we met as an entire class and shared some of our personal experiences from becoming involved in these open source projects. It sounds like everyone one is making good progress and it has been a bit easier going in the beginning than last semester’s projects in 362.
Some groups have already received emails from their project’s community welcoming them in and offering ideas for contribution.  As of Thursday, our group had not heard from anyone within our project but we did get a response on Friday. Our group was welcomed and several sent suggestions on where to begin. One was with the Banshee ‘love-bugs’ posted on Bugzilla. ‘Love-bugs’ are supposed to be the bugs that are considered to be an easier fix and may be good for people trying to just get started, like us!  So I checked it out and posted the link on our wiki then picked out one that I thought we may be able to handle.
The bug involves an issue that crashes the program on startup. If the location of the ‘Music’ folder is set to ‘/’ instead of a “normal’ value like, ‘/home/myaccount/Music’, then the program will crash on startup.  There needs to be a guard against this condition. I think this will be a reasonable first contribution. I will bring this up with the team at our next meeting to see what they think. I am interested to see with they have come up with as well.

“The Cathedral and the Bazaar”

Sorry about this being a bit late, but I do blog regularly so I figured you would not mind. This essay by Eric Raymond discusses two different types of software engineering models, the Cathedral model and Bazaar model. It then goes on to explain why the Bazaar model is a superior model for an open source project and provides guidelines to follow.
In the Cathedral model, the source code of the project is limited to a small group of developers until a release, and then it is released to the public. The author argues, and I agree, that more time and energy are spent by the core developers of a project in the Cathedral model. This makes sense; the development of the project is limited to only a small group of people.
The Bazaar model lies at the other end of the spectrum.  The source code is stored on a server and accessible via the internet by the public at all times. This enables many people to look at the source code, play with it and contribute to the project.  In this model, there are many people contributing in many different areas of the project all at once. The work load is delegated out to many individuals all over the world, taking much of this burden off of the core developers.  At first it sounds like this may lead to chaos. I do not think that this would be an effective method of development in a production environment. But open source is a completely different breed of software development. And if managed correctly, this method which seems like chaos can be harnessed and made very useful.
Many of the necessary guidelines for a successful open source project can be found throughout this essay. I will just mention a couple that I found particularly important or interesting.
First, I think it is important to have a project that interests people or satisfies a need. If you want people to get involved and contribute to your project it must be interesting to them right? Contributors do not get paid for their time so they must be rewarded by personal gains, like contributing to a piece of software that solves an issue in their life. Most of the time, these people are willing to work harder than the people being rewarded financially. For example, I read an email in the project mailing list archive where this guy worked through the night on the project to resolve an issue and he was getting ready to go to work that morning. That is serious dedication and personal sacrifice!
It is also very necessary to have a tight core of developers manage the project. Everyone communicates with these individuals about decisions made on the project. I believe this is what prevents the wide- spread chaos. Many people communicating with just these few people, this keeps the number of communications lines at an acceptable level. If everyone tried to communicate with everyone on a large project nothing would get accomplished. So I would say this is a very important guideline. It seems that most projects follow this one.
There are many other great guidelines for an open source project, too many to mention. This essay by Raymond has convinced many in the open source world to adopt this type of model when undertaking a new project. That is impressive! Just want to thank Dr. B for pointing out this piece of work that has influenced so many in the open source community.

Thursday, January 20, 2011

Establishing communication with the project

I have had my IRC client, Pidgin, installed for several days now and I have been logged into the Banshee chat room since. Just lurking… I have been monitoring conversation and observing etiquette. Have not contributed to any conversations yet but I am positive my time will come.
There are several things that I have noticed while hanging in the shadows.  I have noticed that when you are talking directly to a person you should begin your comment with their nick. There is a bugbot that comments when people post new bugs or make updates to bugs. Also, all the conversations are mainly related directly to the project, there is no small talk. When going through the history I did find a few instances of short, off the subject chat, but not much. One other good thing that I noticed, the Banshee chat room for our project stays filled with a good amount of people. Hopefully this means help will be readily available when needed.
The other night I subscribed our group to the Banshee mailing list. This will be a good way to stay in the loop with the project.  After submitting my request it said I would be contacted shortly via email. I waited but have not received an email and this was a couple of days ago. Therefore I decided to go to the website and submit another request using a personal email address. We will see if anything happens from this one. While on the site I checked out the archived files. There are many conversations in the archive, some dating all the way back to 2005. The project was created around then so these may be some the initial emails of this project. I read some of the emails from 2005. I did not find anything too exciting. There were a lot of feature requests though and some requesting the features wanted to help develop them. That is pretty cool! Just like Raymond said, your users can become one of your greatest resources. Some of these emails are real life examples.
I have an update on the mailing list situation. I received my conformation email a bit ago from my second submission. I confirmed and have now begun to receive emails from the Banshee project.  Nice, looks like I am in. I am on the mailing list and have the IRC channel setup.
Soon to come, my take on “The Cathedral and the Bazaar”.

Tuesday, January 18, 2011

Project selection…Banshee it is!!! ..and more.

Oh boy…guess I need to blog a little more often. I have so much to talk about. Hmm…maybe I should just do less??? Just joking Dr. B, couldn’t do that if I wanted to…it’s not in my nature. Alright, let me get started…
 The other day while still researching our possible projects, I set up a Bugzilla account. I did this because I wanted to see the different types of bugs posted for the Banshee project, they use Bugzilla. After creating an account I had to log into my email in order to confirm my account. After confirming the account I could log into Banshee’s Bugzilla site which had all there bugs listed. The list was extensive…I looked at this a positive sign because it looked like there was plenty to address and the project was very active.
Also the other day after doing research on our list of six possible projects, our team selected a top three list. They are Banshee, Lenya and InkScape. All three projects appear to be well documented and developer friendly. They have an IRC channel, mailing list, bug-posting site, forums and other features that will make it easier on us when trying to break into the world of open source. We listed our top three at the bottom of out possible projects page on the team wiki. From the sounds of it, we were leaning towards Banshee so I kind of jumped the gun and started playing with the Banshee project…not surprising at all if you know me.
I became familiar with their site and installed their software on my Linux machine to play with. I like it..looks cool! I don’t currently have any media on my Linux box but I need to put some on there so I can use the program more in depth. I was just ablr to play with the internet streaming features. I want to hook my Android phone to it as well to see how it acts. Oh...just had a thought! I have music on my phone that I can try to import using the program. Ha…first experiment! J Will report on this later…
The other night I took the liberty of subscribing our group to the Banshee mailing list and looked into Banshee’s IRC channel. I skimmed through the documentation offered by Dr. B on IRC setup but decided to just jump in and figure it out. One part I did pay attention n to is the etiquette section. I didn’t want to be that idiot newb looking silly in the chat room because the etiquette is a bit different than a regular chat room. Just for example, staying logged in but not participating in conversation is accepted as normal; only speak when you have a question. As opposed to a ‘normal’ chat room, when you are logged into the chat room you are most likely there to be participating in conversation. It is also acceptable to join a conversation without saying hello and leaving without saying bye. This would seem rude in ‘normal’ chat rooms. After reading I looked up IRC clients and decided to try Pidgin. I installed it and entered the server information found on Pidgin’s website then was able to connect tot the Banshee channel @#banshee. When I logged in it was late and no one was talking about anything but there was about 70 people logged in. So it appears there will be plenty of help available if needed. Yet another positive for this project. Also tried mIRC but prefer Pidgin…I think it is only because of the name???
Finally we come to today, or I guess yesterday…it is a bit past 1AM...(yawn). We had class today and our third team meeting. At the beginning of class each team got up and did a small presentation on their top three projects. Each group had the option to all go up or just one. We thought Shaun could handle the job for our team so he gave our presentation.  He did fine. After presenting on the top three we selected our number one project, we had no challengers for our number one so we were able to choose Banshee. This is good because I have already established our communication channels for this project.
After all teams presented we broke into team meetings. Our group took care of some housekeeping issues then preceded to setup IRC clients on the others machines. Unfortunately we could not get connected at school. I had no problems at the house last night so maybe it is something with the school’s network. Any who, those guys are suppose to go home and try to set it up to see if there troubles continue. I am on right now at the house with no problems. Not much happening tonight either…again, many people on though.
Well, think I’m done for this one…g’night!

Saturday, January 15, 2011

My top projects picks...

Well to begin I set up a team blog instead of incorporating it into our wiki page. This seemed like a better solution so that is what I did.
Also did a little research on the projects found on our list. After visiting all project pages and checking out wikis, blogs, bugs posting sites and other stuff I think I have made a decision on my favorite projects. I would like to work on either Amarok or Banshee. Both of these products are media players/managers. I think this choice may have something to do with my love for music. But there are other reasons. Both have all the features we are looking for and are well documented projects. They should be easy to become involved in because of these characteristics.
I have posted some information that I have found on our team wiki page. Just waiting to hear from my team mates on their thoughts then we can make a decision and move on from there.
Well…it is Saturday night and I’ve been doing homework and research all day. Believe it is time for some relaxation and fun. Who knows what that may entail but…goodbye for now!

Busy first week!

Well it’s obvious to me that school is back in session…busier than ever. Many classes with lots of homework…ugh! No more personal time…whatever… Time to step it up, last semester!!! J
I’ve done quite a bit with our 462 project since my last blog. After setting up my blog and the team wiki I played around with the available tools and customizations, just to see what I could do…ended up tweaking our pages just a bit.
I registered for the POSSCON conference as well. Read a bit about the conference on their page. It looks like it should be interesting and fun! Glad the school is covering the cost for us!!
In class Thursday we had a team meeting to discuss possible choices for our term project. We came across some real interesting projects and limited it to a list of 5 or 6. You can check the list out here. I am going to install some of these later to play around with them and will blog about my results later.
We are also trying to make a decision about a team blog. We are not sure whether we want to use a separate team blog or just incorporate it into our team wiki. Haven’t quite decided yet, let you know when we do…
Well time to get to work for the day! Be back later…..

Tuesday, January 11, 2011

Back to the grind...

Today was my first class back from winter break. Was not too excited to get back into classes but I am excited that this will be my last semester. For our first assignment in 462, we were given then task of creating a personal blog to record thoughts, discoveries, joys and woes as we progress through our projects this semester. Well, here it is! This is my first blog ever so this should be interesting. Looking forward to getting experience with this and the wiki page we will setup for our project in the near future, as well as all the other tools we are going to use this semester. After class discussion, it sounds like were are going to get a lot of real life experience this semester so I am feeling a little more enthused about the semester. Well, guess that is good for my first post. Until next time....