Skip to content

Commit

Permalink
Update customizing.md (eclipse-che#5328)
Browse files Browse the repository at this point in the history
* Fix links for stacks

Signed-off-by: Stevan Le Meur <stevan.lemeur@gmail.com>

* Update links on various entry point to the documentation

Signed-off-by: Stevan Le Meur <stevan.lemeur@gmail.com>

* Create CUSTOMIZING.md
  • Loading branch information
slemeur authored Jun 12, 2017
1 parent 300bf99 commit f7c4ed4
Showing 1 changed file with 44 additions and 52 deletions.
96 changes: 44 additions & 52 deletions CUSTOMIZING.md
Original file line number Diff line number Diff line change
@@ -1,75 +1,67 @@
Eclipse Che is a platform for creating distributed developer tooling. There are numerous ways to extend, modify, and customize Eclipse Che. This document itemizes all of the resources available for customizing Che. We have documentation pages, tutorials, and specifications.

#### Stacks
A stack is the configuration of a runtime that can be used to power a workspace. Users choose the stack that powers a workspace within the user dashboard. Stacks have a recipe that defines how the container should be created and also meta data that defines the tags associated with the stack.
* [Add Your Stacks to Che](https://www.eclipse.org/che/docs/workspace/stacks/#custom-stacks-for-che)
* [Stack Data Model](https://www.eclipse.org/che/docs/workspace/stacks)
* [Che Included Stacks](https://www.eclipse.org/che/docs/workspace/stacks/#section-ready-to-go-stacks)
* [Add Your Stack to Default Che Assembly](https://www.eclipse.org/che/docs/workspace/stacks#adding-stacks-to-the-che-default-assembly)
* * TODO: Update this link to point to wiki page that can be updated by community
A stack is the configuration of a runtime that can be used to power a workspace. Users choose the stack that powers a workspace within the user dashboard. Stacks have a recipe that defines how the container should be created and also meta data that defines the tags associated with the stack.
* [Add Your Stacks to Che](https://www.eclipse.org/che/docs/devops/runtime-stacks/index.html#stack-administration)
* [Stack Data Model](https://www.eclipse.org/che/docs/devops/runtime-stacks-data-model/index.html)
* [Che Included Stacks](https://www.eclipse.org/che/docs/devops/runtime-stacks/index.html#stack-library)
* [Add Your Stack to Default Che Assembly](https://www.eclipse.org/che/docs/devops/runtime-stacks/index.html#adding-stacks-to-the-che-default-assembly)

#### Recipes
A recipe defines the runtime of a workspace environment. Workspaces can have multiple environments, each with their own runtime. Che supports different kinds of runtimes, but the default is Docker letting us make use of [Dockerfiles](https://docs.docker.com/engine/reference/builder/) as recipes.
* [Recipes](https://www.eclipse.org/che/docs/workspace/recipes)
* [Writing Custom Recipes](https://www.eclipse.org/che/docs/workspace/recipes/#section-authoring-custom-recipes)
A recipe defines the runtime of a workspace environment. Workspaces can have multiple environments, each with their own runtime. Che supports different kinds of runtimes, but the default is Docker letting us make use of [Dockerfiles](https://docs.docker.com/engine/reference/builder/) or [Compose](https://docs.docker.com/compose/compose-file/#build) as recipes.
* [Recipes](https://www.eclipse.org/che/docs/devops/runtime-recipes/index.html)
* [Writing Single-Container Recipes](https://www.eclipse.org/che/docs/devops/runtime-recipes/index.html#single-container-recipes)
* [Writing Multi-Container Recipes](https://www.eclipse.org/che/docs/devops/runtime-recipes/index.html#multi-container-recipes)
* [Che Included Recipes](https://github.com/eclipse/che-dockerfiles)

#### Project Samples
A project sample is a packaged set of sample code that is launched in the workspace when a user creates a new project. Users can select from a sample while using the user dashboard. Samples have both sample code and a default set of commands associated with them. Samples are loaded based upon the type of stack selected. You can add your own samples to the default Che distribution.
* [Samples](https://www.eclipse.org/che/docs/workspace/samples)
* [Add Samples](https://www.eclipse.org/che/docs/workspace/samples/#register-new-project-templates)
* [Samples Data Model](https://www.eclipse.org/che/docs/workspace/samples)
* [Add Your Samples to Default Che Assembly](https://www.eclipse.org/che/docs/workspace/samples/#add-your-template-to-default-che-assembly)
A project sample is a code template cloned into the workspace when a user creates a new project. Users can select from a sample while using the user dashboard. Samples have both sample code and a default set of commands associated with them. Samples are loaded based upon the type of stack selected. You can add your own samples to the default Che distribution.
* [Samples](https://www.eclipse.org/che/docs/devops/project-samples/index.html)
* [Add Samples](https://www.eclipse.org/che/docs/devops/project-samples/index.html#register-new-project-templates)
* [Samples Data Model](https://www.eclipse.org/che/docs/devops/project-samples-data-model/index.html)
* [Add Your Samples to Default Che Assembly](https://www.eclipse.org/che/docs/devops/project-samples/index.html#add-your-template-to-default-che-assembly)

#### Commands
A command is a process that is injected into your workspace. It's outputs are streamed into the console. Commands have type and you can create, save, update and delete commands from within the IDE. You can create templates that have sample projects with default commands that are pre-populated in the IDE. Commands can reference macros that intelligently navigate the project tree or current selections.
* [Commands](https://www.eclipse.org/che/docs/ide/commands/)
* [Macros](https://www.eclipse.org/che/docs/ide/commands/#macros)
* [Command Data Model](https://www.eclipse.org/che/docs/workspace/data-model-samples/#commands)
* [Commands](https://www.eclipse.org/che/docs/ide/commands/index.html)
* [Authoring Command Instructions](https://www.eclipse.org/che/docs/ide/commands/index.html#authoring-command-instructions)
* [Macros](https://www.eclipse.org/che/docs/ide/commands/index.html#macros)
* [Command Data Model](https://www.eclipse.org/che/docs/devops/runtime-stacks-data-model/index.html#commands)

#### Extension Development
An extension is a set of code and resources that are packaged into a plugin that alter the behavior of the system. Extensions can be IDE extensions, workspace extensions (they are injected into the workspace agent running within each workspace), or Che extensions (injected into the Che server). Extensions are authored in Java and maven, and then packaged into JAR / ZIP files for deployment into Eclipse Che.
* [Extension Intro](https://www.eclipse.org/che/docs/plugins/introduction/)
* [Developing Extensions](https://www.eclipse.org/che/docs/plugins/create-and-build-extensions/)
* [JSON Extension Tutorial](https://www.eclipse.org/che/docs/plugins/introduction/#the-json-example)
* [Authoring Extensions in Che](https://www.eclipse.org/che/docs/plugins/setup-che-workspace/#setup-the-che-ide)
* [Authoring Extensions in Eclipse](https://www.eclipse.org/che/docs/plugins/setup-che-workspace/#eclipse-ide---yatta-installer)
* [Authoring Extensions in IntelliJ](https://www.eclipse.org/che/docs/plugins/setup-che-workspace/#gwt-super-dev-mode-for-intellij)
* [Extension Intro](https://www.eclipse.org/che/docs/assemblies/intro/index.html)
* [Assembly Lifecycle](https://www.eclipse.org/che/docs/assemblies/assembly-lifecycle/index.html)
* [Plugin Lifecycle](https://www.eclipse.org/che/docs/assemblies/plugin-lifecycle/index.html)
* [Development Workflow](https://github.com/eclipse/che/wiki/Development-Workflow)
* [Dependency Injection](https://www.eclipse.org/che/docs/plugins/dependency-injection-basics/)
* [Extensions Packaged With Che](https://github.com/eclipse/che/tree/master/plugins)
* [Extension SDK JavaDoc](https://www.eclipse.org/che/docs/plugins/java-class-reference/)
* [Extensions Samples](https://github.com/eclipse/che/tree/master/samples)
* [Extension SDK JavaDoc](https://www.eclipse.org/che/docs/assemblies/sdk-class-reference/index.html)

#### IDE Extensions
IDE extensions are compiled into JavaScript with other extensions to create a single, JavaScript application. You can package many extensions together into a single JavaScript application. The JavaScript application is cross-browser optimized. You can debug extensions and perform execution traces from within the browser of extension code. IDE extensions can invoke REST services that are running within the Che server or within a workspace. Che provides default workspace REST APIs or you can provide your own with workspace extensions.
* [Invoking Workspace REST APIs](https://www.eclipse.org/che/docs/plugins/calling-workspace-apis)
* [Editors](https://www.eclipse.org/che/docs/plugins/code-editors)
* [Project Type](https://www.eclipse.org/che/docs/plugins/project-types)
* [Actions](https://www.eclipse.org/che/docs/plugins/actions)
* [Services](https://www.eclipse.org/che/docs/plugins/serverworkspace-access)
* [Parts](https://www.eclipse.org/che/docs/plugins/parts)
* [Commands](https://www.eclipse.org/che/docs/plugins/helloworld-extension)
* [Events](https://www.eclipse.org/che/docs/plugins/introduction/#actions)
* * TODO: Panels
* * TODO: Popups
* * TODO: Wizards
* [Extensions Samples](https://github.com/eclipse/che/tree/master/samples)
* [Invoking Workspace REST APIs](https://www.eclipse.org/che/docs/assemblies/sdk-rest-apis/index.html)
* [Editors](https://www.eclipse.org/che/docs/assemblies/sdk-code-editors/index.html)
* [Project Type](https://www.eclipse.org/che/docs/assemblies/sdk-project-types/index.html)
* [Actions](https://www.eclipse.org/che/docs/assemblies/sdk-actions/index.html)
* [Services](https://www.eclipse.org/che/docs/assemblies/sdk-services/index.html)
* [Parts](https://www.eclipse.org/che/docs/assemblies/sdk-parts/index.html)
* [Themes](https://www.eclipse.org/che/docs/assemblies/sdk-themes/index.html)
Che IDE is developed based on GWT, but it is also possible to embed native web components:
* [Embedded Native JavaScript](https://www.eclipse.org/che/docs/assemblies/sdk-embed-htmljs/index.html)

#### Server-Side Extensions
#### Server-Side Extensions and Agents
Server-side extensions are libraries that are deployed into the workspace agent when the workspace is activated. Che deploys some standard server-side extensions that expose the Workspace REST API to the outside world. You can author extensions that modify or extend this API with your own services. New workspace APIs are exposed as JAX-RS services and you use dependency injection to define the API interfaces.
* * TODO: JAX-RS Conventions
* * TODO: Adding Custom Services into Workspace Agent
* [Services](https://www.eclipse.org/che/docs/assemblies/sdk-services/index.html)
Agents are scripts that are executed after a [runtime machine](https://www.eclipse.org/che/docs/devops/runtime-machines/index.html) is created. They add additional capabilities to the machines they’re injected in - for example to allow terminal access or enhanced language services (using the Language Server Protocol). Agents allow these services to be injected into machines built from stock Dockerfiles or Compose files.
* [Agents](https://www.eclipse.org/che/docs/assemblies/sdk-custom-agents/index.html)
* [Language Server Protocol](https://www.eclipse.org/che/docs/assemblies/sdk-language-server-protocol/index.html)
* [Agents Packaged With Che](https://github.com/eclipse/che/tree/master/agents)

#### Workspace REST API
IDE extensions have access to a default set of workspace APIs that are deployed within each workspace. These APIs are available through a Swagger configuration.
* [Swagger](https://www.eclipse.org/che/docs/server/rest-api)
* [Authentication](https://www.eclipse.org/che/docs/setup/managing/#authenticated-access)
* [Workspaces](https://www.eclipse.org/che/docs/server/create-workspaces/)
* [Projects](https://www.eclipse.org/che/docs/server/api-projects/)
* [Project Types](https://www.eclipse.org/che/docs/server/project-types/)
* [File Access](https://www.eclipse.org/che/docs/server/build-run/)
* [Events](https://www.eclipse.org/che/docs/server/events/)

#### Plug-Ins and Assemblies
A plugin is a set of extensions (both IDE and workspace extensions) along with their collective reosurces that are packaged into a single deployable unit, usually as a JAR or ZIP file. An assembly is a set of plug-ins combined with the Eclipse Che core that is assembled into a re-distributable set of binaries. A new assembly can fundamentally alter the Che branding. Che can create assemblies packaged as a desktop IDE or as a new Che server.
* [Plugin Development](https://www.eclipse.org/che/docs/plugins/introduction/)
* [Drag and Drop](https://www.eclipse.org/che/docs/plugins/developing-plugins) - Not yet updated for 5.x
* [Assemblies](https://www.eclipse.org/che/docs/plugins/assemblies)
IDE extensions have access to a default set of workspace APIs that are deployed within each workspace. These APIs are available through a Swagger configuration.
* [Swagger](https://www.eclipse.org/che/docs/assemblies/sdk-rest-apis/index.html#browsing-rest-apis)
* [Authentication](https://www.eclipse.org/che/docs/setup/managing/index.html#authenticated-access)
* [Workspaces](https://www.eclipse.org/che/docs/assemblies/sdk-workspace/index.html)

0 comments on commit f7c4ed4

Please sign in to comment.