Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

We're teaming up with some non programmers (writers) who need to contribute to one of our projects.

Now they just don't like the idea of using Git (or anything for that matter) for version controlling their work. I think this is because they just don't find it worthwhile to wrap their heads around the twisted concepts of version control. (when I first introduced them to branching and merging -- they looked like I was offending them.)

Now, we're not in a position to educate them or convince them to use it. We're just trying to find alternatives so that we get all their work versioned (which is what we need) -- and they get easy workflow and concentrate on what they do.

I have come up with some ideas...

  • tell them to save their work as a separate file every time they make some non-trivial change, and then use a diff on our side to just track changes.
  • write a program (in Python) that implements the "milestones" in CSSEdit in some way.

About the project:

It is a natural language processing system (written in C + Python). We've hired some writers to prepare inputs for the system in different languages. And as we evolve the software, we'd need those writers to make changes to their inputs (articles). Sometimes the changes are very small (a word or two), and other times big.

The reason we need to version control those changes is because every small/big change in the input has the potential to change the system's output dramatically.

share|improve this question
14  
@rwong - or a wiki with versioning, that could work too. –  Joris Timmermans Dec 8 '11 at 9:26
4  
Adding to @MadKeithV comment, how about a git powered wiki? github.com/github/gollum - Some changes to the workflow are going to be made, you are trying to bridge two teams. Have you explored their current tools? There's a small possibility they support some kind of version control and your writers never bothered to find out.. –  Yannis Rizos Dec 8 '11 at 9:34
19  
Its really simply. If you are going to pay these people, tell them they can either use your tools and get paid, or if they refuse to use your tools don't get paid. Any middle ground will mean more work on your end, since that costs money, it balances out to finding a group of people who will work with your tools. –  Ramhound Dec 8 '11 at 14:08
4  
Fossil is an interesting VCS that comes with a versioned Wiki as well. We used it as a way to keep docs up to date but you could use it to "version" things like this. –  Ben Brocka Dec 8 '11 at 14:36
32  
WHY were you trying to introduce branches and merging to non-techies? You want their work versioned, fine. You can tell them how you want it saved. You want them to handle branches and merges, you're going off the deep end. You should have gotten them something nice and easy, like Tortoise*, and avoided telling them anything they really didn't need. –  David Thornley Dec 8 '11 at 14:43

17 Answers 17

when I first introduced them to branching and merging -- they looked like I was offending them

This is probably because branching and merging are advanced concepts, and infinitely less useful than to simply keep track of the changes.

So why not explain just "commit" (save) and "update"? Two really simple concepts. I'm sure you can explain it in less than 10 minutes.

If you really want to use separate branches and stuff like that, you can do that part yourself without involving them with it.

share|improve this answer
15  
+1. For their purposes, just keeping straight-line history is a radical and game-changing notion. I think it's unlikely a writer would ever really need branching and merging, and if they did, they'd need a dev's hand to hold while they managed it. –  Dan Ray Dec 8 '11 at 15:24
6  
@BillK, have you actually tried merging with git? I think it works quite well, much better than with SVN. (I'm not advocating using merging where it's not needed, though.) –  svick Dec 8 '11 at 17:31
10  
@Bill K Honestly, this sounds like you need to do some catching up after 20 years on SVN (if even). Branching and merging might really not make sense for these writers, but I'm not sure how you managed to program for 20 years without ever branching a repo. There are so many cases where branches are good practice and ease your life; in fact, blindly rejecting the concept shows poor judgement (IMHO). In SVN branching was a pain, but with git things got really easy. Do yourself a favor, get over your ego and invest an afternoon to learn git's basics. You won't regret it, promised! –  Robin Dec 8 '11 at 17:35
6  
@user606723: TortoiseSVN and TortoiseGIT offer windows shell integration. –  Roy Tinker Dec 8 '11 at 22:20
4  
I'm pretty sure that trying to teach Git branching and merging to non-techies is a violation of human rights. –  Steve Bennett Dec 13 '11 at 20:41

