Posted on

Project Management / Online Collaboration Tools Review

If you’ve been following my threads for the past month you’ll know that I’ve been searching for a new project management and online collaboration tool for a new company that is launching in early 2015.   For the past year I’ve been using Trello for Charleston Software Associatesbase projects.

As a single-man operation with occasional support from outside contractors, Trello worked well.  For a larger project, however, it quickly became overwhelming.  10 lists, 300+ cards.  It was a nightmare to find what people were working on, what should be done next, or just finding an important document. The quest was on to find a new task and project management tool.

After reaching out to a half-dozen of my highly-respected CTO-level peers I’ve come to a realization.  There is no good online collaboration / project management tool.   The answers that came back often were accompanied with “it seems to be working OK, I guess” or “we never found one we really liked”.   This is from people that are running operations with anywhere from a dozen to hundreds of employees.   They’ve done their homework.    Nobody came back with a “you must use THIS, it rocks”.

What Are People Using?

It seems a combination of tools, many of which I’ve already explored.  Most corporate teams are using a project/issue management tool for the tech team, a basic task management tool for the rest of the team, a group chat application, and Google Docs.

JIRA for Tech Issue Management

JIRA was a common refrain, but only for the technical team and usually directly related to code development and issue tracking.   Apparently it is good for tech geeks but not simplistic enough for executive and management teams.   Having used JIRA in the past, I know where they are coming from.  It is great for complex technical projects where code commits, issue tracking, bug reports, and other software development lifecycle (SDLC) tasks arise.  Not good for general business task/project management.  If you need a PHD in computer science to use a web app it is not a good tool for the entire business team.

Basecamp, Trello

For task management there was no clear answer.  The answers were different from nearly everyone that responded.  Basecamp was repeated twice. Trello had two “votes”.  People are all-over-the-map on this one.  Apparently there is not a single outstanding task/project management tool for executive teams.  This is where everyone seems to be making a compromise between “too simplistic” or “overly complex”.   Personally I think Basecamp could run away with this category, but it is readily apparent that they have been established for so long that they are no longer in competitive development node; meaning no significant new features will be released any time soon.

Skype, Google Hangouts, HipChat, Slack

Group chat was another area where I received a different answer from everyone that responded.   Skype seems to be the go-to default for many people I’ve worked with in the past, but in my small sample-set there was literally not a single repeat recommendation.  Personally I prefer Google Hangouts.  Their recent updates work far better on a variety of devices and OS deployments.  Google Hangouts has also added a quick-download for doing live broadcast streaming, audio conference calls, video conference calls, and screen sharing from a fairly simple UI (they call it “On Air”).  For my deployments Google Hangouts works far more consistently than Skype.  Skype, however, seems to be the defacto standard as 90% of remote teams I work with all seem to have a Skype account.   I think Google Hangouts with their free International calling minutes and improve broadcast/screencast options will soon make a dent in Skype’s dominance.

Google On Air provides broadcast live video, live screencasts, conference calling, video conferences, and more.  Too bad they make it a "hidden" feature.   Go to Google Plus and start a video chat.  It's easy if you find the link!
Google On Air provides broadcast live video, live screencasts, conference calling, video conferences, and more. Too bad they make it a “hidden” feature. Go to Google Plus and start a video chat. It’s easy if you find the link!

Google Docs

This is the only option that was fairly ubiquitous.  NOBODY mentioned Microsoft Office as an online document sharing/collaborative editing tool.  Seems like Google has run away with this category much to the chagrin of Microsoft.   Microsoft Office was, and still is, the desktop document editing standard.   In the online world, however, they have ceded this position to Google Docs.   From my personal experience Google Docs has a long way to go to match MS Office when it comes to document formatting and related tools, but for online collaboration is is simple, free, and easy to setup.  Microsoft makes it too difficult and costly to get started with their online collaboration tools.  The other downside is it would take a month to port the hundreds of documents from my Google Drive to the online MS Office offering.  Bottom line, if you are doing online document sharing use Google Docs.   Another bonus –  Google Drive, where you Google Docs live, integrates with all of the up-to-date web apps including most of those noted above.

