Step 1 Building the Project Code

Time has finally come to begin our team’s main project. The first step is to build and install the source code for the project. In this case Drupal. After going online to Drupal’s installation site our team decided that Drupal 7.10 was the best choice for bug development. The latest development version is 8.00 but 7.10 still needs plenty of polishing so we picked the more stable choice. Once on the site I reviewed the thorough installation instructions regarding Drupal installation.

Drupal allows you to download either a tar or zip file of the source code to begin with. Then the code must be placed on a website which will act as your testing environment. For this step, James gave us use of his fusionro website and created a subdomain for the team. He placed these files onto the web page so that we can upload our bug fixes to it to test out and demonstrate. In order to move files however, we needed to choose a file transfer system. For this task we chose filezilla.

After opening filezilla, I logged on to the site using the credentials provided by James to look over the source files and php files to see what all Drupal contained. It was my first look at a FOSS project’s source code in PHP as well as my first time seeing source code from such a well maintained project.

But we are required to have the code built ourselves, and more importantly we need to be able to do it on our own in case we do not have an internet connection or because we want to play around without messing up with the official version. To do this we have to setup a home server to play with Drupal.

As mentioned on the wiki I took the following steps on my Linux computer.

  1. Download and install LAMP. (Vertrigo is a LAMP package)
  2. Download Drupal.
  3. Unzip the archive and rename the extracted folder to “drupal”.
  4. Open terminal and copy the “drupal” folder to “/var/www”.
  5. Open an internet browser and enter the URL: http://127.0.0.1/phpMyAdmin
  6. Enter the user and password that you created through step 1. Under “Create New Database”, type in “Drupal” and hit “Go”.
  7. Open and internet browser and enter the URL: http://127.0.0.1/drupal
  8. Follow the instructions form the wizard and it will finish the setup for Drupal automatically.

I performed all these steps without any stumbling blocks along the way. Drupal completed its setup and the code was built. Step 1 of our main project was complete. Time to find our first bug fix.

Advertisements

Freeciv Experimentation

Today’s assignment was to do a simple assignment in our open source online book. Appearances can be deceiving however. For this assignment we had to build a program called freeciv from source code using a step by step guide. Now there were two apparent problems when I first looked at the guide. For one the guide is two years old so a lot could of changed with freeciv and its dependencies since then. Also the guide is a loose guide in that it only accounts for major problems not small ones. Instead the author encourages you to just google answers instead of providing advice on them himself.

So I downloaded the files using subversion to my machine with no problems. I opened the install file and read the requirements for the program. So I started to go through these requirements one by one while looking at the author’s instructions. I check for the gcc package using rpm and it says no package found. Well that is no problem I can just use yum to install it. I type in the yum install command and it says there is no such package as well… how peculiar. After that I double check my commands and authority to make sure I am root. I then start searching the net for the issue. Unfortunately no one seemed to have this problem. I then saw that there is a way to verify ‘make’ being in your packages. Using ‘make -v’ I see I have make. I try to duplicate the command with gcc: ‘gcc -v’. Presto! There is a version of gcc on my system, but why didn’t yum or rpm see it? I decide to ignore it and keep going for now. As I try to fulfill more requirements I keep getting the no package found error. Yum could not find anything.

At this point the frustration kicks in. I scour the internet for problems with yum and find nothing relating to my problem. After two hours of searching, I review the instructions and think back to what I noticed on the various forums I visited: red hat and fedora. Don’t tell me… wait for it…. Yep! I did not realize yum is for fedora users only while I am on an Ubuntu system. So that whole time I should have been using apt-get to install all my necessary packages not yum. Time to try again. I start succeeding with a few packages (autoconf and gettext) but then I see some are not found again! Knowing I am in a different system I start looking up these packages for Ubuntu. They are under different names of course! So with haste I start looking up each missing package and installing.

Finally I have all the packages. Time to to use autogen.sh. Success for the first few minutes. It is finally building! After a few minutes I sigh dejectedly as I see another failure. The author even mentions the problem, gtk2 needs to have its dependencies installed using a develop version. Back to Google. In the following few minutes I found the package I needed and restarted my autogen.sh. This time to my elation there were no failures. I finally saw the “type make” line. I slowly key in make in anticipation. After hours of work the source code is finally built. I push the enter key. The make begins and with this step I had completed the assignment.

I am confident the lessons learned in this assignment will assist me in building our team’s project code this weekend.

the Road to Repositories

For our team’s project we will be using subversion as a version control tool. Subversion is a site that hosts files that can be uploaded and downloaded from repositories between users (if access is granted to them). So today I installed subversion on my main computer, which is windows based, and I installed it on my laptop which is running Ubuntu (linux).

 

The windows subversion installed smoothly and is intuitive to use. It has an integrated GUI that works with the window explorer. The linux subversion was also easy to install from the linux software management center. It has a stand alone gui called rapidsvn. This GUI is a little more tricky than the windows version but still easy to manage and use.

 

On the project end. The team is going through the documentation and preparing to install the source code and have our first successful build. We are also discussing which module to bugfix first. In Wednesday’s class we will set up a time to meet and compare our experiences with the project code installation as well as what modules we would like to work with on Drupal.