A rather unorthodox approach would be just use Dropbox. Have the authors save the files in the dropbox directory and you get versioning and backup for free. Plus there is basically no learning curve for the authors.

For git, sounds like in the end you gonna end up providing the authors with the correct branch versions anyway, so just put the git repo in the dropbox and handle the branching and merging for the authors.

share|improve this answer
20  
I was going to suggest the same thing. No reason why you can't also make the folder in Dropbox a git repo (they don't need to know) and do periodic (e.g. daily) commits. That way you get all the nice git stuff (diffs, logs, bisects, etc) for free. –  Simon Whitaker Dec 8 '11 at 9:55
3  
Make sure you use the paid version, as the free version only saves versions for ~30 days if I remember correctly. –  DMan Dec 8 '11 at 15:16
4  
I can only -1 an answer that suggests an external service, introduces a single point of failure, and puts your data at the mercy of potential intruders, when there is so much useful software suggested in other answers here and the involved parties are explicitly presented as capable programmers. –  Sam Hocevar Dec 8 '11 at 17:10
4  
@DavidThornley: you haven't heard of actual security problems with Dropbox??? –  Sam Hocevar Dec 8 '11 at 17:51
3  
+1 to @SamHoceva. This is a terrible idea. DropBox is not meant to be used like this. This might be fine personal solution for near the same thing, but not for corporate use. –  user606723 Dec 8 '11 at 18:19

Truthfully the answer is in your edit: "We've hired some writers" - sometimes you just have to be bloody minded... they want your money they have to do what you want providing that what you want is not unreasonable.

The argument you make is the argument you've already advanced - we need to be able to do X, Y and Z to make the product work - and in order to do this we need you to do that. We will be as supportive as we can, but for this to work (and therefore for it to continue as an income stream for you, the writer) this has to happen.

I tend to agree that an appropriate Wiki based solution would seem to be a good match - but the challenge here is how to find a compromise between their workflow and your requirements.

I'll repeat the key point - in order for your project to be a success you need the articles to be versioned therefore those who work on the articles have to play by an agreed set of rules, if this doesn't happen you will get burned and by extension so will the writeres.

share|improve this answer
1  
I kind of guessed... but then you have to make your case to management, and its the same case. They're right that its something that needs to be "adjusted" (interesting choice of word) - but compromise is a two way thing, you have to give them something they can work with, they have to work with it. –  Murph Dec 8 '11 at 12:19
2  
@greengit Issues that need to be "adjusted" between teams are part of what management is for. Delegating the responsibility to one team is either lazy, or possibly a hint that management would prefer that team's approach. So I'd suggest you suggest to management the solution that makes more sense to you, and let them worry about everything else. –  Yannis Rizos Dec 8 '11 at 14:12
2  
I have a tendency to present these "adjustments" to management in the form of the budget for their proposed changes. "Sure, we can avoid their using (git,…). We'll need to hire a secretary to do it for them. Sign here and I'll start interviews on Monday." –  BRPocock Dec 8 '11 at 17:58

SparkleShare is a git-based dropbox-clone, I think it suits your needs.

SparkleShare creates a special folder on your computer. You can add remotely hosted folders (or "projects") to this folder. These projects will be automatically kept in sync with both the host and all of your peers when someone adds, removes or edits a file.

...here's a few examples of what it does well and less well with smiley faces:

Great

  • Frequently changing project files, like text, office documents, and images
  • Tracking and syncing files edited by multiple people
  • Reverting a file to any point in its history
  • Preventing spying on your files on the server using encryption

Not so great

  • Full computer backups
  • Storing your photo or music collection
  • Large binary files that change often, like video editing projects...
share|improve this answer
1  
+1 for SparkleShare -- didn't know it. –  good_computer Dec 8 '11 at 14:40

