Monday, January 31, 2011

Change is good...right?

The class group assignment this week turned into a bigger challenge than we expected.  In order to reach this point we have researched our HFOSS project, joined the mailing list and IRC chat, started talking with other developers and preparing to dive in.  This week we were challenged to checkout and build the source code!  That seemed like it wouldn't be a problem for our RapidSMS project, until we started looking for the code and trying to choose a specific project to join.  At that point (late in the week) we realized that even the 'beginner' level tasks were far beyond our ability and understanding.  Okay, maybe we could have figured it out eventually, but they went well beyond our confidence level and hope for success.

As we began researching alternatives, now finding ourselves way behind the rest of the class, we took advantage of some of their research.  SugarLabs seems to be a big enough project with a variety of challenges, and two other groups have deemed it possible for a successful class project.  Since one of our other interests originally was educational software, we decided that SugarLabs was the right choice for us.

Even so, at this late hour we were struggling to catch up with orienting ourselves to the project wiki, finding information, source code, IRC information, mailing lists, etc.  This means we all had rather stressful and discouraging weekends, I'm sad to say.  However, I do still have that glimmer of hope.  One of my team members, Carly, shared a link she found for instructions to build to Sugar Emulator.  We're not sure at this point if this is the source code we needed, or if there is more that we need, but following that link I was able to successfully checkout the source code and build it!  You can imagine the celebration until I tried to run the emulator...

At this point I found that I couldn't access any of the activities!  Fortunately I had a prior engagement that forced me to walk away from the problem for a few hours.  I wonder when I will stop being surprised at how helpful it is to take a break!  When I returned later in the evening and ran the emulator again, I had the bright idea to try right-clicking on the activities and all of a sudden a new option appeared: 'Start New.'  Thinking to myself, "Well that looks promising," I chose this option and the activity opened!  I was even allowed to play with it!  There are still a few activities that are not working and this week I hope to understand those issues better - perhaps I am missing a dependency or skipped a step in using those activities.  I'm sure that a little research and reading will go a long way in solving that problem.  I know I've stated this in previous posts, but it is so refreshing to be optimistic about a project this big, especially since my last experience was so discouraging.

On other matters, I unfortunately still do not have the subversion server installed on my machine, at least not fully.  I think I found the server through the Ubuntu Package Manager and I clicked 'Install,' but there is more involved in setting it up.  I was unable to complete that task because I chose to prioritize the HFOSS project for now.  Subversion can wait another day or two.

I still feel like we have a long way to go in order to be 'up to speed' in this project, but I feel empowered to do so and emboldened to ask the questions I need to ask.  Maybe that is the desperation setting in, or maybe the second trimester of a pregnancy brings with it a boldness and sense of purpose.  Who knows?  All I know is that I'm starting to accept that change really can be a good thing, even though it often means there is extra work to be done.

Thursday, January 27, 2011

The Power of Subversion

Our current classroom challenge is to install and experiment with subversion.  For those readers who are not already familiar with subversion, it is a Source Code Management System (SCM).  More simply put, subversion is one of many software tools to help you manage different versions of a file or directory through its changes.  For the Mac users out there, you may have heard of a computer back-up program called Time Machine.  I haven't personally investigated Time Machine, but if you've heard the sales pitch, it is a very similar concept.  Using an SCM can allow you, and anyone else with access, to make changes, track changes, revert to previous versions, etc.  It even allows two people to be updating a file or directory at the same time!  As a student who has done my share of group projects, I wish I'd learned about subversion back in high school!

Last semester in my software engineering class I was briefly exposed to subversion through the open source project we worked with.  However, checking out files from the repository was the limit of my experience.  This semester we are going to be using subversion within our group projects to share and manage our own progress and files as we take on another FOSS project.

My experimentation so far had a bit of a rough beginning.  I downloaded and installed subversion on my Windows machine, I couldn't quite get it to work.  The command terminal would open for a second and then close.  Since I also have Ubuntu installed on my machine and I knew I had installed subversion on that system before, I rebooted and entered the world of Linux.  Once I made it that far, things got much simpler. 

Ubuntu already contains the code for subversion, so in order to install it, you simply open a command terminal and issue the install command.  In my case the command is "sudo apt-get install subversion."  I knew I had previously installed subversion because I had used it for a class last semester, as mentioned above.  However, near the end of the semester I had some problems with an Ubuntu update and had to uninstall and reinstall the OS, so I re-issued the command to make sure I did have subversion and then I was able to proceed.

