Choosing an Open Source Hosting Service/License - xna

I am starting a game design project with a group of three other students. We would like to use some open source hosting service for version control, a wiki, etc. I have looked at threads like these (https://stackoverflow.com/questions/10490/best-open-source-project-hosting-site, https://stackoverflow.com/questions/29736/what-open-source-hosting-service-should-i-use, http://en.wikipedia.org/wiki/Comparison_of_open_source_software_hosting_facilities) but am still not sure which is best for our situation. Those threads seem to focus more on large scale, long term open source projects, whereas my group will be small and working together for a relatively short time.
Here are my constraints:
group of 4-5 people
10+ hours per week per person spent working on this project until May 2010
Language/framework: C# XNA
IDE: Visual Studio 2008
project will be no bigger than 100 mb
Features that would be nice to have:
Wiki
Milestone tracking
Issue/bug tracking
Code reviews
Document hosting (like the game manual, design spec, etc)
I'm thinking CodePlex would be nice because of its support for Visual Studio. I've had a positive experience with CodePlex in the past for a tiny project. However, Assembla has a nice UI, and its time tracking feature/linking tickets to SVN commits seems like it could be really helpful. (The time tracking in particular appeals to me, because if certain group members are slacking it could show through here.)
Google Code has been praised by many in the aforementioned threads, and everyone in my group has a Google account.
Also, I'm not sure which license we should pick for our project.

Codeplex already has lots of XNA related projects being hosted on it. One of the great things about codeplex is that you can choose from a large number of source control clients. It supports the TFS client, SVN, and mercurial. So from a flexibility perspective, it's very very simple.
From a license perspective ... well, you didn't really give enough information about what your goals are. Do you want a license like GPL, which ensures that your code can't be used in a closed source project dodwnstream? Do you not really care who does what?
Personally, for the open source projects I've hosted on codeplex, I prefer the mozilla public license. It basically says the code is as is, and you can do whatever you want with it, open or closed.

Google Code has been praised by many
in the aforementioned threads, and
everyone in my group has a Google
account.
I think this coupled with easy usage of Docs/Groups/etc. and what not for things you dont nesscearily want public as well as group integration, all with interfaces that the entire team is most likely already used to working with, makes it a logical choice unless there are some features better fulfilled by another service in your opinion. In not nessecarily singing the normal paraises of google here - it just seems like a very pragmatic no fuss solution.

Related

Team Foundation Server 2010 Project Structure With Small Teams

At my company, we have a very small (<5) team. We build internal web applications of which we support about a dozen and expect to add more.
We are setting up TFS 2010 and wonder what the best structure is? We don't work concurrently on a project, so I think we don't need branching. But do we create all our solutions under one Team Project or create a new Team Project for each web application?
We also have a few class libraries shared in all the web applications. How do we manage this? I've Googled all day on it and just gotten more and more confused.
I've looked at the guidance but it all seems pointed towards more complicated scenarios with bigger teams working concurrently.
Looking forward to any help,
Richard
I think you will find branching useful even if you have a development team of one!
Being able to try out significant code changes and being able to merge them back to the main (trunk) code is great.
In terms of shared class library projects, you can actually add them to more than one solution at any given time.
Of course changes will only happen in that project, and therefore every solution that uses them will be affected. Therefore you should set up 'continuous integration' on your build server in order to check that other solutions are not adversely effected.

Places to find a group for online summer project

The summer is coming up and I will be having a lot of time on my hands. I thought spending the time collaborating on a project online with several other passionated programmers somewhere in the world would be a great idea. I've never tried online collaboration before although I am used to working in larger teams and using source control, so it would mainly be the lack of direct communication that would be new to me. I would be interested in starting a project with programmers around my own level or (preferably) better and finishing the project over the summer/fall.
One problem, however. Where would I go about finding people for such a project? I'm not interested in joining an on-going project but rather be part of a new one. Certainly there must exist sites online where this is possible? The project properly wouldn't huge in any way. I'm thinking a little cozy project such as a arcade 2d game, a subtitle site, a world cup stats tracker or similiar.
Also, what would be a better approach. Finding the people for the project and then come up with an idea for the project or putting an idea out there and see if anyone was interested?
PS: If anyone on this site find the idea interesting feel free to post here or PM me and we'll have a talk about it.
The Google Summer of Code is really perfect for that (and there usually are very interesting projects to work on):
Google Summer of Code (GSoC) is a
global program that offers student
developers stipends to write code for
various open source software projects.
We have worked with several open
source, free software, and
technology-related groups to identify
and fund several projects over a three
month period. Since its inception in
2005, the program has brought together
over 3,500 students and more than more
than 4,000 mentors & co-mentors from
nearly 100 countries worldwide, all
for the love of code. Through Google
Summer of Code, accepted student
applicants are paired with a mentor or
mentors from the participating
projects, thus gaining exposure to
real-world software development
scenarios and the opportunity for
employment in areas related to their
academic pursuits. In turn, the
participating projects are able to
more easily identify and bring in new
developers. Best of all, more source
code is created and released for the
use and benefit of all.
Go check fast if you can still enroll.
To expand on Symen Timmermans answer, non-profit agencencies traditionally do not have the budget to fund many of their IT needs and would probably really appreciate some volunteer IT assistance. I would think you could easily muster up a summer project by approaching some agencies. Be clear that you are offering your services for free.
Besides gaining some exposure to some real-world problems, this may be an opportunity to network within your area. And it also looks pretty good on a resume.
This, perhaps, will lead you in the direction of a project. From there you could try contacting people you know or perhaps ask around at a local user group to see if anyone is interested in collaborating with you.
The OpenHatch.org website exists to help connect people with tasks that need to be completed on various Open Source projects, and to connect them with mentors in the target languages/technologies.
On the Volunteer Opportunities page, you can search through hundreds of open tickets in over 250 projects. On the People page, you can search for others who are willing to mentor you in the target subject with a search like can_mentor:"Python", or search for others near you, and more. The more people that join on the web site, the more visibility that it gets for more projects and people to come and participate, so why not join in the fun?
Why a programming project?
Your tag 'nonprogramming' sparked some ideas. Why don't you research possibilities in your neighbourhood for things like community projects? There might be plenty of organizations looking for you as a volunteer.
Though those projects might not seem as challenging as an innovative programming project can be, they can be really rewarding, especially if you directly witness the benefit your collective effort provides to others. Also you might learn a new skill, meet interesting people, and learn new things about yourself.
Think about it.
First you'd have to think about what kind of project you wanna do.
Game, etc..
Then I would look for a Forum / Community and start looking there for mini-projects.
I however have no particular site to offer you currently.
Also I believe the communities will depend on the languages etc... you are comfortable programming in.
Cheers,
Build It With Me is a website made for connecting developer and designers with ideas.
To find people to work with you on a new project, you have :
to go where they are
to convince them to work with you
Programming folks can be met directly on IRC. Go to a channel corresponding to the computing language you like, and you'll met great people, knowing your language and wasting their time on IRC. You have then to convince them to stop wasting time saying nothing on IRC and to go with you on a new project.
Summer is already well started, so you should choose a small project that can be useful to anybody. People will work with you if the project you propose them is interesting enough for them. Here is an idea of a useful tool that does not exist yet :
http://ha.ckers.org/blog/20100613/web-server-log-forensics-app-wanted/
You could try going to SourceForge and finding a new project or creating your own. They have a large community there so you shouldn't have any trouble finding people to work with.

What advantages does TFS 2010 have over Axosoft OnTime?

I am currently creating a business case for rolling out TFS 2010 as our source control and bug/release management tool.
We currently use OnTime for our bug tracking software and subversion for our SCM.
I was wondering what advantages TFS 2010 has over OnTime?
I have done some thinking so far and would love to hear responses:
TFS 2010 allows linking changesets->work items->builds
TFS 2010 provides greater customisation of workflow than OnTime
TFS 2010 is integrated into the Visual Studio IDE - This requires less apps to be open and less window flicking
Thanks in advance.
TFS is one of the least intuitive Version Control systems I have ever had the misfortune to have to use. It may have numerous "bullet point" advantages over OnTime (and other comparable systems), in terms of raw feature-lists and capabilities, but the key factor is whether it can fit in with your working processes.
My experience with TFS is that you will be required to adapt to the TFS way of working, because adapting TFS to your way of working will be impossible or too difficult to justify.
We recently reviewed a number of possible alternatives to replace a system comprising SVN and a manual bug-tracking system (Excel spreadsheets). On-Time was evaluated but deemed too expensive and complex.
In the end we opted to continue using SVN, but drastically revised (simplified) our repository structures and chose to combine SVN with the FogBugz issue tracking system. The integration between these two systems was fairly rudimentary "out-of-the-box", but required only a little effort on our part to achieve the much closer level of integration we desired. Certainly far LESS effort than my previous experience of a TFS roll-out involved.
Our SVN/FogBugz system is also now integrated with a FinalBuilder build automation suite.
The result is a system that not only fits our working practices perfectly (since we devised the means by which the systems would integrate to achieve that) but which is also infinitely adaptable as our working practices evolve.
I think that it really depends on the size of your team(s), and what you want out of source control.
I used bugzilla in combination with Perforce for a couple of years and found that both were really very good at their own individual things while working in a very small team (2-3 people), but the suffered from a lack of integration between them and from some little idiosyncrasies that took time to get used to.
I recently moved to a new job where TFS is used extensively. There are 4 main teams in this company with 10-12 developers in each, split into further project teams below that level, and it is in this kind of environment that TFS really shines imo. It's biggest advantages in my view are:
1) The integration with Visual Studio - it's not just a case of having less windows open, but it really does speed things up and make your life easier. Things like VS automatically checking out files for you as you work (no issues with accidental checkouts due to lockless editing), being able to synronise local + TFs builds, being able to quickly compare the local version against previous ones..yes you can get 3rd party plugins to integrate but none to this level and with the same stability.
2) The communication features - simple things like integraton with Live Messenger (provided you configure TFS correctly) are great for large teams. We use WLM to communicate accross the office and for collaboration as its just quicker than walking over to someone else every time you need to ask a quick question.
3) Linking builds/changelists to tasks - Yes other SCMs do this but again it's just done in a very nice, integrated fashion..I guess it's nothing special to TFS but personally I like how it tracks this.
4) Ease of merging/lockless editing. I've had experience with some other merge tools and the TFS one works nicely enough, making merging after concurrent editing pretty simple. It's very similar to perforce in this respect, but also with a usually pretty effective auto-merge tool which I use for tiny edits that I know cannot cause any potential issues with edits other developers are working on.
5) Auto building/build management. Working with a couple of large solutions containing 20-30 projects that depend on each other, this is a godsend. We have it set to queue up a build every 20 minutes IF something has changed, and when one has happened its listed in the history log..so easy to see when you need to update your local libraries.
I don't have any experience with configuring it other than build management, but I have heard that this is the worst part of TFS..that its a bit of a pain to get everything running correctly.
So, translating that to a business case..I'd say that if you are a Microsoft software house with large/multiple teams, then the time savings and productivity improvements that you will see as a result of the above features are worth the investment in setting it up. Its free to use in most cases as you will probably have a MSDN subscription (maybe some CAL issues but i'm not sure) so your biggest cost will be in user training and configuration.
Firstly, I would suggest to consider what is your primary concern, what is the problem that you are tying to solve by rolling out TFS.
In terms of version control I would recommend the blog post from Martin Fowler on Version Control Tools and a follow up results of a version control systems survey. Admittedly this might be and is a subjective view of the subject but one that seems to be pretty popular. TFS clearly looses in comparison to other Version Control Systems.
I currently work with TFS2008 and we have migrated from SourceSafe and IBM ClearCase/ClearQuest and there is no doubt that TFS is far better then any of the previous tool, still it has its serious shortcomings and the new version will only partially address those.
Addressing the individual point you have raised:
TFS allows to link builds with changesets and work items, but so many other systems
I have not used OnTime but the workflow customisation can be both an advantage and a hindrance. Potentially, there might be a lot of work involved in creating a custom process template and you would still need a sensible UI on top of it (Team Explorer or Web Access might not be sufficient)
Integration with Visual Studio is an advantage but there are add-ons to Visual Studio that allow integration with other source control providers
On the advantages of TFS I would probably mention
Distributed builds and separate build agents - if you do many builds
Full integration with Visual Studio via the Team Explorer
Extensive reporting infrastructure (though you can only take full advantage of it when using MSTest for all the testing)
SharePoint collaboration site for each project
Given the substantial cost of rolling out full TFS installation I would really consider what real business benefit would this solution give you that others don't.
Not shure about TFS, but the UI of OnTime is kind of non intuitive.
Also I dont like that you have different fields for Bugs and Tasks. Of course you can always add your own fields, but the default layout should be ready to use.
We endet up using only "Bugs" even if it is a task.
I dont say its a bad product, but if TFS has a better UI for bugtracking now (which it hadnt 4years ago when I had to use it and hated it ), then this would be an argument for TFS.
Sorry to hear that you want to get rid of SVN. Thats a hard decision.
I'm not sure about the licensing for the Axios OnTime but if you have an MSDN subscription then it's no additional cost. See the blog post here
I've been using TFS 2008 only for version control and while it's a nice upgrade from VSS some things that we're tyring to do aren't exactly in line with what is expected. That said, I've written a quick little web app that fills in those gaps. It was pretty easy to develop against using the API and there's lots of addons to help with specific tasks.
Probably not the answer you want to hear, but I'd be doing my damnedest to make a business case against TFS.
In any event, my general advice would be to try it out yourself (or in a small team) on some very small, but real project - maybe some tool you need on a once-off basis, code that can be thrown away or easily migrated to another system because it's small. There's nothing like actually using the system!
I have used OnTime and Subversion. I have not used TFS as bug tracker, but I've used it for source control. The source control part of it is basically still the bad old Visual SourceSafe. If you are currently using Subversion you will be swearing your head off any time you need to rename a file or, heaven forbid, delete a file and then create one with the same name - never mind any branching or merging. It's hard to convey in a post just how primitive and fragile it is as a source control system - that's why you really have to use it. You'll see what I mean when you find yourself stuck with a file you can neither check in nor delete and some meaningless error. Not that Subversion is perfect - but it's a decade ahead of VSS!
The workflow part of TFS, which I've only briefly played with, seems very "heavy" to me. That is, it really restricts the user to that workflow and requires a lot of steps that are often unnecessary. This stuff can help, but it can also just as easily get in the way. A good system provides the workflow when it's needed, but allows you to bypass it when it would just get in the way. When we used OnTime, we found that even its relatively unobtrusive workflow was often just more trouble than it was worth. Of course, this all depends on the specifics of your situation. How are you using OnTime workflows now and what do you want out of TFS that OnTime doesn't provide?
Linking changesets to bugs can be done with Subversion as well. It supports some extensibility mechanism - I don't remember the details, but FogBugz uses it (we switched to it after OnTime). Linking the to builds can be done by adding a simple svn tag command to your build script. Visual Studio integration can be done with VisualSVN.
The cost is also a huge downside of TFS. It is very expensive for what it does, especially when you take into account how well it does it. Yes, it's "free" if you have to have an MSDN subscription for every developer anyway - but do you have to, without TFS? Subversion is free, full stop. OnTime and FogBugz are far more reasonably priced.
I would strongly recommend against TFS. I once tried to restore the source code from a crashed instance, but I gave up after a few days, so source code was lost (= it failed to do the one thing a VCS should do). Of course, I might have done something wrong, but it's not easy to get everything right when the restore guide is two miles long, and it really is something that should happen so rarely that nobody is experienced with it.
Now I use Subversion/Trac, which gets the job done (and customizing the workflow in Trac is so easy it's not fun, compared to TFS).
For the time being, avoid TFS!
I would stick with SVN + FinalBuilder and then choose between FogBugz or CounterSoft Gemini.

Team Foundation Server - What Process Template is for me?

I finally was able to complete the installation of TFS and started the creation of my first team project which introduced me to the process template.
After following to the link to Microsoft's site for process template information I was inundated with new information to consider. What templates have all of you had experience with that either worked out very well for you or were more of a stumbling block to the project? What were the biggest advantages and disadvantages you've encountered?
Some information about my project, I'm the lead developer for a small company and will be using TFS/VSTS to create an intranet portal to consolidate the end users day to day and increase automation to enhance productivity etc. It's entirely new development taking advantage of C#, ASP.NET and SQL Server 2008.
Ideally I'd like to take advantage of features to enhance collaboration with the stake holders to help add desired features and to track the status of development and offer feedback etc. I was also looking to take advantage of JetBrain's TeamCity for my TFS so if any specific template / software really adds cohesion between TFS, TeamCity, Developers, and Stakeholders that would be ideally what I'm interested in.
Are you already using a software development process like scrum? If yes you can try this Team Process Template over here.
How large is your project team and the project? Microsoft has published one of it's internal Process Templates (MPT) over here. You can get some guidiance and inspiration from this template.
As tangurena mentioned. People use the standard templates, change the bug a bit and store some documents there. I would recommend to keep the process 'light' as well.
However the process template isn't all.
Here are some ideas what I would do (in your case):
Create some high order workitems (features/stories) which stakeholdes can create (constraints and TFS user groups are your friend). They can then access their requested features via the TFS Work Item Web Access. That way you don't need a CAL for them
Create some reports which show planned work accodring to releases.
Setup the build automation and create Reports (a.k.a. Release Notes) from your workitems according to the builds.
What were the biggest advantages and disadvantages you've encountered?
Imho the biggest disadvantage is that you start believing that the template is your silver bullet. It's not, it's your starting point.
The TFS ecosystem offers you alot opportunities to create own bits of software that fit your needs. Just check out the TFS API.
Here is another nice agile-based template (original is on SSW, but you have to get around a login wall).
This template helps enhance cohesion between developers, managers, and other stakeholders by including more robust support for project process (documentation, reviews, &c., &c.). For example, there are types built in for process elements like release plans.
In general terms, I'd favour as small a process as you can manage. The more states, the more fields you have, the more likely the information in them is just plain wrong.
We're running with our own version on the Agile template. Most of what we did to it was delete stuff.
You can use the TFS API to log builds into the database, which should enable you to bridge TeamCity and TFS. Other than that, I'd probably just go with the web interface that comes with TFS, I don't think you need third party software for this.
K.I.S.S.! I created a custom work item based off the Agile one. And thats it, just one work item. There is a "System Severity" that IT uses and a "Business Priority" that the client/customer uses. There is also a "Request Type". With those three along with the built in Area and Iteration the entire team, including the clients can query the work items to get only the items they care about for the release they are concerned with (or all of them regardless of the release).
I did not modify the state machine much at all. This left us with something that is very flexible for everyone. Everything from blue sky requests to the mundane content/visual bugs can be logged there.
The client uses TFS Web Access (unlimited CAL) and the devs (me and 1 other) use VS. At my last job I created the same setup, the dev team was a team of 5 and it worked even better there! I was dev lead there as well and technical PM.
The biggest advantage was having a very flexible system for everyone, when using 1 work item type for everything. The disadvantage would be a learning curve for the client, but once they knew how to use it most like it. A suggestion would be to look into cheaper tools out there for a similar implementation, but, our .edu discount with MS cant be beat.
I would have to say that you must identify the system you will use for your company's SDLC first. The process template is merely a tool and without a good understanding of the underlying process it will not help and can make things more difficult. User adoption is crucial to the success of the SDLC and process template.
We use Scrum for Team System. We chose this due to our experience with Scrum as an SDLC methodology. There are several excellent books and articles on the web to help you get up to speed. Scrum will tie together the business stakeholders into the process.
In our system the Product Manager is in total charge of Product Backlog Items and works with myself and the CTO to prioritize them into Sprint Backlog Items.
The only change we have made to the process template was to add a "Failed Test" state and corresponding workflow.
It might not be the best template for you but I still wanted to mention it here: XP for Team System. It is basically a simplified version of MSF for Agile Software Development:
[...] it removes some of the setup tasks that an XP project will probably not want to undertake and changes the Work Item Type name Scenario to Story.

Suggestions for requirements development tools that support CMMI objectives

We are currently evolving our development processes in an effort to become CMMI compliant (we will start with level 2, and move up from there). We are trying to locate a tool that is inexpensive (or free) that will allow us to develop requirements in the spirit of CMMI. In other words, we need to be able to enter our requirements, track changes to them, provide alerts to individuals when requirements change, perform traceability, etc. Our projects are typically small (typically 3 - 7 developers and a tester or two).
We have looked at many of the commercial tools, but they cost more than we are able to afford. We looked at a few on SourceForge (OSRM and others) but could not find anything that was sufficiently mature that also had the features that we needed.
We are looking for suggestions for a tool that meets the above requirements.
INCOSE is an excellent resource for this sort of question. They maintain a Tools Database that indexes COTS and GOTS System Engineering tools. Some of the tools that perform requirements management also have high-level System Eng functionality (CORE, for example) whereas others are more narrowly-focused (i.e. RequistePro).
Most of these tools will cost money, but may provide some limited free functionality. Workspace.com, for example, provides some free functionality. I would recommend against rolling your own solution, or adapting a tool that is not specifically intended for requirements management, because the hidden cost of getting it going, as well as inefficiency at the intended task could become burdensome.
If you absolutely can't afford to spend any money on a requirements tool, it would be better to use the free functionality from a commercial tool. But don't do that... pony up the cash for RequisitePro and sleep better knowing that you're getting the right tool for the job.
How about starting of with a Wiki? We use TWiki but there are many others available. The wiki we uses
sends an email when any pages change
stores the history of changes to each page
by using the auto-linking of wikis you can create a hierarchy of requirements
This seems to cover most of your items. Wikis like TWiki have plugins which may also help you.
If you only have 3-7 developers on a project using one of the big commercial tools may be far too complex for what you need.
We're heavily into CMMI at our company, but all of our tools are developed in-house.
All I can recommend is to develop your own tools. You will at least have the advantage that it will reflect your business process.
In general, for a new tool, we start off with a tool developed on a project, which is then shared with the rest of the company, if it has been successful. Don't be afraid to use Excel to trace your requirements along with a statuts, which along with a good change control system, such as subversion, gives you a lot of traceability.
A team in the company I used to work for was working on customizing Visual Studio Team System work item templates to handle requirements tracking. One goal, which you should consider as well, was to enable traceability from requirements through to developer work items and then defects. This enables some powerful analysis of which requirements are tied to the most defects.

Resources