Reporting in

This weekend our team met on Saturday and discussed our plans for Drupal. We constructed a team report and developed ideas about what we could pursue within Drupal as a main project. Below is a copy of the team report posted to our team’s wiki.

Drupal


Drupal is an open source, CMS (Content Management System) for websites. Websites that are “content heavy” such as news, blog or media sites usually rely on a CMS in order to post, organize and update their content. The genius of Drupal, which sets it apart from other CMS’s is that it is very dynamic and flexible yet remains simplistic. Drupal uses what the developers have termed modules that serve as plugins to the website that perform specific functions such as updating news stories or posting blogs. However, Drupal is based on “manageable abstraction” which basically means that these modules, because they have all been written with certain standards in mind and connect to an underlying interface, can easily be taken apart like puzzle pieces and then put back together in order to create a completely new and original module. This allows the website developers to easily and effectively combine plugins in interesting ways with functionality that otherwise would not be possible without creating (or hiring someone else to create) a new plugin.

Members


Founder

  • Dries Buytaert (Also the founder of Acquia and Mollom)


The rest of the members are purely within the community. There are no core developers or managers of Drupal at this time.

History


In the year 2000, a Dutch student, Dries Buytaert, decided to create a message board as a way for him and his friends to communicate at his university. Once Dries graduated in mid-2000 he wanted to maintain the message boards so his uni friends could stay in touch. So Dries decided to rename the site to “dorp.org” but due to a type named it “drop.org”. After the change of name, more and more people started posting on the message boards and slowly but surely the discussion of the boards turned towards web development. After a few months, these discussions turned into hard projects and were tested out on “drop.org”. Then in January 2001, Dries released these experiments in web design as an open source software package known as “Drupal” under a GNU license. The name is derived from the Dutch word “druppal” which means drop. As of today the latest version of Drupal is 7.10 released December 25th of 2011.

Source: Drupal History

How Drupal Works


Drupal uses a layered system shown below.

external image drupal_flow_0.gif
image reposted from: http://drupal.org/node/265726

  1. The first step are the nodes, which is essentially your input data.
  2. Above this layer are modules. These modules are used to modify and mold the data into a usable mechanism such as a clock or a calculator.
  3. The blocks and menus layer is the GUI of your modules. It provides outputs for modules and displays menu options for the end user.
  4. The fourth level is a security related level. In permissions the ability of which users are allowed to see your content is set.
  5. The final layer is template. The template is where the format and visuals of your entire site go. It is also where all these pieces of your site such as modules, menus, xhtml, css sheets, and php come together to form your final product.


Source: Drupal Overview

More on Nodes


Nodes are a key concept in Drupal’s design. It is Drupal’s way of storing information. Each detail such as the price of a car or the author of a blog post is considered a node. Because the data of each Drupal site uses the node system. Modules can easily manipulate the data and are much more portable in nature. They can be used in a variety of manners instead of being limited to a specific purpose. This uniformity is one of the great features in Drupal.

Source: Drupal Overview

Project Ideas


Our team has agreed that the best option for this term due to time constraints is bug fixing. Drupal uses modules as add-ons for websites essentially. These modules many times contain bugs that need fixing, which will be our teams main focus. We hope to use these bug fixes as a way to become familiar with the program and the process of communicating with the developers. Once we begin to feel comfortable, we plan to either create our own module to contribute to Drupal, or add on to an existing module.

Setting up Drupal


Installing Drupal is very simple. In order to even run Drupal there needs to be a dedicated web server. The web server needs several different applications such as MySQL, PHP, and Apache. Once these programs are installed, the source to Drupal needs to be pushed over to the web server. The source comes bundled together in a ZIP archive or can be downloaded from Drupal’s repository. Once this is done, using a web browser and directing yourself to the location of the Drupal server leads you to the install wizard. The wizard will make sure the required programs are installed and are at good versions, that the file structure is correct, and continue to ask for further user input to complete the install. The wizard will also help create an administrator account (nick named root) which will be used to manage the site.
The modules and the core on Drupal have separate CRON jobs which check for updates. The installation of modules is also a simple task. The administrator has two options, to either upload the ZIP archive from the computer or provide the link to the ZIP archive. Drupal will decompress the file, read it, and install it automatically. Just as you would uninstall a program from a computer, Drupal gives the options to disable or either uninstall modules.

Source: Drupal Installation Guide

This week we will decide which module we will fix a bug for to meet our deadline for our first bug fix. I will update our progress on determining a module this Tuesday.

IRC and Mailing Lists

Today’s task was to become a more active member in the community of our team’s selected project. In the last post I described how we had chosen Filezilla as our main project. Since then, our team has decided to move into a new direction and try Drupal instead. The reason for this switch is because Filezilla was causing too many problems during setup. Building the source correctly was more complicated than anticipated. Due to these constraints we all opted to go to our number two choice, Drupal.