Using the class textbook and another guide on subversion (provided by the professor) I was able to check out files, modify them, add to the repository, update my own copy, and so much more.  If I had more time at the moment I would go back through the reading and try out as many commands as I could!

I am very excited about this tool and am eager to become more familiar with it.  I know that there are many other SCMs available, but I think that being able to say confidently that I have experience with subversion, and thus with the concepts of SCMs, will be a great asset when I begin looking for work.  This is especially relevant to me because I am hoping to find some work which allows me to telecommute, since shortly after graduation I will also become a mother!  Since SCMs allow workers to update and collaborate without being in the same room or same building, I can see that this will be a necessary skill to work from a distance.

Tuesday, January 25, 2011

Upon Further Investigation...

Since my last post, the A-Team began a deeper investigation into the workings of RapidSMS.  We were primarily looking for information about the inception, history, current work, and primary contributors to this project.  What we found, however, was very little about the inception and history of the HFOSS project. 

In case I had not clarified this before, RapidSMS is a framework for developing data collection and reporting tools using basic text messages.  It is not a stand-alone application.  From our research, this framework seems rather complete.  Most of the current contribution have to do with applications developed on the RapidSMS framework.  Personally, it was interesting and exciting to read about some of the ways RapidSMS has been used and deployed in the world.  Their case studies page has a great summary of how RapidSMS has been tested in the field, primarily in African countries.  There are some other projects beyond these that are currently being developed and which we need to examine further.

We have also been in contact with the manager of the RapidSMS Google Group.  The response was mostly positive.  He was very welcoming and expressed a willingness to help us brainstorm ways that we, as a group of inexperienced students, can contribute to this project - something that I am extremely thankful for.  The only negative really is something inherent to the Open-Source community, specifically that many of the people contributing to the project are either doing this in their spare time or are frantically trying to piece something together for their job, which means we might have to be 'aggressive' in our communications efforts.  This is no surprise, but I sometimes struggle to be aggressive with people I can't see and have never met.  How aggressive can you be when email is your only point of contact?  In spite of that minor discouragement, I find that I am still optimistic about getting involved, especially with the help of the Google Group manager.

I'm excited to start getting to work on the code and exploring, especially after starting to read about subversion!  I was actually amused reading a team-mate's blog because his 'stuck' to start this is the opposite of mine.  My Ubuntu system cannot connect to the school's wireless network, but it can connect to my home network, while his can connect to the school's network, but not his home one.  However, as I am also a full-time military wife, I try to keep my school work at school and take care of home related things at home.  I'm hoping to get help connecting to the school's wireless network this week so that I can keep this distinction for my own sanity, but I may have to make some boundary changes.

Thursday, January 20, 2011

Joining the Community

This week we chose an open source project in which to participate.  We, as the A-Team, chose the RapidSMS project, which essentially uses simple texting to update, maintain, and retrieve data about patient healthcare, supplies, or whatever is appropriate in the context.  It is a really interesting project that seems to be encouraging current contributions.

We were able to join their mailing list, which is hosted through Google Groups.  This was quite simple for me, since I have used Google Groups in the past.  I am glad to at least have one tool in my toolbox with which I am familiar.

Joining the IRC client is a bit more confusing and challenging.  A personal aside that will certainly be affecting my performance this semester is that I am pregnant with my first child.  My husband and I are very excited about this, but I am already noticing that my need for sleep has increased dramatically, which gets in the way of my completing the necessary research to learn new tools.  I mention this in my blog because I value honesty: honesty with myself, my peers, and my superiors.  Our group found a way to join the IRC client through a web browser and I have been able to connect, but I still don't understand how it works or what I am supposed to do with it beyond the fact that it is a tool for live communication between collaborators.  I plan to continue researching this because I sincerely want to understand and master the tools Dr. Bowring has presented.  I just have to admit that my progress will likely be slower than I expected.

The Open-Source Bazaar

For class this week we read an article called The Cathedral and the Bazaar, by Eric Steven Raymond.  I found this article very interesting and informative about the difference between the open-source and closed-source models of development. Comparing them to a chaotic bazaar and the creation of a cathedral was very insightful and helped me understand their differences in a very real way.  Cathedrals took hundreds of years to construct, required a small circle of management who made all of the design decisions, and those design decisions were made at the beginning of the project.  The result is a beautiful work of art that inspires awe and draws your eyes to heaven, but these results come centuries after the inception of the concept.  An open street bazaar, on the other hand, comes together completely, quickly, efficiently, and with such variety that you can find whatever you seek from some vendor.

