Tuesday, July 31, 2007

Poor, neglected blog

Wow, it's been awhile since we posted to the blog! We've been coding like crazy lately, but that's no excuse. So here's an update on where we're at:

We just released CiviCRM Standalone v0.5, which is a very cool release. Not only does it continue to improve on the cool features we created for previous releases (such as the ability to use it as a standalone system, the OpenID login system, and the nestable groups), but it also adds a much easier installation system. We think you can get this release up and running in 15 minutes or less on a Windows, Mac OS X, or Ubuntu Linux computer. So give it a try!

I'll be traveling to YearlyKos this week, and I hope to meet up with folks who are interested in Code for Change, open source, and non-profit technology in general. If you'll be there too, let me know!

Today the CiviCRM folks merged our changes into their trunk. What this means is that the cool features that we've been putting into our CiviCRM Standalone releases which eventually find their way into the bonafide, official, 100% all natural CiviCRM 2.0 release. The plan is to have that out by the end of 2007. That's very exciting news, and was one of the major goals of the Code for Change project.

We're not done yet, though. So stay tuned for more updates on new features and more releases.

Sunday, July 15, 2007

More on CiviFeatures: CiviMember

Much of this information can be found in further detail at http://wiki.civicrm.org/confluence/display/CRMDOC.


Membership Summary


When you first open up the CiviMember page, you will see a membership summary, which allows you to:

View all members of the organization. For each, gives type of membership, start and end dates, the source of their membership (e.g. payment, donation, check), and status: whether the membership is current or expired. For each member, there are links for View, Edit, and Delete.

At the top, shows aggregate data about memberships by type.


There are two options under the CiviMember menu, as well: Find Members and Import Members.

Find Members

There is a robust search function for members, allowing search by all fields: membership status, membership type, start and end date, source, member name, email address. You can search by OR criteria as well, to get contacts who are either of one membership type or another, for example.


Find Members leads to the following features, among others:

Export Members:

You can choose members as search results from the Find Members feature, and export them to CSV files, viewable in spreadsheet applications such as Excel.

Email Members:
You can select a group of members as search results to send an email to.


As for Import Members:

Import Members

Import member data stored in CSV format.
Field mappings: the order in which the comma-separated values in a file are stored in data fields is known as a field mapping. These can be saved for a given source file.

The Import Members feature also has built-in error correction. For instance, an email address field will correct invalid email addresses.

Saturday, July 14, 2007

Nestable Groups in CiviCRM

One of the perpetual problems U.S. PIRG runs into with off-the-shelf software is that most of it assumes one of two usage scenarios:
  1. A single organization with no need to isolate any sets of data from any others beyond a simple user-by-user permissioning system (if your lucky). This is the most common.
  2. Multiple organizations with the need to access the software from many different locations, but with complete isolation between the organizations' data in the system and no easy way to combine it. This is less common.
Unfortunately neither of these scenarios fits U.S. PIRG (and lots of other organizations). We have a national lobbying office in D.C., many state-level organizations across the country, and a few centralized departments that work with most or all of them. So we really need a hybrid of the two options above. People in the state groups shouldn't have to wade through other groups' data to get to theirs (not to mention that an errant "delete all" command or security breach in one of those offices shouldn't affect other groups' data). But at the same time, the central departments need to be able to routinely work with aggregate data across all the groups.

Here's an example: Let's say we have a group here in Colorado called CoPIRG (we do). They have a list of online activists, a list of media contacts, a list of current staff, a list of alumni, a list of student activists, a list of donors, a list of issue experts, and so on. They want to keep all that under the CoPIRG umbrella without it getting all mixed up with other groups' data (potentially even other groups in Colorado; this would be very confusing).

Now let's say we have a centralized online organizing department (we do, and I work in it). What if we want to send an action alert to everyone on every online activist list across the country? We need to be able to quickly combine the CoPIRG online activist list with the Florida PIRG online activist, the CalPIRG list, the Maryland PIRG list, etc.

Most software makes this kind of flexibility awkward at best, downright impossible all too often.

Which brings me, at long last, to the subject of my post. We are working to support this kind of functionality more readily in CiviCRM by making groups nestable. I'm using the word "groups" here to refer to CiviCRM's feature for combining contacts into logical groupings. Making them "nestable" means you'll be able to put groups inside groups inside groups inside groups...

Here's how this would play out in the example above:

CoPIRG would be a CiviCRM group. So would CalPIRG, Florida PIRG, etc. Each of these groups would have a nested sub-group called "CoPIRG Online Activists," "CalPIRG Online Activists," you get the idea. We would also have a top-level group called "National Online Activists." Each of the "XXPIRG Online Activists" groups would also be sub-groups of this. (We're supporting multi-parent relationships between the groups.)

CoPIRG staff would have read/write permission for their whole group (and thus any sub-groups of it as well). The staff in my department would have read/write permission for the entire National Online Activists group. This keeps our data isolated when it needs to be, but combined when necessary too.

We would then repeat this setup for the local and national media lists, alumni lists, donor lists, etc.

Obviously this is nowhere near the only usage scenario nestable groups will enable CiviCRM to support. The new flexibility, especially when combined with the new permissioning system being planned for the 2.0 release (also when nestable groups will make their debut), will make CiviCRM a much more flexible system overall.

We already have the basic functionality working. The main thing left to do is implement an intuitive widget to create and edit group nesting relationships. We're hoping to get this out the door in the next few days as CiviCRM Standalone v0.4. Stay tuned!

Friday, July 6, 2007

CiviContribute

CiviContribute enables you to collect and track and create reports on contributions from members. With customizable collection pages and many Payment Processors to choose from it's easy and secure. Offline contributions can be imported using the import feature of CiviContribute. Searching the data is easy with the search tool and there are a wide number of criteria to choose from for searching including Contributor, dates and contribution form used. You can create contribution pages by copying previous contribution pages or one of the example pages, as well as creating pages with a 6 step wizard.
Collect, track, report -- CiviContribute takes care of your constituent contributions.

Thursday, July 5, 2007

CiviEvents: Why It Rules

Here's a sketch of the features of CiviEvents. It's a bit thick and dry now, but expect a more polished version in the near future, along with many of the other optional features of CiviCRM. More documentation is available at http://wiki.civicrm.org/confluence/display/CRMDOC/CiviEvent.

Matthew and I will be compiling these into a presentation, which we will also post here. Comments about the cooler aspects in this list are welcome. We're looking for all the input we can get.


Event Summary Page

The Event Summary Page lists all of the events you have created. You can edit events by clicking the "Configure" button next to the name of each.

Sorting features allow you to view event participants in alphabetical order of participant name or event, order of the fee level, dates at which they take place, event status, and the role of the participant. A console for viewing, editing, or deleting event registration for a given contact also exists, beside each contact's entry in the summary.

- A Find Participants feature allows you to search for participants by event name, date, etc.

- There is a wizard for creating a new event, as well. You can select an existing event type or configure/add new event types in Administer CiviCRM. (Cool potential feature that doesn't exist now: add different fields to event types.)

Import Participants

Import participant data stored in CSV format Field mappings can be saved for a given source—very useful Automatic detection of invalid fields

Total Rows - Total rows (contact records) in import file. Rows with Errors - Rows with invalid data in one or more fields (for example, invalid email address formatting). These rows will be skipped (not imported). You can also Download Errors. Valid Rows - Total rows to be imported.

The information shown previews the results of importing your data. Review the totals to ensure that they represent your expected results.

If errors are detected you will see the message:

CiviCRM has detected invalid data or formatting errors in # records. If you continue, these records will be skipped. OR, you can download a file with just these problem records - Download Errors. Then correct the errors in the original file you are importing, cancel this import and begin again at step 1.

Event Creation

Address/Email configuration for Event Location

Event Fees—Configure paid vs. unpaid, contribution type, options for amounts, and default amounts

CiviEvent Registration:

Modes for both paid and unpaid registration
Extensive configuration for event registration, including registration link text (e.g. "Register Now!")

Registration start and end dates
Introductory and footer text
Customizable Confirmation and Thank-You Screens
Customizable Confirmation Emails
You can test-drive registration for events.

Wednesday, July 4, 2007

CiviCRM Standalone v0.3.1 released

I forgot to mention on here, we released CiviCRM Standalone v0.3.1 yesterday. You can grab a copy of it here.

This release incorporates lots of bugfixes for the OpenID login system, and it's probably the first release that's generally usable without having to tweak things in the database first. It even has a "new install" page that helps you setup your first user right after you install it.

The other exciting news is that we have this version up and running on our demo server. You'll need an OpenID (these folks can help you out there), and then you can login to the demo server here. Obviously you probably don't want to put confidential data in there since it's a public server.

Let us know what you think!

Monday, July 2, 2007

CiviCRM Standalone v0.3 delayed slightly

Our new CiviCRM Standalone release, version 0.3, is almost ready. We had hoped to get it out the door this weekend, but there are still a couple of show-stopper bugs in there we wanted to squash first.

It may still get released tonight, so stay tuned. It's a pretty cool release and probably the first one that will be easy to get up and running (you had to do some database sit-ups for the others).

If it doesn't get released tonight, look for it tomorrow (7/3/07).

Sunday, July 1, 2007

Some of My Favorite Places

Working for code for change and PIRG has kept my mind coming back to the Environment. Living in the state of Colorado it's not hard to think about it. With the mountains so close and looming over Denver all the time, and calling me to come and play. But I've noted a disturbing trend over the couple of decades I've been here. Time and time again I've found that there is a house or a fence or some other obstruction or sign that says one of my favorite hiking spots is off limits now. And from what I can tell whomever "bought" that piece of land now basically controls access to that huge chunk of State or Federal Park that now lies out of my reach.
One in particular was near Moffat Tunnel. We used to hike there two or three times a year. Then one time we were greeted by a 12 foot high horse fence at the trail-head. We had heard that access was supposed to be granted, and the owner saw us and welcomed us to cross, but didn't open the gate, we had to climb over.
Another spot is on famous Mount Evans. There is a house and a road somehow inside of what used to be park land. Barbed wire and warning signs are also to be found. It's a sad thing. And I know with time that there will be more and more of this happening. I don't go to those old spots anymore. So I guess who ever they are has won. I guess I let them.