I'm an experienced developer who has been working with .Net for the last 5 years or so. As I've been assembling an application stack for a startup idea I've had, I've noticed that many of the supporting tools that I would like to use are either flaky or have become commercial. As I have no revenue, and factoring in the cost for for Visual Studio, SQL Server (yes, I know about Biz Spark), etc, and I've suddenly realised that I should be looking elsewhere.
So, without further ado, here are my requirements and nice-to-haves. The obvious front-runners are Java and Ruby, but I'm happy to hear any other suggestions (Object oriented and compiled preferred but not required. PHP not welcome here).
Overall
- Mandatory: Supported by shared hosting to get started
- Desirable: Should not be too fiddly to get working (just work when components are plugged in)
Framework
- Mandatory: Modern mvc framework
- Mandatory: Fine-grained control over html output
Code Quality
- Mandatory: Logging framework
- Desirable: Static analysis (complexity, etc)
- Desirable: Generate UML diagrams of code structure
- Desirable: Test coverage reports
OOP Stuff
- Mandatory: ORM that handles semi-deep hierarchies, incl many-to-many relationships.
- Mandatory: Mock framework
- Mandatory: IOC container (probably its own category)
IDE
- Mandatory: Formatting assistance (indentation)
- Mandatory: debugging: break points, variable inspection
- Desirable: auto-completion: VS's intellisense is really nice. This is close to mandatory
- Desirable: debugging: in-place code execution (immediate window), move current frame backwards
- Desirable: Test framework integration
Code Quality
- Mandatory: Test framework
- Desirable: Code coverage
- Desirable: Generate documentation from code comments
Build
- Desirable: One click pull from SVN, build, test, code coverage, code documentation
- Desirable: Continuous integration (for later when we, er, get really big)
Other notes: I'm happy using Linux (would be quite refreshing!). I'm assuming MySQL for DB, as I don't require ACID compliance (and it's probably ACID by now anyway), and SVN for source control.
Any help or suggestions would be greatly appreciated.
Edit: Currently leaning towards Sinatra, as it looks very elegant, but allows the user to have as much or as little control as they want. And I will select an answer when I think the answers have stopped.