THE Online Collaboration Tool

I’ve not found THE perfect online collaboration tool.   It simply doesn’t exist or has been created but is so low profile it isn’t on any radar including Google search.   I’ve tried over a dozen products at this point and have run into a myriad of issues as noted in my past articles.

As an aside, I have migrated my personal and CSA tasks from Trello to Asana as I have outgrown the simple format of Trello.  However Asana is not a perfect fit but is my compromise solution as anyone on my CSA team will be technophiles and won’t need training on using Asana.

The trials and tribulations of searching for the right tool included:

Trello – too simplistic for large projects.  Basecamp – search and document attachments suck.  Asana – too confusing for most users and no project-level tasks/docs is a major setback.   Teamwork – too complex.  JIRA – too tech-centric and too complex.   Glimp – too young and buggy.  There are a dozen others.    Including recent tests from companies pitching their wares to me on Twitter such as Proofhub that starts off with a blank screen after signing up; not a confidence-inspiring start.

ProofHub Initial Sign-On Screen
ProofHub Initial Sign-On Screen

Seems like online collaboration and project/task management is a market ripe for a new entry to take over the market.

Posted on

Back to Basecamp ; Asana No Longer Viable

That didn’t take long.   After spending a few days with Asana my team decided that they could not work with that project management tool.   After spending several hours on training email, live screen casting, and phone calls I agree.

Deal Breaker : No HTML Formatting

One BIG issue was the complete lack of HTML formatting including inline image retention and CSS styling of content that is pasted into discussions and descriptions.  Asana has the annoying habit of stripping any-and-all HTML elements down to bare text.    Cleaner and more consistent interface?  Sure?  Boring as heck, hell yes.  LOSING CRITICAL ELEMENTS like charts and graphs that were part of the original content?  A deal breaker.

Asana’s response to that issue:

NOV 11, 2014  |  05:23PM PST
Hi Lance,

Thanks for the request for HTML formatting and hyperlinks in discussions of Asana. We don’t have these additions planned for the near term, but we will note your suggestion to help inform future product developments.

We appreciate knowing what you think about the product. Let me know if I can help you with anything else.



No Project-Level Documents or Discussions

I told my team that EVERYTHING needed to be attached to a task.  It is the only way to get documents into the system or to hold discussions.    After a few days it became clear that this is a really horrible design flaw.   A perfect example, creating the pitch deck.   That was the first task “Finalize Pitch Deck”.    It had all sorts of relevant comments and discussions.   Most importantly it had the in-progress and eventually FINAL Pitch Deck attached to it.
Guess what?  You CLOSE tasks when they are finished.
Guess what else?   My team started asking almost immediately “where the hell did that pitch deck link go”?   Now try explaining “go find completed tasks, it is hidden in there, no go find the task that is one of hundreds completed this month to find THE task with THAT document”.    A nightmare.
One of the things we need is place to store and find final versions of documents.  You know… the type of documents that perpetual beyond the life of a single task.    Things that are project-level or even corporate-level documents.      Asana completely fails in this regard.
Asana’s response to that issue:
NOV 10, 2014  |  03:39PM PST
Hi Lance,

Thank you for writing in with your request for project-level attachments. We don’t have that functionality at this time. I will note your feedback for the product team to consider.

