Contributing

Demis Bellot edited this page Oct 25, 2016 · 11 revisions


  1. Getting Started

    1. Creating your first project
    2. Create Service from scratch
    3. Your first webservice explained
    4. Example Projects Overview
    5. Learning Resources
  2. Designing APIs

    1. ServiceStack API Design
    2. Designing a REST-ful service with ServiceStack
    3. Simple Customer REST Example
    4. How to design a Message-Based API
    5. Software complexity and role of DTOs
  3. Reference

    1. Order of Operations
    2. The IoC container
    3. Configuration and AppSettings
    4. Metadata page
    5. Rest, SOAP & default endpoints
    6. SOAP support
    7. Routing
    8. Service return types
    9. Customize HTTP Responses
    10. Customize JSON Responses
    11. Plugins
    12. Validation
    13. Error Handling
    14. Security
    15. Debugging
    16. JavaScript Client Library (ss-utils.js)
  4. Clients

    1. Overview
    2. C#/.NET client
      1. .NET Core Clients
    3. Add ServiceStack Reference
      1. C# Add Reference
      2. F# Add Reference
      3. VB.NET Add Reference
      4. Swift Add Reference
      5. Java Add Reference
    4. Silverlight client
    5. JavaScript client
      1. Add TypeScript Reference
    6. Dart Client
    7. MQ Clients
  5. Formats

    1. Overview
    2. JSON/JSV and XML
    3. HTML5 Report Format
    4. CSV Format
    5. MessagePack Format
    6. ProtoBuf Format
  6. View Engines 4. Razor & Markdown Razor

    1. Markdown Razor
  7. Hosts

    1. IIS
    2. Self-hosting
    3. Messaging
    4. Mono
  8. Security

    1. Authentication
    2. Sessions
    3. Restricting Services
    4. Encrypted Messaging
  9. Advanced

    1. Configuration options
    2. Access HTTP specific features in services
    3. Logging
    4. Serialization/deserialization
    5. Request/response filters
    6. Filter attributes
    7. Concurrency Model
    8. Built-in profiling
    9. Form Hijacking Prevention
    10. Auto-Mapping
    11. HTTP Utils
    12. Dump Utils
    13. Virtual File System
    14. Config API
    15. Physical Project Structure
    16. Modularizing Services
    17. MVC Integration
    18. ServiceStack Integration
    19. Embedded Native Desktop Apps
    20. Auto Batched Requests
    21. Versioning
    22. Multitenancy
  10. Caching

  11. Caching Providers

  12. HTTP Caching

  13. CacheResponse Attribute

  14. Cache Aware Clients

  15. Auto Query

  16. Overview

  17. Why Not OData

  18. AutoQuery RDBMS

  19. AutoQuery Data

  20. AutoQuery Memory

  21. AutoQuery Service

  22. AutoQuery DynamoDB

  23. Server Events

    1. Overview
    2. JavaScript Client
    3. C# Server Events Client
    4. Redis Server Events
  24. Service Gateway

    1. Overview
    2. Service Discovery
  25. Encrypted Messaging

    1. Overview
    2. Encrypted Client
  26. Plugins

    1. Auto Query
    2. Server Sent Events
    3. Swagger API
    4. Postman
    5. Request logger
    6. Sitemaps
    7. Cancellable Requests
    8. CorsFeature
  27. Tests

    1. Testing
    2. HowTo write unit/integration tests
  28. ServiceStackVS

    1. Install ServiceStackVS
    2. Add ServiceStack Reference
    3. TypeScript React Template
    4. React, Redux Chat App
    5. AngularJS App Template
    6. React Desktop Apps
  29. Other Languages

    1. FSharp
      1. Add ServiceStack Reference
    2. VB.NET
      1. Add ServiceStack Reference
    3. Swift
    4. Swift Add Reference
    5. Java
      1. Add ServiceStack Reference
      2. Android Studio & IntelliJ
      3. Eclipse
  30. Amazon Web Services

  31. ServiceStack.Aws

  32. PocoDynamo

  33. AWS Live Demos

  34. Getting Started with AWS

  35. Deployment

    1. Deploy Multiple Sites to single AWS Instance
      1. Simple Deployments to AWS with WebDeploy
    2. Advanced Deployments with OctopusDeploy
  36. Install 3rd Party Products

    1. Redis on Windows
    2. RabbitMQ on Windows
  37. Use Cases

    1. Single Page Apps
    2. HTML, CSS and JS Minifiers
    3. Azure
    4. Connecting to Azure Redis via SSL
    5. Logging
    6. Bundling and Minification
    7. NHibernate
  38. Performance

    1. Real world performance
  39. Other Products

    1. ServiceStack.Redis
    2. ServiceStack.OrmLite
    3. ServiceStack.Text
  40. Future

    1. Roadmap
