Monday, January 25, 2010

What the Elgg?

This past week, I've been researching content management systems and social network plugins to base our dorm energy competition on. I eventually got to the point where I felt using a large CMS like Joomla! or Drupal was probably more than what we really needed. There is a lot going for Joomla! and Drupal. The developer base is immense and there's no shortage of documentation. However, I think we would need to do a lot of customization for the competition and we'd need to learn how the code is structured. I'm guessing there's a lot of code in Drupal and Joomla! that we'd need to figure out.

I've been leaning toward social networking engines and plugins like CommunityEngine and Elgg because they are designed to be customized to our liking. These plugins may not be nearly as popular as Joomla! or Drupal, but they have a fair amount of documentation and activity. Since they aren't as complicated as CMSs, I felt that I'd be able to produce results quicker with a plugin rather than a full fledged system.

The plugin I chose was Elgg. There were several contenders, but Elgg has an active community and development is still ongoing. Elgg turned out to be a really choice because it's easy to implement some of the mockups we have. Elgg allows users to attach widgets to their profile and dashboard (the dashboard is what they see when they log in), which is very similar to the mockups we have.



Mockup and Elgg Implementation (in progress)

That's not to say that there weren't a few headaches. Even though I had Apache and PHP set up on my Mac, I still had to do some debugging with the Elgg install to make sure the appropriate ModRewrite rules were in place. Then was learning the framework, which is a little tricky. Elgg is designed so that the core functionality never needs to be modified. Rather, we write plugins that override the core's views and objects. It's taking me a little time to get up to speed, but I'm starting to feel more comfortable with it. As you can see in the mockups, I'm able to add in widgets and change some profile fields. I also overrode the header to add additional text (links to be added later).

Right now, I'm trying to wrap my head around the data model used in Elgg so that I can add actions and commitments to the widgets. But I'm hopeful that I'll get something kind of working by the end of the week. I'm actually more interested in what other people come up with since we're attempting to create prototypes using different CMSs/engines/plugins.

Monday, January 18, 2010

Starting From Scratch

The reason I switched projects from my iPhone application to Philip's work is that I'm interested in this dorm energy competition that he wants to have. This idea isn't exactly brand new. Other universities have had dorm energy competitions before. I'm more interested in the social networking aspect of the dorm energy competition. Because we are providing energy data for each floor in the dormitory, members of a floor can influence each other in reducing their overall usage.

Right now, we are still deciding on a technology to use in creating this social networking site. We could build it from scratch using one of the many web frameworks out there. However, our development time is somewhat limited. This application needs to be ready by the fall semester (August 2010). While I am comfortable using Ruby on Rails, getting other programmers up to speed would take some time. Our current approach is to investigate CMSs like Joomla! and Drupal and use one of those as our starting point. We still need to get up to speed on a new framework, but we'll have time due to the fact that most of the functionality we need will be already implemented.

The first CMS I investigated was Joomla! While I have heard of Joomla and CMSs, I never really investigated them until now. There's a wealth of information on the Joomla site and numerous other sites devoted to extensions. I found some of the things we were looking for, like an LDAP extension (so that users can use their UH login to authenticate) and an extension that allows subcategories for content (we hope to arrange the content based on a hierarchy that starts from the user's dorm floor and goes up to the entire state).

Of course, there's no better way to familiarize yourself with a piece of software than to download it and try it out yourself. It took a little bit of command line configuration with Apache and PHP, but I eventually got it to work. I plan on doing some digging around in the code to see if I can make changes.

Another interesting thing I found was the Community Builder plugin. This seems like it will provide most of the social networking functionality that we need. I haven't tried installing the extension yet, but it's something to look into.

I also started to look at Plone. Two websites in the department (the ICS website and the CSDL website) both use Plone. I'm a little hesitant to use Plone mostly because these two websites look almost identical. However, there are a lot of themes available for download. I also noticed that they have an LDAP plugin. I'm still looking into this CMS, but it seems like it has potential. Also, I've always wanted an excuse to learn Python (which is the language used in Plone). I'll have to ask Philip and see what he thinks since his lab is one of the sites that uses Plone.