# SharePoint

SharePoint is a collection of enterprise content management and knowledge management tools developed by Microsoft. Launched in 2001, it was initially bundled with Windows Server as Windows SharePoint Server, then renamed to Microsoft Office SharePoint Server, and then finally renamed to SharePoint. It is provided as part of Microsoft 365, but can also be configured to run as on-premises software.
According to Microsoft, as of December 2020 SharePoint had over 200 million users.

## Applications

The most common uses of SharePoint include:

### Enterprise content and document management

SharePoint allows for storage, retrieval, searching, archiving, tracking, management, and reporting on electronic documents and records. Many of the functions in this product are designed around various legal, information management, and process requirements in organizations. SharePoint also provides search and 'graph' functionality. SharePoint's integration with Microsoft Windows and Microsoft 365 (previously known as Office) allows for collaborative real-time editing, and encrypted/information rights managed synchronization.
This capability is often used to replace an existing corporate file server, and is typically coupled with an enterprise content management policy.

### Intranet and social network

A SharePoint intranet or intranet portal is a way to centralize access to enterprise information and applications. It is a tool that helps an organization manage its internal communications, applications and information more easily. Microsoft claims that this has organizational benefits such as increased employee engagement, centralizing process management, reducing new staff on-boarding costs, and providing the means to capture and share tacit knowledge (e.g. via tools such as wikis, media libraries, etc.).

### Group collaboration

SharePoint contains team collaboration groupware capabilities, including: document management, project scheduling (integrated with Outlook and Project), and other information tracking. This capability is centred around the concept of a "Team Site". Team sites can be independent, or linked to a Microsoft Teams team.

### File hosting service (personal cloud)

SharePoint hosts OneDrive for Business, which allows storage and synchronization of an individual's personal work documents, as well as public/private file sharing of those documents.

### Custom web applications

SharePoint's custom development capabilities provide an additional layer of services that allow rapid prototyping of integrated (typically line-of-business) web applications. SharePoint provides developers with integration into corporate directories and data sources through standards such as REST/OData/OAuth. Enterprise application developers use SharePoint's security and information management capabilities across a variety of development platforms and scenarios. SharePoint also contains an enterprise "app store" that has different types of external applications which are encapsulated and managed to access to resources such as corporate user data and document data.

## Configuration and customization
### Web-based configuration

SharePoint is primarily configured through a web browser. The web-based user interface provides most of the configuration capability of the product.

### SharePoint Designer

SharePoint Designer is a semi-deprecated product that provided 'advanced editing' capabilities for HTML/ASPX pages, but remains the primary method of editing SharePoint workflows.
A significant subset of HTML editing features were removed in Designer 2013, and the product is expected to be deprecated in 2016–7.
Microsoft SharePoint's Server Features are configured either using PowerShell, or a Web UI called "Central Administration". Configuration of server farm settings (e.g. search crawl, web application services) can be handled through these central tools.
While Central Administration is limited to farm-wide settings (config DB), it provides access to tools such as the 'SharePoint Health Analyzer', a diagnostic health-checking tool.
In addition to PowerShell's farm configuration features, some limited tools are made available for administering or adjusting settings for sites or site collections in content databases.
A limited subset of these features are available by SharePoint's SaaS providers, including Microsoft.

### Custom development