Clone this wiki locally

This page has moved to docs.servicestack.net/contributing


Ask a support question

The easiest way to ask support questions is on Stack Overflow using the #ServiceStack hash tag. ServiceStack Customers also have access to the customer support channels listed on their support page.

Proposing a Feature

Feature requests can be proposed on ServiceStack's User Voice. Proposals can also be made via code samples in GitHub pull-requests.

Contributing code

Our source is developed & published on GitHub.com (learn more). If you are new to Git, check out the Pro Git Book online or at your bookseller of choice.

From any of the ServiceStack code repositories on GitHub, you can Fork the code to your own GitHub account.

To get the source on your local development machine, simply clone your local forked repo using Git:

git clone https://github.com/USERNAME/PROJECT.git

Each repository has a README that should be helpful to learn more about the specifics of the language, project and its development environment.

Please ensure any code contributions include tests that should verify the behavior of new features, verify the issue that a fix fixes and to prevent future regressions or even a reproducible failing tests if you want to report an issue.

Contribution License Agreement (CLA)

In order to become a contributor to the ServiceStack projects on GitHub you must follow some legal requirements and approve the ServiceStack Contributor License Agreement.

Until you meet the legal requirements your pull requests / source contributions will not be considered or reviewed.

Please configure your Git client with a name and email address to use for your commits. This will also help the team validate your CLA status:

git config user.name Your Name
git config user.email YourAlias@YourEmailDomain

Step-by-step guide

Checkout the latest code

In order to obtain the source code you need to become familiar with Git (see progit.org/book/) and Github (see help.github.com/) and you need to have Git installed on your local machine. You can obtain the source code from Github by following the these steps on your local machine:

  1. Go to https://github.com/ServiceStack/[PROJECT]
  2. In GitHub Click on the Fork button
  3. Clone the repository on your local machine with the following Git command git clone git@github.com:[USERNAME]/[PROJECT]

Create bug fixes and features

You can then start to make modifications to the code in your local Git repository. For commits to ServiceStack v3, this should be done in the v3 branch. Note: all contributions must come with tests verifying the desired behavior.

You can commit your work with following commands:

  1. Switch to the master branch (or v3 branch) for ServiceStack v3.x git checkout master
  2. Add and commit your local changes git commit -a -m 'commit message describing changes'
  3. Push your changes from your local repository to your github fork git push origin v3

Once your code is in your github fork, you can then submit a pull request for the team's review. You can do so with the following commands:

  1. In GitHub click on the Pull Request button
  2. In the pull request select your fork as source and ServiceStack/[PROJECT] as destination for the request
  3. Write detailed message describing the changes in the pull request
  4. Submit the pull requst for consideration by the Core Team

If there are conflicts between your fork and the main project one, github will warn you that the pull request cannot be merged. If that's the case, you can do the following:

  1. Add remote to your local repository using the following Git commands git remote add upstream -f git@github.com:ServiceStack/[PROJECT]
  2. Update your local repository with the changes from the remote repository by using the following Git commands (make sure you're in the branch you're submitting the code from) git merge upstream/master
  3. Resolve any conflicts locally and finally do another push with the command git push origin master

Please keep in mind that not all requests will be approved. Requests are reviewed by the Core Team on a regular basis and will be updated with the status at each review. If your request is accepted you will receive information about the next steps and when the request will be integrated in the main branch. If your request is rejected you will receive information about the reasons why it was rejected.

Code Reviews

Feature requests should be proposed on ServiceStack's User Voice, whilst the ServiceStack community has a discussion group used for submitting code reviews and discussing design changes, best practices, and other important topics. Any disruptive changes to any project should be discussed here before any code is contributed.

Expect a good amount of feedback as part of any pull request: not only which branch to merge to and from, but also consistency guidelines, matching existing code, and making targeted, smart changes when fixing bugs.

Thank you

Huge thanks go to the contributors from the community who have been actively working with the ServiceStack community.

You can find a list of contributors here.