Essential tools for a Distributed development team - version-control

I want to setup a website where a team of developers (distributed all over the world) can get together and develop Software.
So far (after a ton of reading) im coming close to the conclusion that the tools I will need are: a Version control system (git , mercurial), a bugtracker and and project manager? This post here also help come to this conclusion.
Now my questions are:
- Am I correct and what other tools will I need?
- Will is be possible to integrate these tools with my website?
by this I mean the look ( my website logo) and feel (not having to bounce around from one link to another)?
- I would also prefer hosting my own git/mercurial repo as i dont want to have to go open source is is this advised?
-Free/open source applications would be best
Also another question, I had a look at redmine, does this cover all the things that i would need? as i see it has a lot of features..

You want to reinvent the wheel... do you know it?!
You forgot at least:
Future planning (and bugtracker will become issuetracker)
Team communication (realtime and|or non-realtime)
Some type of internal documentation (wiki?)
Code reviews
Unit-tests, build and deploy tools
Maybe private repository on code-hosting sites will be more natural (and fast) way? Or you can try GitHub Enterprise or Assembla Private Installation

Related

Is there a site that lets you publish code where people can submit issues? (E.g. Github)

My company has a project where we need to share an SDK we have developed with initially a limited set of developers, but ultimately all developers, so that they can:
- download the SDK
- submit issues
- browse and post to a forum where other developers troubleshoot issues
- post reference clients that use the code which developers can download, contribute to...
Note: We don't want/need other developers to edit/contribute to the SDK itself. My company will retain control and edit/publish the SDK.
I am seeing sites like GitHub but I'm not sure it's the right fit. Could GitHub meet my needs? Are there other sites that might do this better?
Github provides private repositories for a fee. There's also Bitbucket which also does Git and is now part of the Attlassian suit it provides private repositories for free but the number of users is limited; LaunchPad does the same with Bazaar instead of Git, Microsoft has Codeplex and TFS on the azure cloud, and I'm sure there's a gaggle of providers for other version control platforms.
In short there are many, many options, one of them is sure to fit your needs and budget.

Can't Decide On a Suitable Open Source Project Host

I need a little bit of help deciding which project host (if any) to move our currently existing project to.
We currently have an SVN (but willing to migrate if necessary) closed-source project existing on Assembla. We're wondering about moving because we want to open source our existing project and:
We don't have the resources to actively promote our now open source project, and suspect that the project hosting we select might influence how our project is publicized. If we move from assembla to github, how likely is it that our project will get more attention?
We want it to be as easy as possible for new developers to pickup and start running.
Our project is also going to need very extensive wiki documentation, as it is a very complex enterprise web application framework (somewhat similar to spring). Does it make sense to put that documentation at the same place as our repo host? Or should we have a separate website for that? We also would like to have a blog as well as a forum. Same question for those.
Help?
We don't have the resources to actively promote our now open source project, and suspect that the project hosting we select might influence how our project is publicized.
Might - and might not. You can see a lot of solo-projects on any source-hosting
We want it to be as easy as possible for new developers to pickup and start running
Assembla is very good choice in this case. Do not be in a common disease Git-mania. Really "big community" in case of Github is just common marketing cheating, no more - it's not your community
Assembla have most needed (for big complex project) tools, compared to competitors. Pull requests on Github implemented better, yes. But I can't recall any other advantages. Support of almost all modern widely-used SCM (except Bazaar) is big plus also.
Around community size: Assembla have big plans of expansion to million users in nearest years (two, AFAICR)
NB: You can think about changing SCM to (some) DVCS - forking|merging are more natural in these systems and it will give one more level of freedom to contributors without big headache for any side
I think your project would get more attention being on github or bitbucket and developers would be able to easily clone from either host using git. With that said, you could try to promote it on sites like Hacker News.
Since your wiki would be very complex, I think a seperate website would be more suitable.

What is the best connector for a single developer to store Mylyn tasks in the cloud?