I've had to deal with a similar situation like this before. In the end we just designated one developer (me) as the version control point of contact for the 3rd party.

The 3rd party would email me a zip file of their project files every day and I would do the checkin for them. I setup a separate project workspace and svn account for them and would unzip the files into that workspace overwriting what was there and then do the checkin under that account.

It's wasn't the most fun to have to do every day but sometimes it's more important to just get the work done.

One plus was that it did help me review their work to make sure they were not checking in bad code and data that would break the build.

share|improve this answer
2  
@greengit - If you suggest this is the only solution you feel would work, then the costs will force mangement to hire different people, who will work with your tools. Of course you can explain to mangement that ANY solution except version control WILL COST MONEY either you working around problems ( and solving them ) created by the work around or spending the extra time trying to prevent the problems ( unless you ignore both of those key points, problems will happen, actually they will happen no matter what ). –  Ramhound Dec 8 '11 at 14:11
3  
@greengit Obviously it's going to depend on what's all involved in your process but in my case it took me less than 5 minutes a day to checkin the 3rd party files. It was my solution to mitagate wasting time trying to develop a process and train the 3rd party on it. –  AlanBarber Dec 8 '11 at 15:12

If you can provide prepared workspace with transparent VCS-usage, they will use VCS. Don't teach non-programmers to use VCS in programmer's way

Just find editor with embedded VCS-support, configure it and show additional easy steps in their works.

Just an example - Editplus knows about Subversion, have ability to perform basic SVN operation inside editor window. Latest Editplus even can use TortoiseGIT for Git-integration

Edit: found some-way-alternative solution: EasySVN, which, being properly configured, monitor working copy and perform autocommit and automerge, allowing to use any authoring tool for end-user and any document's formats

share|improve this answer

What about setting up a WebDAV?

It will automagically handle the straight line versioning history for them. All they have to do is connect to the server as if it was a network drive and every save will be a commit.

share|improve this answer
4  
@dreftymac en.wikipedia.org/wiki/Hair-splitting –  SplinterReality Dec 9 '11 at 7:25
1  
Maybe, you can make this answer more explicit: Set up Subversion+Apache+WebDAV on a server and mount the WebDAV share from the non-developers clients. Tell the users to save they work on the WebDAV share at least once a day. –  Jan Dec 10 '11 at 23:57

OS Agnostic

Write a Python program that you can drag and drop a file onto, that program can then do the git add and git commit and what not and they never have to deal with it.

or

Use a WebDav based filesystem you can mount on their machine and have the server do the git stuff transparently.

OSX/Linux

Write a Python based FUSE plugin that takes the files and commits them to git. Then they can just open and save from the mounted filesystem transparently. There are some FUSE for Windows resources, but they are probably not even worth fooling with.

Windows

You might could write some code to use FileSystem Filter Drivers to transparently do the git stuff.

share|improve this answer

