Wanted: Simple, Intuitive Version Control

CVS, CVS-NT, CS-RCS, Code Co-Op, QVCS, Visual Source Safe, FreeVCS, JediVCS and others have all been scrutinized by yours truly, and I’m finding them all lacking in one thing: Simplicity.

I want version control that is as easy as installing a windows executable, pointing at a database (preferably SQL server, since I’ve got several sitting around here), giving it a project name and a project root.

That’s all. That’s all the setup I want to do. I’ve already got OS-based access control working. I don’t want to mess with setting up a web server, or protocols, or repository directory permissions or environment variables or servers and clients or logins.

I want simple.

The “setup” program will create any database structure it needs using the database server and login I provide it. It will offer me a chance to populate it with data from the files in the project directory I specify, but will be perfectly happy not to as well. If I choose not to populate it now, it’ll ask about populating it later – after I’ve left work for the day. I understand I’ll be giving up its functionality until it’s populated. That’s fine. It will establish the “client” program on my machine, detecting my windows logon name and not asking me for info I could detect anyway.

The “server” program will watch the folders under the project root I specify for changes to files (by date/time, size, etc) in as near-real time as possible. When a change is detected, the changed data between the old version and the new version is saved, along with the timestamp of the save operation, and if at all possible – why not? – the author of the change. The “server” has no interface. It can run on the same machine as any of the clients, because they’re all updating the same sql database anyway – redundancy doesn’t hurt.

The “client” program will be a system-tray icon based program will sit on my screen and be silent. It can change its icon to reflect that it’s got info to show me. No popups, no noise, no flashing. Such info (when I choose to look at it) should consist of every changed file since the last time I dismissed that file from the list last time — NOT to include updates based on the initial population. If I choose, I can look at the details of any file in the “recently updated” list – the changed data, the time it changed etc, and I can add a comment to the file — but I don’t have to. Changes can live just fine in the database without explicit owners. Every developer on the project would be running this client app and they’d only have to comment on their own updates, ignoring any others. Files they purposely “ignore” would be noted as ignored by that developer.

The client program will also have a configuration menu, so I could change my logon name if I wanted to, and customze the icon’s appearance, database server, etc.

The client program will also have an optional “explorer” interface I can open – it may even be an external program so it’s not sitting in memory waiting to be used. The purpose of this interface is so I can walk through the file system with the option of seeing notes and history about any file I choose — and also the method through which older revisions are restored — either over the current file, or as a renamed file in the same directory.

There’s no obligatory concept of locking, there’s no checkin/checkout, there’s no mandatory comment system. It’s simple. Unobtrusive. Out of the way. Easy.

Now, IF I wanted to lock a file and thus require checkin and checkout, that’s easy too. I just specify a “lock” flag in the file’s information via the client program. That sets a read-only flag on the actual file. Now any developer who opens the file and becomes aware of the read only setting can use their client icon to navigate to and unlock the file for their use – such unlock/ownership information would be stored in the database. The read only setting on the file STAYS on the file. When the developer wants to save the new file again, they can use the client program to temporarily remove the readonly flag, and re-set it x seconds later. That’d get tedious, but I don’t really intend for locking to be used too much here. If any other developer wants to access the same file while it’s checked out, the client program will tell them who’s got it checked out.

If some bonehead developer goes on vacation without unlocking the file – any other user can force check it in. At this point the file as it exists is saved as a flagged revision (so the vacationing developer can return to it) and the new developer can get on with their work, adhering to the checkin/checkout rules about the file.

All of this is possible with a very simple UI for the developer. Why doesn’t it exist? PS, if you go ahead and create this model, I hereby copyright this idea. Talk to me about getting rights to it — I’ll give them to you free, if you give me some free copies of the program.

The Composition of My Vote

I’ve been thinking about why I do support the President’s bid for re-election. Here ya go…

10% – The Christian Factor
I appreciate that President Bush knows sin. Knows God. Knows redemption. As governor, he pressured the state government in Texas to cease their prejudice against a Christian rehab group because he recognizes that God changes lives more effectively than state programs do. But just the fact that he’s a born-again Christian only goes so far. I’m sure everybody in the race this year will also be (or claim to be) – they just don’t toe the line as visibly: more on that in a moment.

30% – Strength of Convictions / Track Record
He said he would cut taxes – not just for the rich, as is claimed by (take your pick: The Media Fund, MoveOn, Kerry, Edwards, Gore, etc), but for middle- and lower-income taxpayers too. He did.

The man said we would drive out the Taliban – hosts of Osama Bin Laden in Afghanistan, because of the events if Sept. 11, 2001. He did.

