-
Notifications
You must be signed in to change notification settings - Fork 532
Design Goals
This page describes the general guiding principles using which the Fluid Framework was developed. Its purpose is to provide some background to why certain design decisions were made, and describe the general thinking behind why certain aspects of the codebase were developed. It is by now means definitive or exhaustive, as there are many different areas of the code, from client components, distributed data structures (DDS), hosts & loaders, server deployment and logic, etc., that each require their own nuances. These are, however, good general guidelines to have in mind and consider while introducing any changes.
- Create modular, reusable pieces of client component code that update in a synced, real-time manner
- Be platform agnostic. Fluid Frameworks should work with any data storage provider, rendering environment, and platform.
- Have an extremely lightweight, easy-to-deploy backend server to relay messages amongst clients
- Handle all ordering logic for real-time functionality on individual clients, not the server
- Abstract complex real-time logic from client view code using generic, multi-purpose DDS'
- Define clean interfaces for components to interact amongst one another, and respect component logic abstraction. Components should not refer to one another's inner DDS'.
- Be easy to develop on. Onboarding to Fluid should require minimal initial setup, and tooling should be available to readily create new components.
This wiki is focused on contributing to the Fluid Framework codebase.
For information on using Fluid Framework or building applications on it, please refer to fluidframework.com.
- Submitting Bugs and Feature Requests
-
Contributing to the Repo
- Repo Basics
- Common Workflows and Patterns
- Managing dependencies
- Client Code
- Server Code
- PR Guidelines
- CI Pipelines
- Breaking vs Non-Breaking Changes
- Branches, Versions, and Releases
- Compatibility & Versioning
- Testing
- Debugging
- npm package scopes
- Maintaining API support levels
- Developer Tooling Maintenance
- API Deprecation
- Working with the Website (fluidframework.com)
- Coding Guidelines
- Documentation Guidelines
- CLA