I see a lot of similarities in his analogy.  A cathedral is a safe place, a place of sanctuary, structure, organization.  There is something comforting about that structure, the fortress.  In reading this article I can see why I tend to be drawn more to closed-source than open-source development.  I am not someone who generally likes chaos; instead I thrive with boundaries and guidelines.  While that is my personal tendency, I am growing increasingly aware of the benefits of open-source development.

Raymond's writing style is very engaging, almost convincing me that open-source just might be the answer to software development!  I really enjoyed following his journey as he experimented with the principles he saw modeled by Linus Torvalds in his work with Linux.  The way he pulled out lessons for programming throughout the text was also helpful, yet somehow discouraging to me.

As I continue my education in computer science I find more that I enjoy in the challenge and I am finding my strengths, but I am also finding that my interests are extremely narrow.  If the key to writing good software really lies in the interest level of the developers, then I fear for my future career.  My true interest is in databases, specifically in improving the database tools available to non-profits, which is not a big market. 

On the other hand, if the nature of great programmers is to be "too lazy to fail" then I just might be okay.  I don't like redoing work that has already been done perfectly well.  Why re-invent the wheel?  I remember struggling with that frustration during some of my assignments in earlier classes, even as I realized the value of figuring out how to implement data structures or sorting algorithms myself.  In those cases, I knew from the beginning that if I could create and implement that code myself that I would have a  much better understanding of the material than if I simply used whatever someone else created.  However, in major software projects that are so much more involved and complex, I would much prefer to let someone else do the ground work, give me something to start from.

Maybe after another semester of working with open-source projects I will feel more prepared for the 'real' world.  I believe that I am, but it's those feelings that get in the way.  I guess at least for now it's time to step out of the safety of the cathedral and go shopping in the bazaar...                                      

Sunday, January 16, 2011

Diving In...

One of the main goals of the Software Engineering Practicum class is to gain experience working on an actual software development project (practicum -> practice; makes sense to me!).  As students, we are understandably limited to Open-Source Software, and for this class, we are focusing on Humanitarian Free and Open-Source Software (HFOSS) projects. 

I have to admit when I took an initial glance at the main page listing these HFOSS projects, I was not very inspired by the names and descriptions.  I personally have a very focused interest in databases, which not many of my classmates necessarily share.  Also, having worked in the non-profit sector for two and a half years before beginning my computer science degree, I have seen promise after promise of technology that is going to make all the problems in the implementation of an NGO's mission disappear overnight.  Honestly, a lot of the problem is people, not technology; the people in the organization who are so focused on the mission that they are unwilling to spend the time to learn how to use the existing or new tools available to them, the people receiving the services who do not understand the value or importance of them, the people working to communicate that importance without stopping to study and understand the cultural differences and use that understanding in their communication.  Enough of that rant, suffice it to say that I don't believe that technology is the "Silver Bullet" to solve the world's problems, although I do believe it can be a great tool.

After our team, the A-Team, met in class on Thursday to choose our top three options, I went back and researched those three a lot more and, thankfully, got a lot more excited about the possibilities!  The projects that we chose seem to be led by people who do understand the difficulties involved with using technology in developing countries where there is not necessarily electricity or the internet, and seem to be really working to meet the felt needs of their target audience! That makes me so happy!  And I'm so glad to experiencing that sense of optimism that is so important in a programmer/developer!  I think we really can contribute to something good here!

Wednesday, January 12, 2011

Beginning to Blog

Welcome to my first blog, and thank you for visiting.  Here I will record my experiences, impressions, and lessons learned throughout my time in College of Charleston's Software Engineering Practicum.  I admit that I am a bit shocked to find myself at the end of this degree so quickly! How can I possibly have learned enough to be ready for the 'real' world?  But then, I suppose that sense of confidence and preparedness is part of what this class is about, so here we go!

At this point I have registered for POSSCON, created my blog (obviously) and joined the class wiki, and completed the first reading assignment.  I am happy to say that after completing the reading assignment, I am more open-minded about open-source software than I was at the end of the last semester.  Maybe I just needed a few weeks away to be refreshed in order to regain a sense of optimism!  I have no doubt that I will learn a lot through this class regardless of how much I feel like I've contributed to any project.  Here's hoping...