Developing a Drupal Activism Network / Online Network module

I'm getting up to speed on Drupal. I read the only published book on it, which is a good introduction to the subject but is entirely lacking on the advanced stuff (there is a more advanced book coming out in mid-2007). I've read through most of the documentation in the Drupal online handbook - which has been more insightful, though parts of it are in need of editing. I'm impressed at the list of modules and thus functionality that is possible with Drupal.

While I've been following Drupal/CivicSpace for about two years, this new found interest is because I'm planning to do some Drupal consulting work to pay the bills and because I hope to convert the Campus Activism / Activism Network software into a Drupal module to make it more appealing for organizations to use as part of their website.

Building an Activism Network (or Online Network) Drupal Module
I'm hoping to generate some interest for this in the Drupal community to either get people willing to help develop it, test it, or at least give me guidance as to the best way to approach this. Maybe I should choose a better name for it? It really isn't an activism network module so much as a general online network module. Sure it's designed for activists, but it could be used for a network of anything that has groups, people, events, and resources (or a sub-set of them).

The Drupal Niche
This is tricky. Drupal has a ton of existing modules. Perhaps 100 modules, if you include ones that aren't in the core. These modules often have overlapping functions. For instance, there are many ways to implement a category/taxonomy scheme to organize your site content. Now some of these modules do things that are very close to what parts of the Activism Network does. For instance, the Organic Groups module can be compared to my system for having groups and members. Drupal has a taxonomy/categories system - parallels my "issues". Drupal has a calendar, and a way of uploading files.

So how does Activism Network fit? There are two distinguishing points. Firstly it comes in a big complete package, whereas Drupal modules tend to be modular - eg they work on their own. The advantage of this is that you can install it all at once, and don't need to worry about one module being incompatible with another (an even bigger problem when you think about maintaining it and dealing with upgrades, as a module that is part of your system might not be maintained - particularly if you use non-core modules). The large disadvantage of this approach is that it goes against the modular nature of Drupal. By not integrating with other modules, it is harder to extend it's functionality. Eg to increase the functionality, you have to modify the Activism Network module - you cannot use a Drupal module to do it.

Secondly, Activism Network differentiates sharply from Drupal by having an API that runs on web services. Activism Network has a central database and lets clients access the information. One could rewrite all the Drupal modules to provide information using web-services, but that might be too hard to do initially, and in the long run maintaining versions of Drupal modules would be hard too. Perhaps it is possible to write a single module that would implement web services for all the Drupal modules that you'd need, but I'm not sure if it is. When writing a Drupal module, I'll be replacing the client-side of the application. I don't see any need for the server to be implemented in Drupal, because it doesn't have a single bit of user-interface tied to it (except during the installation part).

Gradual Integration
I think that a gradual integration of the Activism Network module with the Drupal core and non-core modules is the best method. My first priority is to integrate with the user system, so that you can use one log-in to access both Drupal (do things like add pages of content to your site) and Activism Network (control people, groups, resources, events).

I also want to export my Calendar in iCal format to make it easier to share it with other sites (and Drupal modules).

Perhaps the second priority should be to integrate with Drupal's template system.

Third priority would be figuring out how to work with existing Drupal modules or to break my software into small chunks that would make it more modular. Eg I could seperate it into different parts for people, groups, resources, events, etc - and then create one or more integrator modules.

Maintaining Drupal and non-Drupal versions of Activism Network
I want to have both an Activism Network Drupal module and a seperate standalone version. I'm sure this is possible, but am not sure how to do it. I know CiviCRM has versions running on Drupal and Joomla (and perhaps down the road a standalone one), so I might look to their project for guidance. Suggestions?

Note: I'm serious about getting this done.