These last few weeks have been the most eventful in ServiceStack's history where we've delivered considerable enhancements to the framework that includes our compelling new HTML Story followed shortly after by our new API Design which promotes an even more flexible and enjoyable server and client apis that we we're happy to see was well received by the Hacker Community.
During this time we quietly surpassed another important milestone for the project where we've now amassed contributions from more than 100+ different contributors to the ServiceStack projects. The total at this time stands over 300 putting ServiceStack in rarified air as one of the top active and contributed to Open Source .NET projects!
Many of our contributors were new to GitHub and OSS in general so we're ecstatic we've been able to help expand the .NET Open Source community and we'd like to pay special thanks here as without our contributors we'd be more ServiceStick than ServiceStack :)
There have been too many valuable contributions, enhancements and fixes to list them all here, but we wanted to say special thanks to some of the highlights we've received over the years:
- Steffen Müller - Core Team member leading the development of the async branch, internal dev and our documentation efforts
- Sergey Bogdanov - Core Team member leading our Windows / Mono CI release builds, packaging, deployments + code maintenance efforts
- Thomas Grassauer - OrmLite Core member: MySql owner, Memcached Cache Provider
- Angel Colmenares - OrmLite Core member: Firebird owner, Expression Visitor Support in OrmLite
- Tomasz Kubacki - OrmLite Core member: PostgreSQL owner
- Guru Kathiresan - OrmLite Core member: Oracle owner and T4 POCO code-generator from existing DB schema for OrmLite
- Joachim Rosskopf - ServiceStack's Virtual File System, Glob search support
- Ivan Korneliuk - Inspiration for the new API and implementation of auto-generation of REST-ful routes
- Jon Canning - File Upload support, Android support and Integration Template Test project
- Dan Barua - Auto-register of conventional REST-ful routes, Redis Hash APIs, redis client password management
- Assaf Raman - MongoDB Auth Provider, managed response pipeline
- Iain Ballard - Dynamic Proxy, IDictionary support to text serializers
- Andrew - Polymorphic types, Dictionary object, Custom Serialization and hooks to text serializers
- Ethan Brown - ServiceStack's Logging NuGet packaging and deployments
- Daniel Wertheim - Date handling and support for anonymous types in text serializers
- Matt Johnson - Maintaining Silverlight 4 & 5 support, Date Handling in text serializers
- Derek Beattie - Maintaining Silverlight 4 & 5 support
- Bo Kingo Damgaard - Support for Digest Authentication
- Daniel Crenna - Dynamic Expando Json API, JSON property convention support in text serializers
- Brad Culberson - Redis connection pool and internal byte buffer management enhancements
- Nitin Kumar - Support for consistent hashing in Redis
- Steve Dunn - Support for XBox
- Kvervo - Windows Phone support
- Joshua Lewis - NHibernate Auth Provider
- Manual Nelson - Azure Cache Provider
- Louis Haußknecht - Bit operations in redis
- Paul Duran - Blocking Pops on multiple lists in Redis
- Pieter Van Parys - Multi dimensional array support in text serializers
- Shawn Neal - Embedding of external resources
- Damian Hickey - VS.NET 2012 and OWIN support
They've been so many contributions that many of the features listed above are still yet to be documented - something we hope to rectify soon. No doubt there are many more valuable contributions we've missed, but so we don't forget, we're maintaining a live list of contributors on the GitHub Project's Home Page.
Maintaining a healthy contributor base is vital for the project as it provides us with a constant instant feedback loop telling us what the most popular use-cases are and what real-world features are important. It's imperative when developing a framework that features are driven and shaped by real-world use-cases as every added feature has a complexity cost (both in implementation and understanding) so we've found it best to optimize and provide elegant out-of-the-box solutions for common real-world problems first whilst also providing access to the underlying raw and un-restrictive API so our users are never prohibited in achieving their goals.
A healthy contributor base is especially important for ServiceStack as our Message-based Design lets you implement your service with minimal C# that's unaffected by endpoint concerns. At this level where we start from ideal C# and project out your service is in it's most re-usable form, and it's up to our active users and contributor base to determine which contexts are the most important to add support for first to host your services logic in.
The feedback we've received has led us to implement the most popular use-cases, increasing the re-usability and accessibility of your services - where it's now possible to host the same existing implementation on the number of different Host configurations, endpoints and formats below:
- ASP.NET (.NET / Mono)
- HttpListener / Console App / Windows Service / Linux Daemon (.NET / Mono)
- MQ Host
- HTML (MVC Razor, Markdown Razor, Markdown, HtmlReport)
- JSON (+ JSONP)
- SOAP 1.1/1.2
There are more useful endpoints and hosts in the pipeline: expanded MQ options, integration with non-.NET platforms are key areas where ServiceStack can add a lot of value and as it's the most cost-effective deployment option to deploy .NET services we're also looking to further simplify and provide more automation and git-deployment options of ServiceStack services in Linux Cloud hosting environments.
We're always looking for new Contributors and there's still a plenty of room to fill: more tutorials, posts and example projects to add to the Community Resources are always welcomed, as well as expanding the documentation with real-world tips and solutions to common use-cases.
Code-wise more Formats/Endpoints, MQ Hosts, Caching and Authentication Providers will provide instant utility to all our users, expanding the supported environments and configurations where ServiceStack services can be hosted in.