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.

Are there version control and project management tools which "work well" with freelancing jobs, if I want to keep my customer involved in the project at all times?

What concerns me is that repository hosting providers have their fees based on the "number of users", which I feel is the number which will constantly increase as I finish one project after another. For each project, for example, I would have to add permissions to my contractor to allow him to pull the source code and collaborate.

So how does that work in practice? Do I "remove" the contractor from the project once it's done? This means I basically state that I offer no support and bugfixes anymore. Or do freelances end up paying more and more money for these services?

Do you use such online services, or you host them by yourself? Or do you simply send your code to your customer by e-mail in weekly iterations?

share|improve this question
2  
"state that I offer no support and bugfixes anymore" - no, you stop to offer constant access to the complete version history of your code to your client, no less, no more. Do you have clients which really want that? –  Doc Brown Aug 28 '12 at 12:32
add comment

4 Answers

up vote 6 down vote accepted

The problem with a source control system that you use and give access to your clients is that they will often not use that SCM tool. eg. If you decide to use git, they may turn round and say "sorry, we use svn" or vice versa. In any case, do they really want to maintain your code in another repository? Chances are they'll want your code migrated to their existing scm and DB.

So, a zip is probably the best - package up everything and send it to them.

I understand you might want to offer them all the benefits of a SCM, but generally, they will take your zip, unpack it and import (ie checkin) the code to their system. All the benefits will be present, and they'll have the expertise to manage it a lot better than in a foreign tool.

Nothing is stopping you from using any online SCM system to develop in of course.

One more thing - when you've finished, what makes you think they won't continue to work on the code? If they come back to ask for some more work, you can't expect to continue where you left off - if you did give them a SCM link, and they copied it internally, you'd have to start from scratch again, or with a fresh and updated version from them. The idea of storing all your code in a common repo is just not practical enough.

share|improve this answer
    
Thanks, that's helpful, although it would probably not be that simple to merge changes between different systems (zipping everything will fail with added/renamed/deleted files, so some kind of a unified diff might work). Of course, if they already use their own SCM, one option would be for me to adapt to them and have them prepare a dedicated repo for me, but that might not be feasible in many cases. But a problem is also integration with project management tools (issue tracker and VCS integration, for example), which would then not be fully utilized by everyone involved. –  Groo Aug 28 '12 at 12:46
1  
-1, zip is never an answer to ship software. –  Wyatt Barnett Aug 28 '12 at 13:27
    
@WyattBarnett : zip is always an option - not the best one obviously - but each release can happily be archived in some medium (a zip, burn to CD, etched into stone tablets) and that is very effective. Besides, how would you ship software? –  gbjbaanb Oct 19 '12 at 18:55
    
Ship? Proper package management or app store. –  Wyatt Barnett Oct 19 '12 at 19:26
    
Lol, to put an app to Android app store (for example), you need to deliver an apk file... which is a zip in all but name. Now a full ALM delivery solution is a good thing (if very complex), but they tend to cost a fortune and require a lot of admin to make it work right. A zip in many cases is a much more practical solution, as seen when using the Android app store. Don't knock the simple solution, they can be the best in a hell of a lot of cases. –  gbjbaanb Oct 20 '12 at 12:34
add comment

I depends on what are you developing. For .NET Projects and for Java Projects as well I would suggest you "Team FOundation Service" (www.tfspreview.com). Here you have a full TFS, including a Build Service. No need to create a contract for multiple years, no need to pay more than you have used. It is allways very interesting for Freelancers I think.

Otherwise think about TFS Express or a Git or SVN instance.

share|improve this answer
add comment

I agree with you that most services do not work on a mindset similar to this, since their pricing model is around teams and not the usage case you want them for. It is not viable in the long run to add/remove users per project or juggling to keep your charging under an arbitrary price tag (what would you do if a customer hires you again, enrol them back?)

I believe it has to do with how much your client base would like to interact with version control. Would they want to integrate your work with something like subversion externals or git submodules, or they just want to have the latest version somewhere? In the latter case, I think a script that checks out, "zips" and emails the latest version would be sufficient.

share|improve this answer
add comment

I'm usually on the other side of the table here, typically we require any outside developers to "ride our rails" and use our SCM / CI / issue tracking setup. But I get the sense I'm in a minority.

What I would do if I were in your shoes is:

a) I'd probably use bitbucket as my default host. Their terms for private repos are much better inasmuch as they charge by the user. They are more flexible (HG and Git). The reason to go dcvs here is that, when you are done with the project, you can make sure they have a full fidelity copy then cut them off of the repo so you aren't paying for empty users. I do the opposite over here with our freelancers and it works very well.

b) Pick an issue tracker that is highly flexible and not embedded but will work with your DCVS. Redmine is a great choice here, and it also does some time tracking.

c) Make sure you have some CI infrastructure to publish changes to frequently; most clients want to see the website not the commits. Jenkins is a great fit as it is quite free to stand up and works with just about anything.

That puts you in a position to cover all your bases and should not cost an arm and a leg to get or keep going.

share|improve this answer
    
Thanks, this is very helpful. –  Groo Aug 28 '12 at 16:12
add comment

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.