I would like to use the Mylyn task-centered user interface however i regularly work between two pcs and would rather not purchase any bug tracking software.
Can someone please recommend a good connector to use with Mylyn for my situation or some other workflow that is better suited.
I can recommend you to use Foglyn connector together with FogBugz server. FogBugz server is free for 1 or 2 users, and you can also get free Foglyn license for this edition of FogBugz. Furthermore, with free FogBugz you also get Kiln, which is Mercurial-based Version Control and Code Review system, although you probably won't use its code review part. You can use free FogBugz + Kiln for any number of projects, open source or not, the only condition is number of users (max 2). Big advantage is that you don't have to run your own FogBugz server, but you can use hosted solution. This makes configuration very easy.
(Disclaimer: I'm author of Foglyn connector)
The best Mylyn connectors for free trackers are the bundled connectors for Bugzilla and Trac. So one option would be to find a hosting site that offers Trac, e.g. Assembla, which offers free hosting for open source projects and moderately priced closed projects (I'm quite happy with them, Trac, and Mylyn). Be sure to set up the connection using XML-RPC if you use Trac, else you won't get the rich Mylyn editor.

How to manage personal projects [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 3 years ago.
Improve this question
I am a student and I always develop projects on my own, mainly with Ruby On Rails.
I noticed that even a simple project may become complex if you can't easily rescue deleted code and pass from a version to another. Time Machine backups are not enough.
I would like to use a version control system, but they seem not to be intended for single-user projects. Am I wrong? If so, what policy and software do you use for managing your code?
There is nothing that says you can't use a standard version control system if you are a single user. Doing so would definitely keep you from experiencing some of the more painful problems such as merging files changed at the same time and other conflicts that arise from multiple developers.
Based on this, you could look into any of the version control systems (I believe Subversion is far and away the most popular right now) and pick out the one that will most closely match your needs, or has the interfaces you are most comfortable with.
Distributed version control systems are just for you: look for Bazaar, Git or Mercurial. They are lightweight, local commits are easy and you can always revert to a previous version. With a hosting provider such as GitHub, you can publish your projects, you get backup for free and you can easily share the projects with other potential contributors. Collaboration is easy because merging your changes is also a lightweight operation.
It is definitely a good idea to use version control software, and other project software on your own projects. These tools are not just for team working, although they allow team working. Beyond the obvious reasons for keeping track of your changes to the project it is a good idea to use SCM tools so you are familar with what the industry is using.
Subversion is widespread, and is quite a good bet as it's successfully replaced the earlier and older CVS tool. It relies on a central repository where the code is stored and can be backed up: where I have used SVN for personal projects and small team projects I have backed up to CD. If your project is opensource there are sites like sourceforge that support svn which you can use for hosting.
However as some of the other posters have indicated, a personal project might benefit more from a distributed system: git is increasing in popularity since git-hub has come online and porting efforts to are succeeding. http://git-scm.com/ It is likely that tools like these will grow in popularity over the coming years as they allow a greater number of people to participate on the same code. The idea of one central repository is relaxed giving each developer the ability to version track different designs and only give back to the community the versions they complete.
One of the benefits with using SCM for all projects personal or not, is that a separate server can be set up testing a version of the code. Automated testing on the latest version of the code (using a Continuous Integration Server or similar) can improve the quality of the software you are writing.
Some highly experienced software developers talk about a rhythm where they make incremental changes checking in frequently. Getting into the habit of making small changes which are complete and checking them in: is a good practice to get into for group working.
I would recommend Subversion. It's free and relatively simple, and learning a little about it may well beneficial in the future. It's cross platform and also available on a variety of hosted systems.
See also: https://stackoverflow.com/questions/250984/do-i-really-need-version-control
and: Using Version Control for Home Development?
Subversion!
You can install locally or use a hosted service. The services are nice if you want to switch between computers or use it as an offline backup. http://www.beanstalkapp.com/ has a free plan for personal use.
GitHub (git, not subversion) is also popular but I believe there is a small fee for personal projects.
Use git. It allows you to work without ever needing a server.
There are utilities for the command line and a GUI (older screenshots) too (for linux, windows and OS X).
If you later want to share or publish your project you can easily push it to a site like github.
Even for personal projects, if they become bigger than something you write a few hours, a version control system will be very beneficial.
Here are a few good points:
Many version control systems have good integration with IDEs.
Branching will allow you to experiment without the fear of having to take a long time to revert the changes. The branch can later be merged to the main trunk if needed.
Having a history of changes can be helpful, and tagging will allow setting milestones.
More efficient storage than full backups using regular copying of files.
Extra metadata (such as commit comments) can be attached.
Many version control systems are free!
I personally use a Subversion server running on my system which I access via the Subclipse plug-in in Eclipse, which I find to be very helpful in keeping track of my personal projects.
If you're interested in Subversion, Version Control with Subversion is a very helpful source in learning about the concepts, and how to set up and get started with Subversion.
Version control systems may be a little difficult at first, but it's definitely worth the effort to set up!
I'm very wary of using "always" in any answer I give on SO...
ALWAYS use version control. These days it's free AND easy to do. There's simply no reason ever not to use it. If it's an hour long project...good...it's an hour long project that's in version control now.
My solution has been slicehost(ok...not free), redmine(free RoR bug tracker)git and gitosis. Starting up a new project adds about five minutes on to the front of any coding, but its five minutes well worth it.
Use SVN or Mercurial.
Both very appropriate for "home" usage, I think Mercurial is better for you because by default you'll be creating one repository per project ( oposed to SVN's one "big" repository that stores everything ), so it will be easier to backup individual projects or exchange sources with others if needed.
Both work in command line mode or using explorer-like interfaces ( Tortoise ) or plugins available for the most usual IDE.
I use subversion to manage all my projects. xp-dev.com is a free subversion hosting solution. Also, I think, if you install tortisesvn it installs a subversion server to use locally.
A complete different version control system is dropbox (www.getdrobox.com). It's not (only) intended for source code. It available (with smart OS integration) for Mac, Win and Linux plus private Web Interface.
It may be interesting for you.
One item you will like about git such as using github hosting is that you have a history of changes that you can go to and get the actual code source and thus 'rescue' previous code changes.
You could also use the dropbox approach in just backing up raw code to a folder on the cloud..
I have used both methods for personal projects.
Hosted version control such as beanstalkapp.com is very convenient, but do consider whether you want to hand your source to a third party. You could consider a local repository, backed up online with a solution which encrypts the contents locally before uploading. I do this with subversion, Amazon S3 and JungleDisk.
Bitbucket is an absolute must consideration for personal projects based on:
Free, unlimited, private repositories
Up to 5 users on their free account
Git and Mercurial support
This allows one to quickly spin up a repository without having to pay attention to how many repos are available under a paid source code hosting account.
It also allows projects that will enter the public domain to be simply forked to GitHub, etc.
Version control is always important.
Try a free online SVN like http://beanstalkapp.com/
Do a search and you can find lots of suggestions
I would highly recommend downloading VisualSVN Server. It's a very simple setup and will do exactly what you need.
you can use any version control system that exists just for single user development. as you said, even simple project can become a nightmare if you change something you think is better and it fails. download tortoise snv - it's free and pretty simple to use - and keep your working versions in repository. commit code that works, keep possible small changes (for example refactor one class), build it, test it if it works -> commit, if it doesn't and you don't know why you can allways revert changes and try again.

Configuration Management with Subversion and SharePoint help

Ok, when hired on to my current company a year ago, I was tasked with migrating our development teams from VSS. They already had it in their minds that they wanted Subversion, and since I had experience using and setting up subversion, I was a good candidate. I first tried to sell TFS because it woul dhave solved the problem I am in right now, but since money is tight, and Subversion is free... well you get it. Anyway, I have finalized the propsal and the only thing standing in the way is the following.
I proposed that we store only our source code in SVN, and all documentation, release builds, and other project artifracts be stored in our SharePoint portal, so we don't have to give non developer stakeholders access to SVN. When I presented the proposal, all was excepted but the question arose about how to manage the syncronization between the artifacts (Ex: How to is document x version 3.1.2 associated with release 4.5.2). My initial reaction is to create a section in the SharePoint porject page for each new release that will hold the artificats (and keep track of changes too). Is there a better way of doing this? Does anyone know of anyone doing this? Or any integration packages to sync SVN with SharePoint?
Here is some info on the companies development environment. All of our software is for internal use, we sell none of it, so our customers are all in-house. We have 2 types of developers: 1. those who take care of maintainance and customization of third party software, and 2. those who write proprieatry software (which is where I fall). Our software we write is mostly .NET, but the 3rd party software is all over the board (COBAL, C, FORTRAN, Other crap that no ones cares about anymore).
Please advise, as I need to get this submitted soon. I HATE VSS!!!!!!!!!! and I need relief!
What we do internally is putting all docs under our version control system, I think it's much easier. Then, of course, you have to give access to not-developers.
In your case, using SVN, why don't you put everything inside and then use the webinterface to give access to the stakeholders? It's easy enough for them :-P
I would use SVN for both documents and source code.
Advantages:
You can synchronize versions of
documents with versions of source
code.
You have everything in one place, so
no two repositories to administrate.
Disadvantages:
You'd probably need to manage the
access rights for some stakeholders
to some parts of the folder
structures.
SVN is not the most appropriate tool
for document management
In order to solve the possible concurrent changes to the same document, you can use SVN property svn:needs-lock for these items, to make them editable by one person, who locks the item.
As pablo said, you can access the documents (at least for reading them) through the web interface.
You could expose the svn repo via the web interface and link to that in sharepoint. That way people who need to edit the documents would need access to subversion but anyone could easily access the documents "read only".
In our organization, we have docs/artifacts, code everything in SVN and have given access to non-technical stakeholders as well who use tortoise client.
however you can look at the following option
Option 1 : create a ASP.Net interface for non-technical users
You can build a simple web interface in ASP.net, configure that with a single user so you would not have to create separate users for all the nontechnical stakeholders and they would get access to the docs with proper version control, etc. you could look at sharpsvn for the implementation aspect. the disadvantage of this approach would be that you might have to invest some time in developing this app
Option 2 : ofcourse, create separate users for each non-developer stakeholder
This answer is probably too late for you implementation, but the simplest integration path may be to store the docs in SVN and then publish to Sharepoint with an svn-hook.
Build artifacts could be programatically published the same way from you build scripts.
You can upload docs to SharePoint using a simple POST
i.e.
http://blogs.msdn.com/rohitpuri/archive/2007/04/10/upload-download-file-to-from-wss-document-library-using-dav.aspx
Probably a little late, too, but I would avoid putting the documents in SVN if you have a SharePoint system setup. Though SVN does a fantastic job for source code, for document management it doesn't provide the ease-of-use of SharePoint. If you have it already setup and you are a primarily MS based network, SharePoint makes a lot of sense and can handle revision control for the MS based documentation much better than SVN.
Yes, you can manage access to SVN documents with a needs-lock, but chances are at some point you'll have a non-developer needing to access the documents. Explaining SVN to a non-developer, non-techie is not an easy thing.