As a workaround, you can also find all attachments across multiple projects using Search Views (

Please let me know if you have any other questions or suggestions.



The Other Stuff

There were also the “smaller” issues.  Important but not deal-breakers.  Things like…

Calendar Times

Adding times to event due dates so that the “Meet with Cecil and execute contract” task will be USEFUL when syncing to Google Calendar.  Without a time you end up creating TWO calendar entries, a day-long entry from Asana (the only option) and a time-specific entry in Google.   Asana’s response:
NOV 11, 2014  |  11:45AM PST
Hi Lance,

Thanks for the request for time options with due dates. We don’t currently have this on our near-term roadmap, but might consider adding this in the future.

In the meantime, I would suggest including this information in brackets at the beginning of task titles for visual clarity (see attached screenshot):

[2:00 – 4:00PM] Long walk on the beach.

Let me know if you need anything else.




The ability to add [My Website]( to make simple text links would have been nice, especially for the 255 character URLS some sites create these days.   The response?
NOV 11, 2014  |  05:19PM PST
Hi Lance,

Thanks for the detailed request for markdown support in Asana.

While we don’t have related changes planned for the near term, we will consider it and note your suggestion.

When we receive a request for a feature that’s not on our current roadmap (usually because we’ve discussed it and decided to save it for later), we label the inquiry so that when we next set priorities or decide to work on that feature, we can easily find customer requests. We prioritize on a number of factors beyond the number of requests (including staffing, cost, overall product goals), but that is certainly valuable information and we appreciate hearing your case.

We appreciate knowing what you think about the product, and your experience as a new user.

As always, you can review existing functionality in the Asana Guide:

Let me know if I can help you with anything else.




At the end of the day I did not find Asana a bad option.  I liked it better than Trello and Basecamp in many ways. However it is not about me, it is about making my team more productive and giving them the tools they need to communicate more efficiently.    The resounding vote was “use Basecamp it is far easier”.    That is saying something as they had used Basecamp for exactly two days and Asana for exactly two days and easily voted for Basecamp.
Given the fact that I spent a total of 6+ hours training my people on Asana and 15 minutes on Basecamp, the choice was clear.   If we are going to be productive Basecamp was the only choice at this juncture.
Sadly an easy-to-use yet full-featured project management and online collaboration tool has yet to surface.  I’ve tried dozens and none fit the bill of “easy enough for my executive team without lacking significant functionality”.
Do you have a project management/online collaboration tool you use and LOVE?   Tell me why!
Posted on

Asana Project Management, Close But Not Perfect

After spending the past 2 weeks looking at Project Management tools as a replacement for the overly simplistic Trello, we settled on Basecamp.   Within a week of using Basecamp and not being able to find the content and documents we were looking for in the deluge of newly-added content to the project we decided it was making the team LESS productive.    Time to move on.   After reading another half-dozen articles on Project Management software and what other people found and liked/disliked we decided to give Asana a try.

It looks promising out of the gate, but it is not without its flaws.  Some of those flaws are significant but not significant enough to make it unusable.   Overall we decided that Asana was better at finding and referencing information.   We also liked the near real-time chat feature called “Team Discussion”.  Thus, we are moving to our THIRD project management app within 90 days.   Sadly we are doing so knowing we are making compromises.    For something this important it feels wrong making compromises, but we have yet to find the right app for us.

What We Like

Everything is driven primarily by tasks.    That keeps all content emanating from a single objective-based origin.   However projects are not always so well structured and team collaboration often needs to be more fluid.     Task-centric project management is both a blessing and a curse for Asana.   It is a blessing because you always know to look under a task for most discussions and to find a related document.   It is a curse because some things, like an over-arching project document should not be buried deep inside a task.

The near-real-time updates on the screen are helpful when multiple team members are working on a project.  You can see what other people are saying without refreshing the page.  That is nice.

It is easy to move to other projects or tasks without having to always go back to the main starting point.  Basecamp always seems like you have to “jump back to the beginning” to find what you are looking for.

The search engine and tags are great.   It is far better, and faster, than Basecamp at locating relevant items.  The personal tags on items makes it even easier to find stuff you mark as important to a specific keyword. Very nice.

Tasks can have subtasks.    That is a great feature as the main project can stay focused on primary objectives.  Subtasks and their related commentary get buried in the main task, which we feel is a good thing.


The Shortcomings

NEARLY ZERO HTML formatting in discussions    Grab an article and paste it into Asana; goodbye images, text links, and most of the text formatting.    That is a good way to make most research articles useless as graphs, charts, and related hyperlinks go away.

Asana v. Basecamp Copy and Paste Content
Asana v. Basecamp Copy and Paste Content; Basecamp is the clear winner here. We can live without out this feature, but it will be painful.

Inability to create text-based hyperlinks.  Paste in a full HTTP address and you get a nice link.   Have a long link like this:  and that creates a long sucky message in Asana.  Especially if you have several such links.    Something like this Basecamp Ed Sheeran Article would be far nicer.  Markdown anyone?  Not in Asana.

You can close a parent task even if the subtasks are not completed.  No warning.  Nada.  It just closes out the parent task.    I guess that can be good in some cases, but I would like to at least have a warning come up saying “you are closing this while sub tasks are not completed, is that OK”.

You cannot assign a task to multiple people.    I guess the Asana folks subscribe to the same flawed thinking that Basecamp subscribes to when it comes to project management.   One person is responsible for a task.   That may make sense, such as setting a project lead, but smaller companies often assemble teams where any member can work on, and close, a task when completed.     I want several people to have responsibility for a task.  ESPECIALLY when you have parent tasks with subtasks.

You cannot attach a document to a project.  You can only attach documents to tasks.    That means there are no over-arching project documents.  That is just not reflective of how the world works, even in a pure Project Management sense.

You can only email content to add a task not augment a discussion.   Yes, they are trying to eliminate email.  However when I am traveling the best and fastest method to communicate on my tiny phone screen is a simple email app.   I should be able to subscribe/unsubscribe to  a task or discussion and thus turn on/off the “email spigot”.    However it should be a two-way spigot where I can reply and have it append the ongoing discussion in Asana.



So far it seems better organized than Basecamp, but this is our first 24 hours with the app.    Having already discovered some major shortcomings makes us nervous.    Hopefully we don’t run into many more issues as we’ve already burned enough time on the team switching project management apps.    That is what happens when you are a lean & mean startup that is trying to move quickly.   No time to thoroughly review and test project management apps while we are already speeding down the runway for takeoff.

Posted on

Basecamp Falls Short, Still The Best Option

As the lead on a major new project, Perpetual Media, I have been searching for a better project management app.    For the past year I’ve been using Trello.   Trello is great for simple task lists for myself and for the single-man-show that is Charleston Software Associates.    However Trello falls far short when it comes to large complex projects with a big team, many tasks, multiple documents, due dates, task dependencies and more.

Enter Basecamp

Having been at this software and management gig for two decades, I’ve come across Basecamp many times in the past.    I’ve used it both for my companies and as a consultant for other companies that ran the Basecamp projects.     After a brief search for alternatives I moved the Perpetual Media project from Trello to Basecamp as the project team grew and task management became more complex.  Within 48 hours I had logged a significant number of shortcomings.

Sadly, every time I communicated with Basecamp support they very quickly responded to my inquiries with “Sorry, you cannot do that in Basecamp at the moment.”    Yes, Basecamp support was lightning fast.  That was great.    But fast support is easy when you only need to press the canned “you cannot do that” response button.  Makes it easy to work through an incoming support queue.

What Is Wrong With Basecamp?

Here is my short list compiled in the first 24 hours of use while managing a team of 3 other people that are not as geeky as I.   The biggest problems by far are the TONS of duplicate links and content, disconnected discussion threads, and search that does not always find what I need within the project.

Cannot link existing discussion to new task.

Start a discussion, then derive a task from that discussion.  You cannot make this discussion the default thread for the task.

This is an issue as now any comments made under the task creates a second discussion.  Which leads to the next issue.

Cannot merge discussions.

See above.

Not too mention you cannot merge multiple related threads into a single discussion.

Every Task, Discussion Etc. Creates A New File

Start a discussion, attach a Google Doc file (GD file) i .e. a Pitch Deck .   It adds a file to the file list on the project.

Create a task based on that discussion.   There is no way to reference that pre-existing GD file.    Thus you need to attach the very same GD File, creating a second copy of the GD file.

Cannot Assign Task To Multiple People

Create  a task to assign to a team or a few individual people?   Cannot be done.   Hugely lame.    Should allow for at least assignment to a team.

Cannot Create Subtasks

Create a task that has subtasks?  Not possible.     Good-bye any concept of dependencies or “this needs to be done before that is done” or even “this big task requires these several small tasks be done”.

BC Docs (Notes/Text Docs)  has no indent feature.

Docs, like this on Basecamp, has no way to indent paragraphs.   Or bullets lists so you can have standard bullet indents.

Create a Link in a BC Doc – links  you off-BC

Add a link like this: to a BC note and now every time you click it  you are off BC instead of having it open in a new tab.

Cannot Rearrange Order of Primary Sections on a Project

You cannot re-arrange the page layout of a project.   For example you cannot put the To Do list above the discussions.  As per the above topics the current layout leads to people creating stand-alone discussions first when they should be discussions attached to a To Do item.   Since there is no merge discussions this creates threads about the same topic that are never connected.  It become a laborious process to track down all relevant comments/discussion.

Seeking A Solution

Gahhh…. the more I use BaseCamp the more cumbersome it becomes!   I’ve reviewed at least 6 other PM tools.   Most are overly complex.  BaseCamp is the best SIMPLE interface I’ve found so far.

However, after searching for a phrase I know I had in a discussion and getting 12 WRONG results,  I’m on the PM search again this morning.

Someone, somewhere MUST have made a Project Management Tool that does not SUCK!

Before we make another jump, which consumes far too much energy, I am going to research and setup, and try to get things done in whatever tool I find before inviting anyone to the app.   For now use BaseCamp but I don’t think it will be long-lived.

Based on their canned “sorry BaseCamp cannot do that now” response and how many people I’m finding that have complained about the very same shortcomings for YEARS, I don’t think BaseCamp has any real interest on improving their user experience. Sad for such a good start.

A lesson for PM:  continually innovate & improve or die.


Alternatives To Basecamp

Here are some alternatives I tried.  I did not perform in-depth reviews.  My primary goal is to get a job done.     If something was difficult/confusing when getting started I dumped it.    Apps should be intuitive and get you “out of the gate” without performing 10 hours of setup or reading 12 pages of documentation (yes, I know I MUST improve that for my Store Locator Plus experience for my customers!).   If a project management tool required me to perform ANY setup other than start typing a project name, inviting some people, and typing a task name before using it the project was out.    Here is  what I found.


Pros: Simple account creation, simple setup, good user interface that makes it very easy to start creating “task groups” (lists) and tasks (cards).   Easy to assign multiple people and due dates to cards.

Cons: Hard to find and manage the calendar interface, event/time based entries seem secondary, no good overall document management/pool, no over-arching “view or discussion” for a project as a whole, my users found it difficult to find things.

Bottom line: for a large complex project you quickly end up with far too many cards and lists due to the “task list is king” focus of Trello.   Great for simpler projects and to-do list.  I use it for my personal “do this today/tomorrow/next week” reminders and task management.


I’ve used JIRA in the past.  It is a big complex beast that takes some time to setup.    I didn’t evaluate that tool this time around due to multiple crashes and problems when trying to get it setup as the “next step” in my Bitbucket repository management.   I tried to setup a small team of programmers to help with Bitbucket tasks, but JIRA imported things incorrect, took an inordinate amount of time to configure and setup, and after spending hours on email and live chat with the tech support team to be left with a “we need to look into this” result, I decided JIRA was not for me.   A week later they got back to me to tell me they “reset the project” and “try again”.    Try wasting 12 hours getting it to work for a second time and hope it went OK?  No thank you.

Why I didn’t consider it for this project?   I am familiar with the UI and it  is far too complex for my team to work efficiently in the system.

Software should NOT be training users it should be serving the users silently and without fail.


I signed up for Mavenlink and tried to get my first project and tasks started.   After 15 minutes answering questions to get the project configured, half of the time spent on “set the template and look-and-feel of the project”, I gave up.   Far too much time configuring and “turning dials” rather than “jumping right in” to creating projects and tasks and attaching related documents.   I should not have to decide on the best UI for my users.   They should provide a default and let me tune it later.  I don’t want a tool I need to configure.

There are also far too many buttons and menus all over the place.  This will confuse the members of my team as they hunt for “what to click” to get their job done.

I quickly dismissed Mavenlink due to the “overloaded UI”.


Podio, now owned by Citrix, was written off almost immediately.   It took me far too long to dig around their overly-enterprise 90’s style web menus to find screen shots and information about the Podio product.    Once I found what I was looking for I could tell that simple UX and modern design style was not their strong suit.   They are geared toward large bloated enterprises that are used to 80’s and 90’s style user interface architecture with 3,000 menus and a myriad of complex setup rules that they feel make an app better.    Bigger is not always better.    Sometimes simple works best.


I got a little further with TeamworkPM than some of the other apps I tried.   The sign up was simple and the interface is a decent compromise between overly-complext menu-driven systems like Mavenlink and Podio and the simplistic UI of Basecamp or Trello.    I created projects and tasks quickly but the next major element for my project management tool was adding Google Docs to the tasks.

The failure to quickly and easily attach pre-existing Google Docs to the tasks was a failure.     We use Google Docs extensively as I prefer their collaborative editing and discussion suite over solo desktop-based solutions.   The inability to easily add Google Docs to the project was an immediate set back and terminated my evaluation of TeamworkPM.    When I go to files/add files it should provide me with a Google Docs or Upload option.   Basecamp nailed it.   TeamworkPM would do well to emulate that part of the Basecamp experience.



Still Searching

I am on the quest to find the right PM for  us.     I need  a simple UI.   I need to be able to add my team members, create a project, assign tasks, and attach Google Docs with ease.     When I attach a document or start a discussion I should not end up creating 300 duplicates of the same content.   Finally I must be able to search and find the relevant content within a project or across all projects with ease.

On to some more project management app reviews.    I may even post about my findings if I find the right one or add to the list of failed attempts.

Have a suggestion and not a “pitch”?   Share!

Posted on

Daily Update, Trello, BrowserStack

The past few days I’ve been mostly working on client projects related to the plugins, helping people with their websites and server issues, and dealing with my own server issues.   Along the way I’ve learned some new tricks.

Tagalong 0.9

Tagalong version 0.9 is in development.  I am working through some reported bugs and trying to iron out the kinks.    This version also has patches to make it  work with SLP version 3.10.4.   This is where my focus will be until I get some of the more notable bugs squashed.  As soon as this is ready testing will ensue on SLP 3.10.4, EM 0.7, and Tagalong 0.9.

This version will require SLP 3.10.4

Store Locator Plus 3.10.4

Store Locator Plus 3.10.4  is entering testing.  There are no notable features but there are hooks and filters as well as minor updates that help make a new Enhanced Map v0.7 feature come to life.

When this version is ready you will need to update Enhanced Map to version 0.7+ and Tagalong to version 0.9+.

Enhanced Map 0.7

This version is entering testing.  As noted previously, the most notable feature of Enhanced Map 0.7 is the ability to set per-location map markers.

This version will require SLP v3.10.4

Store Locator Plus 3.11

This is in development.  Future release date is not yet set.    I am trying to get a version ahead of the public release that is in beta/testing in order to give the beta group more time to test an upcoming release.   This version has some notable improvements to how the plugin information is loaded and passed to the JavaScript process on the UI.  This lightens the load on the server when processing the map page load.  This all came about due to the Enhanced Map 0.8 tweaks.

Enhanced Map 0.8

Another future release.  Thus far the notable feature is the “center_map_at” shortcode attribute that a few people have asked for.    It was a lot of work to get this wired into Store Locator Plus, which uncovered some of the produce inefficiencies in the code logic that loads the JavaScript.


While exploring Easy Digital Downloads I was introduced to Trello.   I’ve only been playing with it for a few days and already love it.  It has a super-simple interface for task management.    If  you are juggling a half-dozen tasks at once, this is a great list management tool.   I already like how it organizes my thoughts and visually lets me see what I’m working on which allows me to easily see dependencies and move tasks/projects around in the queue.  It is all AJAX with a great drag-and-drop interface.  I’d love to emulate some of this user experience into Store Locator Plus but I need to up my UX skills first.


I discovered BrowserStack while testing IE8 for a client.   They have customers that are complaining about compatibility with IE8.    There are some issues with the location sensor on IE8 that I thought were resolved.   It looks like SLP 3.10 through 3.10.3 have an issue which is resolved in 3.10.4.     Using BrowserStack is a simple solution for doing multiple browser tests on different platforms.  You can get a 3-month free trial if you follow the link from the website.    It is costly, at $20/month.   However if you don’t want to fire up a dozen virtual machines to test IE8 on XP or IE10 on Windows 8 then this may be worth the expense.

Posted on

Redmine Wiki Formatting with Textile

We use Redmine rather extensively for managing both our consulting projects and our commercial product releases. While the default commands listed in the Redmine help pages are useful, here are some additional formatting tricks to help you get the most out of your Redmine posts. This also works quite well in forum posts and issue reports.

Formatting a Paragraph

These simple tricks work quite well for headers as well, simply replace the p with h1, h2, or h3.  Remember to put a space after the period that ends the formatting directive.

Align the paragraph to the left (default):
p<. The paragraph text.

Align the paragraph to the right:
p>. The paragraph text.

Center alignment:
p=. The paragraph text.

Left side indent by 1em (character):
p(. Paragraph text here

Left side indent by 3em (characters):
p(((. Paragraph text here

Right side indent (margin) by 1em (character):
p). Paragraph text here

Forcing some style into Textile:
p{padding-left:12px;}. Paragraph text here

Posted on

Upgrading Redmine From 8.6 to 9.3

After more than a year of using Redmine to help us manage our projects it was time to upgrade.  Redmine helps us manage our bug lists, wish lists, and to do lists.  It helps us communicate with our clients effectively and efficiently using a web based media in a consistent format that is easy to use for both our developers and our clients.  However, during the past year there have been several changes including the significant upgrades that came out in v9.x some months back.   Our busy schedule kept us from upgrading as each new release came out, and sadly we had fallen far behind.   This past weekend we decided it was time to upgrade.   The notes below record some of the problems we ran into and outlines how we resolved them.  If you are using Redmine for your own projects we hope this guide will help walk you through a major version update of your own.

These are Cyber Sprocket’s notes from our upgrade.  For more information you may want to visit the official documentation site.

Our Environment

The environment we were running before upgrading to Redmine 9.3:

  • Redmine 8.6
  • Apache 2.2.7


The first thing we ALWAYS do before upgrading a system is to store a local copy of the database and the source code.  In order to make the archives as small as possible we post a note on the system that Redmine will be offline and at the posted time remove all the session “crud” that has built up.   The process includes a mysql data dump, a file removal, and a tarzip.

  • Go to the directory ABOVE the redmine root directory:
    cd /<redmine-root-dir>; cd ..;
  • Dump MySQL Redmine data:
    mysqldump –user=<your-redmine-db-username> -p <your-redmine-databasename> > redmine_backup.sql
  • Remove the session files:
    rm -rf <redmine-directory>/tmp/sessions/*
  • Tarzip:
    tar cvfz redmine-backup.tgz redmine_backup.sql ./<redmine-directory-name>


Updating Rails

We realized after some back & forth that our RoR installation needed to be upgraded.  Redmine 9.3 require Ruby 1.8.6 or 1.8.7 (we had 1.8.6 luckily) with Rails 2.3.5 (which we needed to upgrade) and Rack 1.0.1 (which we never touched).

gem install rails -v=2.3.5

Fetching 9.3

We could not perform a simple svn update since we are on an 8.X branch.  A new svn checkout was necessary.  We opted to move our old Redmine install to a different path and do the checkout in our original location:

svn checkout  /redmine

Generation session_store.rb

Later version of Redmine (even 8.X versions beyond 8.6) require a secret key in order for the session system to work.  If you don’t have this you can’t login.  After much trial & error we found that the following command WILL WORK if you have the latest Redmine source (Fetching 9.3) and the latest version of Rails (Updating Rails).   There is not file named config/initializers/session_store.rb in the code repository, it is created by the following rake command:

rake config/initializers/session_store.rb

Updating The Database

The database then needed to be migrated:

rake db:migrate RAILS_ENV=production

Database Upgrade Errors : Migrating Member_Roles and Groups

While performing the database update we immediately ran into a couple of errors about a table already existing. Turns out a simple renaming of the tables fixed the problem, no apparent harm done.

The error message was:

Mysql::Error: Table 'member_roles' already exists:

The fix was as simple as logging into MySQL from the command line and renaming the table:

mysql> rename table member_roles to member_roles_saved
mysql> rename table groups_users to groups_users_saved

Switching from CGI to FCGID

It turns out that RoR does not play well with plain ol’ CGI processing via Apache when running Rails v2.3.5.   We ended up having to upgrade our Apache server to enable mod_fcgid and tweaking our new Redmine install to use that.  We started by following this excellent guide go running Redmine on Apache.  Below are our notes about this process to help save you some time:

  • Do not install fcgi, instead use Apache’s mod_fcgid
  • chmod 755 /var/log/httpd so fgcid can run from Apache and access the socks directory it creates there
  • Modify <redmine-directory>/public/.htaccess to prevent looping with mod_rewrite

Installing FCGID

“Official Apache mod_fcgid”: this is the Apache version, seems newer and we had more luck with this than the Coremail hosted version below.

Fetch the code

cd /usr/local/src/
tar zxvf mod_fcgid.2.3.5.tgz
cd mod_fcgid.2.3.5

Configure and Install

make install


chmod 755 /var/log/httpd
service httpd restart

Install Ruby Gem fcgi

You will need to tell Ruby to work with fcgi for this to work:

gem install fcgi

Errors Installing fcgi gem

If you see this error:

Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

You probably need the fcgi development kit. Get it from here, build it & install it… THEN do the gem install fcgi again.

Prevent Redirects

You may end up with looping with mod_rewrite if you had a CGI version installed first.   We commented out the non-fcgid lines and that kept things running smoothly.

Edit <redmine-directory>/public/.htaccess

Comment all the lines for the Rewrite rules for the dispatcher except the FCGI rule for fcgid

#<IfModule mod_fastcgi.c>
#       RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
#<IfModule mod_fcgid.c>
       RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
#<IfModule mod_cgi.c>
#       RewriteRule ^(.*)$ dispatch.cgi [QSA,L]

Getting Errors With FCGID?

This is a very common error.  For some reason Ruby + mod_fcgid do not always play well with each other.  We have two near-identical servers running CentOS 5, Apache 2.2.x, and the same exact versions of Ruby + Rails + gems installed.   Yet on one server Redmine works fine.  On the other we get this:

undefined method `env_table’ for nil:NilClass

The “magic pill” seems to be running Passenger.  While we didn’t believe this at first since we got it to work fine on our development server, it turns out that there are some gremlins buried deep within the bowels of Ruby & mod_fcgid.    These few steps fixed the problem on our production server:

gem install passenger

Edit the httpd.conf file and add these lines (check your paths that Passenger gives you during the install – they may be different on your server):

LoadModule passenger_module /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.11/ext/apache2/
PassengerRoot /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.11
PassengerRuby /usr/local/bin/ruby

Restart httpd…

service httpd restart

Test your Redmine install.

Checking Logs

If you have problems check the log files in your Redmine installation directory, such as ./log/production.log. You may also want to check your Apache log files, assuming you’ve set those up. To log Apache messages you need to have an ErrorLog statement in your httpd.conf file that tells Apache where you want your log file written (normally /usr/local/apache/logs/redmine-error.log).