* The SharePoint Framework (SPFx) provides a development model based on the TypeScript language. The technical stack is Node.js, Yeoman, Gulp, NPM, and Webpack. It is the only supported way to customize the new modern experience user interface (UI). It has been globally available since mid 2017. It allows a web developer to step into SharePoint development more easily.
* The SharePoint "App Model", later renamed to the "Add-in model" provides various types of external applications that offer the capability to show authenticated web-based applications through a variety of UI mechanisms. Apps may be either "SharePoint-hosted", or "Provider-hosted". Provider hosted apps may be developed using most back-end web technologies (e.g. ASP.NET, Node.js, PHP). Apps are served through a proxy in SharePoint, which requires some DNS/certificate manipulation in on-premises versions of SharePoint. Microsoft announced the retirement of the Add-in model in November 2023 with an end-of-life date set to April 2026).
* The SharePoint "Client Object Model" (available for JavaScript and .NET), and REST/SOAP APIs can be referenced from many environments, providing authenticated users access to a wide variety of SharePoint capabilities.
* "Sand-boxed" plugins can be uploaded by any end-user who has been granted permission. These are security-restricted, and can be governed at multiple levels (including resource consumption management). In multi-tenant cloud environments, these are the only customizations that are typically allowed.
* Farm features are typically fully trusted code that need to be installed at a farm-level. These are considered deprecated for new development.
* Service applications: It is possible to integrate directly into the SharePoint SOA bus, at a farm level.
Customization may appear through:
* Application-to-application integration with SharePoint.
* Extensions to SharePoint functionality (e.g. custom workflow actions).
* 'Web Parts' (also known as "portlets", "widgets", or "gadgets") that provide new functionality when added to a page.
* Pages/sites or page/site templates.

## Server architecture

SharePoint Server can be scaled down to operate entirely from one developer machine, or scaled up to be managed across hundreds of machines.

### Farms

A SharePoint farm is a logical grouping of SharePoint servers that share common resources. A farm typically operates stand-alone, but can also subscribe to functions from another farm, or provide functions to another farm. Each farm has its own central configuration database, which is managed through either a PowerShell interface, or a Central Administration website (which relies partly on PowerShell's infrastructure). Each server in the farm is able to directly interface with the central configuration database. Servers use this to configure services (e.g. IIS, windows features, database connections) to match the requirements of the farm, and to report server health issues, resource allocation issues, etc...

### Web applications

Web applications (WAs) are top-level containers for content in a SharePoint farm. A web application is associated primarily with IIS configuration. A web application consists of a set of access mappings or URLs defined in the SharePoint central management console, which are replicated by SharePoint across every IIS Instance (e.g. Web Application Servers) configured in the farm.

### Site collections

A site collection is a hierarchical group of 'SharePoint Sites'. Each web application must have at least one site collection. Site collections share common properties (detailed here), common subscriptions to service applications, and can be configured with unique host names. A site collection may have a distinct content databases, or may share a content database with other site collections in the same web application.

### Service applications

Service applications provide granular pieces of SharePoint functionality to other web and service applications in the farm. Examples of service applications include the User Profile Sync service, and the Search Indexing service. A service application can be turned off, exist on one server, or be load-balanced across many servers in a farm. Service Applications are designed to have independent functionality and independent security scopes.

## Administration, security, compliance

SharePoint's architecture enables a 'least-privileges' execution permission model.
SharePoint Central Administration (the CA) is a web application that typically exists on a single server in the farm; however, it is also able to be deployed for redundancy to multiple servers. This application provides a complete centralized management interface for web and service applications in the SharePoint farm, including Active Directory account management for web and service applications. In the event of the failure of the CA, Windows PowerShell is typically used on the CA server to reconfigure the farm.
The structure of the SharePoint platform enables multiple WAs to exist on a single farm. In a shared (cloud) hosting environment, owners of these WAs may require their own management console. The SharePoint 'Tenant Administration' (TA) is an optional web application used by web application owners to manage how their web application interacts with the shared resources in the farm.

## History
### Origins

SharePoint evolved from projects codenamed "Office Server" and "Tahoe" during the Office XP development cycle.
"Office Server" evolved out of the FrontPage and Office Server Extensions and "Team Pages". It targeted simple, bottom-up collaboration.
"Tahoe", built on shared technology with Exchange and the "Digital Dashboard", targeted top-down portals, search and document management. The searching and indexing capabilities of SharePoint came from the "Tahoe" feature set. The search and indexing features were a combination of the index and crawling features from the Microsoft Site Server family of products and from the query language of Microsoft Index Server.