Collaboration Tool for VB.Net programmers

Hello,

Don't know if there is a solution like this, but I am looking for a software or tool that I can use to have the programmers collaborating in software development, history software versions, privileges to access codes, able to assign programmer to specific codes, possibility to have start/end-dates for each software to developed that has been assign, possibility to have at least 2 o 3 programmers work with the code simultaneously (and when done, the software tool would merge all changes into the code) and finally some sort of history of each code on who have worked on it, who started it, who finished it.  The programmers work with VB. Net.

Thank you very much for you help.
LVL 1
janaAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Bill PrewIT / Software Engineering ConsultantCommented:
It might be overkill for what you need, but Team Foundation Server is Microsoft's offering to meet those needs.

Share Code. Track Work. Ship Software. | Team Foundation Server - Visual Studio

I've also seen Jira compared to TFS, but have never used it myself.

Jira | Issue & Project Tracking Software | Atlassian

And VisualSVN doesn't have all the features you listed, but it does integrate tightly with VS and provides some of the code management capability.

VisualSVN - Subversion-based version control for Windows


»bp

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
John TsioumprisSoftware & Systems EngineerCommented:
I am working with Azure Devops (the Cloud version of TFS) and i am happy...i code from everywhere and i share easily my code.
Scott McDaniel (Microsoft Access MVP - EE MVE )Infotrakker SoftwareCommented:
There's also GitHub, which does much of what you want. It's free for up to 3 collaborators, and the Pro version ($7/month) allows unlimited collaborators. The Pro version ($9/month) allows a bit more security and role-based access options.
CompTIA Network+

Prepare for the CompTIA Network+ exam by learning how to troubleshoot, configure, and manage both wired and wireless networks.

janaAuthor Commented:
Thank you all!  I started reading up on the links  (so there is a lot to look into)

I understand that each solution has more features of what I am looking for.  Below is summary of my wish-list of needs (the first 2 are the most important):
  • Simultaneously programming a same code - (Most Important)
  • Seamless "Merging" all changes by various programmer working on it simultaneously  - (Most Important)
  • History of versions/builds
  • Assign privileges to programmers to access specific codes
  • Have start-dates and end-dates registered in the code working in
  • History of who have worked on it, who started it, who finished it

Based on all you guys expert experience, which of the list above is NOT possible (or cannot do) in solution recommended of TSF, JIRA, VisualSVN and GitHub?
Scott McDaniel (Microsoft Access MVP - EE MVE )Infotrakker SoftwareCommented:
Jira is more of an project management system and issue tracking system. I don't use it, but from what I understand you'd use Jira in conjunction with a version control system like GitHub. I really couldn't tell you much about Jira, so I'll let others respond and tell me if I'm wrong.

As far as the GitHub, it will do everything in your bullet list with the possible exception of assign permissions. I don't know if that's possible, but my limited research seems to indicate it is not. You can assign permissions to your repository, of course, but I don't think you can allow UserA to access Module1 code but not Module2 code.

I don't know if Github will tell you who started the code, or who finished it, but it will give you the history of commits, which would tell you the first person to commit, and the last person to commit. I assume that would be your "who started it" and "who finished it".

Regarding the history: Any version control system is only as good as the commit comments. If your developers write commit comments like "committing today", then that's not going to do you much good. You'll have to establish some base level rules for commit comments, and make sure they're followed. GitHub would give you the history, of course, but if that history gives you nothing more than the dates of the commits and a bunch of useless comments, it won't do much good. Of course, Github can show you the differences between two files, but having to wade through all that to determine what was modified can be a real pain.

I believe any version control system will allow two or more developers to work on the same code. They wouldn't be much good if not. Of course, someone must determine how the code is merged, and that's a manual process.

MSFT just bought GitHub, so it's very tightly integrated with Visual Studio now. I also wonder how long it will be before TFS is incorporated into that platform (or the other way around).
Chris StanyonWebDevCommented:
I use BitBucket and JIRA - BitBucket is Atlassian's online Git Hosting service and JIRA is their project management app.

Our general workflow is that you create a project in JIRA (My Funky New App!). You break the project down into manageable blocks (issues). You tag these issues as Bug / Improvement / New Feature / Task etc, and give them a priority (High / Low / Medium etc). If needed, you can assign a member of your team as the Lead Developer on an issue, and you can tag each issue with a Version, so for example, you may have 30 issues tagged for Version 1 of your software. Each developer can see which issues they have assigned to them (although any dev can check out any issues - you may be able to control this through permissions, but I've never needed to).

This JIRA Project links to the Git repo on BitBucket, so a dev can view their issues on JIRA, and check them out to work on them. When they checkout an issue, they create a Feature Branch on the Git repo and do their work. During the development process, they will make commits to their local git repo as they progress, and push it to the remote repo (how and when is a management decision). Commit messages help to identify what has been worked on, and by who. It tracks all changes to the source code.

When a particular issue has been tested / completed, the developer creates a Pull Request. This signals that their code is ready to be merged back into the main developement branch (you can assign permissions on who can action pull requests). Several developers can work on the same issue if needed and that's a fundamental part of how Git works. You can merge / rebase different commits so that you all stay in sync.

Once a pull request has been merged, the issue is marked as Done in JIRA. You keep running through this process until all the issues are complete. In JIRA, you can check the ongoing progress of your Version 1 Software (30 issues / 22 Done / 4 in Progress etc.)

Git gives you a lot of flexibility in how you manage branches. A common method of using it is called the Git Workflow. You have a Master branch, and from there you have a Develop branch. When any issue is checked out, the dev branches from Develop, does their work, and their work is merged back into the Develop branch once it's completed. Once all the work is done, the Lead Developer / DevOps managers etc, would then merge the Develop branch into Master, and that's the Release version of your Software. Noone ever works directly on the Develop or Master branch.

Git has plenty of tools to allow for conflict management and JIRA allows you to run scrums / kanban boards etc and is pretty flexible in what it can do.
janaAuthor Commented:
Thank you.  Will like input of the other expert if ok.

At the beginning of the question, Bill in his entry said that VisualSVN doesn't have all the features I need, by any chance do you know of at least it has the first 2? (Simultaneously programming a same code and "Merging" all changes)
Bill PrewIT / Software Engineering ConsultantCommented:
At the beginning of the question, Bill in his entry said that VisualSVN doesn't have all the features I need, by any chance do you know of at least it has the first 2? (Simultaneously programming a same code and "Merging" all changes)
It certainly supports multiple people working on the same code files, yes.  When it comes to merging I think it is a little less sophisticated than something like TFS (which I think works pretty decent for auto merging, and conflict resolution when conflicts arise).  It looks like VisualSVN can do automatic merges as long as there are no conflicts.  Conflicts occur when changes to the same lines are made by different people.  In that case human intervention is usually needed.  I think VisualSVN may just alert you to the problem, but I don't think it gives a GUI toolset to enable the manual decisions and merging.


»bp
janaAuthor Commented:
Thank you very much.  I think I have pretty much a handle of how to work with this.
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Visual Basic.NET

From novice to tech pro — start learning today.