He said he would not tolerate Saddam Hussein violating UN resolutions that carried consequences, while the rest of the world backed down from SH’s stubborn refusal to account for his known dangerous weapons. The ones he used against his own country. And again, Bush was good to his word. Despite pressure from some of the bigger economic powers in the Europe.

He does what he says he will do. I respect that much, even if I don’t always respect his reasoning.

20% – He Expects Accountability
Public schools are a failure. Sure, they do achieve some things, but nothing like the level of education in American before the Public School system came to be. Many public school teachers just don’t care. Most quit after just a few years. Students are a hassle. Their parents are a hassle. The school board is a hassle. They have no impetus to go the extra mile. I’ve seen a glimpse of it from the teaching side, too – one of my brothers is a certified teacher.

Bush came into office with a promise to hold failing schools accountable – letting students in chronically underperforming environments go to better schools, costing the bad schools funding, and encouraging them to step up. That in itself, is a very big deal to me, especially now that I have a child and face either the exorbitant cost of sending her to private school, or the fear of how she’ll turn out from a public school.

20% – Staffing
No President is effective without an inspired administration. In this, Bush has appointed more minority members than any previous administration, but has also gone with those who have proven experience, sound ideas and track-records of integrity. This extends even to people who ideologically disagree with him: Colin Powell supports Affirmative Action and is pro-choice: but is just so good, how could Bush not ask him to head the State Department? Kerry’s choice for a VP was a trial-lawyer. Geez.

10% – Tax Cuts / The Growing Economy
I have a long-standing gripe about Democratic plans to fix economies. Raising Taxes only works to a point — you cannot tax a country into prosperity. Bush’s promise to cut taxes has had exactly the intended effect. The problem is, you cannot assign a timeline to its outcome (a shortcoming that liberals had been quick to point out as a failure, until it was so obviously working they had to quiet down about it). This is because as everybody gets to keep more of their paycheck, they all have different obligations to satisfy before the new money every week can be spent in a way that really improves the economy. You pay off old bills before you go out and buy a boat (or at least, you should).

Now that it’s been a few years in progress, the upswing in the economy is undeniable. Even in states slower to feel the improvement (like Michigan), there are more jobs around now, and people are spending more money at Wal Mart.

Under democratic plans that favor more dollars for social programs (welfare for illegal immigrants!?), the only way to fund such increases is to take more money from the peasants (or their employers).

50% – Competition: Lies, Contradictions, The Company They Keep, The Hypocrisy They Promote
And here’s what seals the deal for me. John Kerry is inconsistent. An outright liar only a bit less transparent than Bill Clinton. John Edwards has been a man for sale for so long that he’s just as untrustworthy – I don’t care how nice his smile is. Examples:

John Kerry told an Iowa newspaper “I believe life does begin at conception” (Jonathan Finer, “Kerry Says He Believes Life Starts At Conception,” The Washington Post, 7/5/04). Yet he’s running for president in the party of abortion rights, and voted against the Lacy Peterson law in the senate. That’s a stunning duality. In effect it says “I believe fetuses are human lives, but if you want to go ahead and murder it, well, I won’t stand in your way.”

John Edwards has a similar conundrum. As a trial lawyer before his senate stint, he prosecuted a malpractice case in which he argued a caesarean section procedure might’ve prevented cerebral palsy (that’s junk science, unproven anywhere). He addressed the jury as the unborn child imagining the fear felt that this strange Dr might hurt him. Yet he fund-raises with Planned Parenthood, and challenges parental-consent laws.

The recent fundraiser with Whoopi Goldberg, Dave Matthews, Michael Moore etc. was full of jibes at the President. They accused him of untrue actions, made lewd remarks about him, lied, exaggerated, and presented a point of view so putrid it would have offended most Americans. Kerry shook hands, smiled and called them “The best American has to offer”. These are the best America has to offer? A foul-humored, vitriol spewing, washed up comedian millionaire who can’t keep a job? A egomaniacal movie maker who so distorts the truth that even liberals who see Farenheit 911 admit “it’s not entirely fair”? Who also claims more Americans should die to make up for American’s wrongs against the world? (Michael Moore, via his website -and since removed- : “I’m sorry, but the majority of Americans supported this war once it began and, sadly, that majority must now sacrifice their children until enough blood has been let that maybe — just maybe — God and the Iraqi people will forgive us in the end.”)

This is the best American has to offer? Obviously I hold Americans to a higher standard than does John Kerry. And for that, I cannot vote him for President.