Ah, the joys of non coders mucking about. I'd suggest getting a git/mercurial environment set up for them. Tell them to save everything in a format that the repo can handle. With tortoisegit or tortoisehg, they don't need to know how the repo works. They just check if they have an exclamation point in their project directory, right click the offending file, and click commit. Type up a synopsis of changes(they're writers, right?) and you are done!

An extra step in the work flow for them, but nothing about merging/branching/cool stuff. The pre built environment is already set up to be in the writers branch, so they don't see code. Have a script auto sync them every day. Later, after they are used to committing, you can show them extra features. The ability to see what changed when is so useful that they won't be able to do without it, once you sneak it into their workflow.

share|improve this answer
5  
One thing I have come to realize is that all (YMMV) non-technical writers just consider their previous work useless, once they make any changes to it. They think the updated work (article or anything that they write) is best, and it's foolish to keep the past versions of it. Although in our case, we've at least successfully explained them why we also need the history also. –  good_computer Dec 8 '11 at 14:29

Google Docs

Google Docs might do what you want. File > See Revision History will let you keep track of changes.

You've also got the problem of handing files back and forth taken care of for free; just share the document amongst everyone.

Finally, it's easy to use; the writers don't even have to know that there is versioning happening.

share|improve this answer

What about Share Point? I know it isn't popular in the development worlds but if your writers are using Windows as an OS it will work well and they won't really know that they are using version control(A big plus for my work).

This solution also keeps them from dealing with anything that would scare them to much, as it seems they are skittish of new things.

share|improve this answer

Could you setup a tool that monitors the file system where the writers are saving their files and have it do an automatic commit every time they make a save?

If you put it on a network share you could do all the configuration without involving them at all; but every time they provided an updated version for your team to use it would be added to git for you.

share|improve this answer

Did you look at Plastic SCM. They are trying to make it simpler to use

If you just want versioned backups you can use Dropbox or you can setup Windows backup service. Or you can install Crashplan or another similar product.

share|improve this answer

For the Mercurial DVCS, there is a user interface called EasyMercurial, whose stated goal is explicitly to provide a simple view of the basic version control operations.

EasyMercurial is intended to be:

  • simple to teach and to learn indicative of the actual repository state, using a history graph representation
    • recognisably close to normal command-line workflow for Mercurial consistent across platforms

We are not trying to produce "the best" Mercurial client for any one purpose. We actively encourage users to move on to other clients as their needs evolve. The aim is simply to provide something accessible for beginners in small project groups working with a shared remote repository.

I would recommend giving it a try.

share|improve this answer

I've had to work with non-programmers many times (mostly graphic artists, and if your writers have as little clue how to manage work files as artists then you are in for... h'mmm.... fun...). There are three possible approaches:

  1. Pretend they are programmers, try to teach them how to use version control. This will not work and you will have constant fights.
  2. Write them a very simple tool which just grabs the current version & sticks it somewhere so they can rewind to yesterday's files if necessary. This is possible, and I did this for a team of DVD creators (making menus, graphics, all sorts of things) many years ago with some success: the tool I wrote was a one-click wrapper to PkZip (you can see this was a while ago) and it just zipped up the work directory and named the archive for the date + time.
  3. Take control of what they produce yourself. Make it clear that their files have to be delivered to a programmer and only become part of the project when the programmer accepts the files: the programmer then checks them into version control and the content is managed in a professional way.

Personally I think option 3 is the way to go. It means some pain & irritation for whoever has to take the file deliveries and get them checked in, but way less than any other option.

I would also say, be aware that non-programmers will deliver files with any old filename you can think of. Naming conventions are strangely alien to them. They will give you a file called "Picture" or something and then when you tell them the things that are wrong with it will give you a file called "Picture_Final", which has only correct about 3 of the faults. When you point this out you will get another file, called "Picture_NewFinal", and then (if you are lucky) "Picture_NewFinal2", although it is possible that they will at this point jettison any sense of historical development and call it "Spanner Icon thing".

Again you can try to enforce a naming convention, which means telling them in advance what every file is to be called, or you can spend hours unscrambling & renaming what they send you. Here I would say you want the spreadsheet for your own sanity anyway, so have a go at getting them to follow it: just don't be surprised when they don't.

Hope that helps -- have fun!

share|improve this answer

If there is any chance that two of them need to work on the same target at once AND if you can deal with all their work in text files, I'd try shared google docs.

It has awesome multi-editor/collaboration ability--by far the best I've ever seen. They are also full versioned and can be exported as text files.

But those are two pretty big ifs.

share|improve this answer

Let them work in a folder, saving files as usual.

Once a day (or week, etc) copy the contents of that folder to backup_dd_mm_yyyy Most systems source code occupies a trivial amount of space given the space available these days.

The copy can either be done by you, them, a third party, a tool or a script.

This limits loss to one day, gives a history, is transparent to them.

Not perfect for either party but an answer that seeks to strike a middle ground.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.