Last spring I started working on a Drupal module that would keep CiviCRM contacts in sync with Salsa contacts. I did a lot of the work on it and then, upon joining PTP's staff, the project unfortunately fell to the bottom of my stack.
The code is available...
git clone git://git.mayfirst.org/ptp/civicrm_salsa
... but it's barely code-complete and has had absolutely no testing, so we're not releasing it yet.
Before I could get a chance to return to the project, PTP got several requests to sync CiviCRM with VAN.
As lobo reminded me when we discussed at the NYC sprint, synchronizing is really complicated (I re-wrote the civicrm_salsa module a few times as I experienced that complexity first-hand last spring). You have to first create a map between records in both databases, keep track of the last modification date of each record, and have a policy for what to do when you have update conflicts. It's no easy feat.
This complexity made me pause, and it occurred to us at PTP that perhaps it should be re-written again in a way that abstracts the synchronizing engine, putting as much of the complexity into a single engine class that could be re-used for others targets.
The Drupal module is fairly abstracted, but it's written in a very drupal-centric way. I think it would need to be re-thought as a CiviCRM class, perhaps as a CiviCRM module-type extension?
Open to ideas and suggestions.
p.s. lobo mentioned that the EFF had developed a Sasla sync module - but it operated more as a module for copying Salsa users into CiviCRM. I tried searching for it but google seems to think I might mean "egg" rather than "eff". I'm curious to see a copy of the code. If anyone can point me in the right direction, please leave a comment.