As per the header of this post, IRC is one of the main goal’s of becoming involved in a FOSS community. IRC allows for quick communication between developers and contributors in the open source software development process. Using MIRC, I registered to the freedom node, and joined into a few of the Drupal IRC channels. The main channels I entered were the #drupal, which is the lounge channel, and #drupal-contribute, which is the channel for contributors. So far though the channels have been quiet. I am sure a part of this reason is that I am joining at about 12am when a lot of folks have most likely gone to bed. I will be trying again tomorrow afternoon to see if the traffic is busier.

The second step to becoming a part of the Drupal community was registering for the mailing list. Luckily, Drupal has categorized all of their mailing lists based of the needs of the user. The mailing list I joined was the development mailing lists, which lets you post threads and send mail straight to Drupal core developers. This tool will be very helpful in getting advice on advanced issues that may arise while coding. Below is a confirmation email showing my addition to their mailing list.

“Welcome to the development@drupal.org mailing list!

To post to this list, send your email to:

development@drupal.org

General information about the mailing list is at:

http://lists.drupal.org/mailman/listinfo/development

If you ever want to unsubscribe or change your options (eg, switch to
or from digest mode, change your password, etc.), visit your
subscription page at:

http://lists.drupal.org/mailman/options/development/shdavidson90%40gmail.com

You can also make such adjustments via email by sending a message to:

development-request@drupal.org

with the word `help’ in the subject or body (don’t include the
quotes), and you will get back a message with instructions.”

Next time we will be taking a look at Drupal in more detail, and delving into ideas about specific project ideas, check back this monday for an update on project progress!

No Stone Left Unturned…

This week our team had to meet for our first challenge: project choice. So we met on Sunday (1/15/2012) to discuss the possibilities and to create a list of projects that we would like to work on. This list was formed from the individual projects we chose for our class exercise due last Friday.

Our team’s list was narrowed down to:

Filezilla- FTP software that is cross platform

Open Remote- Allows user to control hardware devices

Drupal- Content manager used in building websites

The first on the list is Filezilla. What I like about Filezilla is the activeness. The software is constantly updated, has constant support (forums, IRC), and thorough documentation. Even better is that it is written in C++ which is familiar territory for myself. However this plus is also a con because not all of our group is very familiar with C++. Another draw back to Filezilla is that it is very complicated to build correctly. Luckily, our team mate James was already on the case. He had chosen Filezilla originally and was able to send out step by step instructions on how to build the code on a Linux system. Mentioning systems, because Filezilla is cross platform it also supports multiple platform development guides.

Open remote was also an interesting choice. Being a mobile application, this project would be going into some unfamiliar territory for myself. What makes this project so appealing, though, is that a lot of us in the group are interested in mobile development, and this application certainly would be a great experience. Considering the group’s limited exposure to mobile development, we would want to stay in a familiar language. Android development uses java as its coding language, which just so happens to be the language our group is most experienced in.

The last project brought to the plate was the Drupal project. Drupal shares a lot of benefits with Filezilla in terms of support. The content is very recent and always updating, and the community is well experienced and active. The drawbacks though are more like Open Remote, Drupal is developed using PHP, which we have only one member that is very familiar with PHP. What makes this con more difficult is that most of the team members are not only unfamiliar with PHP but with any web based language altogether. Drupal would be a significantly uphill battle in terms of understanding and design.

So our team finally decided upon Filezilla as our main choice. This choice was made on the fact that Filezilla the closest project to meet both my personal and our team requirements. The community is strong, good documentation, irc, and up-to-date content. The con from this project was C++, but compared to learning PHP, C++ should be easier for our team members to pick up because it is like Java. Java, being our most familiar language.

As we install and delve deeper into Filezilla we will see if this choice was the right one. For now let’s get installing and building!

The Search for FOSS

Today, began the search for a suitable FOSS project for our group to contribute to. After coming to the main FOSS database I searched for good projects to work on. Based on our groups discussions Wednesday, the optimal project is one the is either in python or java. Also good documentation and an active community is a significant plus. Personally I am searching for an open source project within my interests of mobile development, video game development, or scientific development (math/medical).

The project I chose was Gramps. Gramps is a program that allows users to record genealogical relationships between people. Basically it is a sort of custom relationship tree maker. The benefits of this project are numerous. It is well documented, still active, and includes a bug tracker. Gramps also uses python as its development language. These features meet more than our group’s set requirements, Which makes this project an excellent choice.

Now it is time to install it. The installation process is a wonderful chance to see how intuitive and organized the documentation and design of the Gramps program is. I successfully installed their recommended plug-in for eclipse: pydev. However, many other alternatives are just as good according to their wiki. These include scribes, pycharm, and geany. With the plug-in function working I downloaded the source code from the developer’s svn and opened it using eclipse. On that note I am a huge fan of eclipse, and have decided to stick to the windows platform so that I can use this IDE. Linux also works for development (I would recommended geany in this case). Tomorrow the group will discuss which platform and project would be best to use. It is important the team uses the same platform to reduce the chance of side effects in our code, however unlikely they may be.

I really like this project for its multiple boons and few drawbacks, if any. I am sure this pick will be the best for our groups talents and requirements. I will update the choice we have made this weekend and begin the designing process.