diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 00adace0c8e0..589ef127bc73 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -42,7 +42,7 @@ jobs: with: mode: exactly count: 1 - labels: "kind/bug, kind/cleanup, kind/feature, kind/i18n, dependencies" + labels: "kind/bug, kind/cleanup, kind/documentation, kind/feature, kind/i18n, dependencies" pull-request-title-check: name: Pull request title check diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md new file mode 100644 index 000000000000..a126da456b07 --- /dev/null +++ b/DEVELOPMENT.md @@ -0,0 +1,64 @@ +# Development + +## Architecture + +The Kubernetes Dashboard consists of a few main modules: + +- API — Stateless Go module, which could be referred to as a Kubernetes API extension. It provides functionalities like: + - Aggregation (i.e., returning metrics and events for pods) + - Sorting + - Filtering + - Pagination +- Auth — Go module handling authentication to the Kubernetes API. +- Web — Module containing web application written in Angular and Go server with some web-related logic (i.e., settings). Its main task is presenting data fetched from Kubernetes API through API module. +- Metrics Scraper — Go module used to scrape and store a small window of metrics fetched from the Kubernetes Metrics Server. + +## Code Conventions + +When writing new Go code, we try to follow conventions described in [Effective Go](https://golang.org/doc/effective_go.html). We are using [Go Report Card](https://goreportcard.com/report/github.com/kubernetes/dashboard) to monitor how well we are doing. + +For Angular, we try to follow conventions described in [Angular Style Guide](https://angular.io/guide/styleguide) and [Material Design Guidelines](https://material.io/guidelines/). + +We are running a set of checks for each pull request, all of them have to be successful before the change can be merged. You can run most of them locally using `make` targets, i.e. `make test` or `make check` (see [`Makefile`](Makefile) for more information). + +Tools that we are using include [golangci-lint](https://github.com/golangci/golangci-lint), [eslint](https://eslint.org), [stylelint](https://github.com/stylelint/stylelint), [prettier](https://prettier.io/). + +## Development Environment + +Make sure the following software is installed and added to your path: + +- [Docker](https://docs.docker.com/engine/install/) +- [Go](https://golang.org/dl/) (check the required version in [`modules/go.work`](modules/go.work)) +- [Node.js](https://nodejs.org/en/download) (check the required version in [`modules/web/package.json`](modules/web/package.json)) +- [Yarn](https://yarnpkg.com/getting-started/install) (check the required version in [`modules/web/.yarnrc.yml`](modules/web/.yarnrc.yml)) + +## Getting Started + +After cloning the repository, install web dependencies with `cd modules/web && yarn`. + +Then you can start the development version of the application with `make serve` It will create local kind cluster and run all the modules with Docker compose. + +If you would like to run production version use `make run` + +To create Docker images locally use `make image`. + +See [`Makefile`](Makefile) to get to know other targets useful during development. You can also run `make help` to quickly check the list of available commands. + +## Dependency Management + +We keep all the dependencies outside the repository and always try to avoid using suspicious, unknown dependencies as they may introduce vulnerabilities. + +We use [go mod](https://github.com/golang/go/wiki/Modules) to manage Go dependencies. We try to use only official releases, avoid using specific or latest commits. Before sending any changes we run `go mod tidy` to remove unused dependencies. + +We use [Yarn](https://yarnpkg.com/) to manage JavaScript dependencies. After checking out repository, run `yarn` to install all dependencies. + +Additionally, we use [Dependabot](https://github.com/dependabot) to automate dependency updates. + + +## Releases + +We follow [semver](https://semver.org/) versioning scheme for versioning releases of app and all of its modules. + +Each module described in the [Architecture section](#architecture) has its own releases and versions. After testing everything on a production version of application, i.e., using `make run`, new release can be created. For modules described above we create tag and the release with module name and its version in it, i.e.`api/v1.0.0` or `web/v2.4.5`. After a new tag is created, new images should be built by GitHub actions. + +We also create application releases by releasing a new version of Helm chart that uses modules described before. After applying all the changes to the chart and testing it on a Kubernetes cluster a new tag and the release can be created. For application releases we put only the version in the tag and release name, i.e. `v3.0.0`. This release should include detailed description including release notes, compatibility matrix and all other important information. diff --git a/README.md b/README.md index a50763528e38..d4b89f09669d 100644 --- a/README.md +++ b/README.md @@ -30,22 +30,18 @@ You can install Dashboard using `kubectl` as described in the installation instr ## Access -You can access Dashboard as described in the instructions that can be found in the [access guide](docs/user/accessing-dashboard/README.md). +You can access the Dashboard as described in the instructions that can be found in the [access guide](docs/user/accessing-dashboard/README.md). ## Create An Authentication Token (RBAC) To find out how to create sample user and log in follow [Creating sample user](docs/user/access-control/creating-sample-user.md) guide. -**NOTE:** -* Kubeconfig Authentication method does not support external identity providers or certificate-based authentication. -* [Metrics-Server](https://github.com/kubernetes-sigs/metrics-server) has to be running in the cluster for the metrics and graphs to be available. Read more about it in [Integrations](docs/user/integrations.md) guide. - ## Documentation Dashboard documentation can be found on [docs](docs/README.md) directory which contains: * [Common](docs/common/README.md): Entry-level overview. * [User Guide](docs/user/README.md): [Accessing Dashboard](docs/user/accessing-dashboard/README.md) and more for users. -* [Developer Guide](docs/developer/README.md): Important information for contributors that would like to test, run and work on Dashboard locally. +* [Developer Guide](DEVELOPMENT.md): Important information for contributors that would like to test, run and work on Dashboard locally. ## Community, discussion, contribution, and support diff --git a/docs/README.md b/docs/README.md index c9e948a12af3..3d336e509674 100644 --- a/docs/README.md +++ b/docs/README.md @@ -4,6 +4,7 @@ * [FAQ](common/faq.md) * [Dashboard arguments](common/arguments.md) +* [Internationalization](common/internationalization.md) ## [User Guide](user/README.md) @@ -13,15 +14,7 @@ * [Integrations](user/integrations.md) * [Labels](user/labels.md) -## [Developer Guide](developer/README.md) - -* [Getting started](developer/getting-started.md) -* [Release procedures](developer/release-procedures.md) -* [Dependency management](developer/dependency-management.md) -* [Architecture](developer/architecture.md) -* [Code conventions](developer/code-conventions.md) -* [Text conventions](developer/text-conventions.md) -* [Internationalization](developer/internationalization.md) +## [Developer Guide](../DEVELOPMENT.md) ---- _Copyright 2019 [The Kubernetes Dashboard Authors](https://github.com/kubernetes/dashboard/graphs/contributors)_ diff --git a/docs/common/faq.md b/docs/common/faq.md index fcbfcfe70c4b..dd07df106db7 100644 --- a/docs/common/faq.md +++ b/docs/common/faq.md @@ -2,10 +2,6 @@ In case you did not find any answer here and in [closed issues](https://github.com/kubernetes/dashboard/issues?q=is%3Aissue+is%3Aclosed), [create new issue](https://github.com/kubernetes/dashboard/issues/new/choose). -### I would like to use development environment on HTTPS, how to do it? - -Refer to our [Developer guide](../developer/getting-started.md). - ### I cannot see any graphs in Dashboard, how to enable them? Make sure, that `metrics-server` and `dashboard-metrics-scraper` are up and running and Dashboard was able to connect with `dashboard-metrics-scraper`. You should check Dashboard logs and look for `metric` and `scraper` keywords. You can find more informations about Dashboard's Integrations [here](../user/integrations.md). diff --git a/docs/developer/internationalization.md b/docs/common/internationalization.md similarity index 100% rename from docs/developer/internationalization.md rename to docs/common/internationalization.md diff --git a/docs/developer/README.md b/docs/developer/README.md deleted file mode 100644 index de12e099064d..000000000000 --- a/docs/developer/README.md +++ /dev/null @@ -1,25 +0,0 @@ -# Developer guide - -## Important - -Most of the development guidelines are outdated and will be updated as soon as possible. Refer to the `Makefile` in the root directory of the project for helpful -targets that will help you get started. - ---- - -## Deprecated - -* [Getting started](getting-started.md) -* [Release procedures](release-procedures.md) -* [Dependency management](dependency-management.md) -* [Architecture](architecture.md) -* [Code conventions](code-conventions.md) -* [Text conventions](text-conventions.md) -* [Internationalization](internationalization.md) - -If you're looking for ideas on what to contribute, in addition to taking a look at issues with the `help-wanted` tag. - -If you have any further questions, feel free to ask in `#sig-ui` on the [Kubernetes' Slack](https://kubernetes.slack.com/). - ----- -_Copyright 2019 [The Kubernetes Dashboard Authors](https://github.com/kubernetes/dashboard/graphs/contributors)_ diff --git a/docs/developer/architecture.md b/docs/developer/architecture.md deleted file mode 100644 index a33be8d23040..000000000000 --- a/docs/developer/architecture.md +++ /dev/null @@ -1,49 +0,0 @@ -# Architecture - -**IMPORTANT:** It reflects only the structure as of v2.0.0 and may not reflect the structure of -previous or future versions. - -Kubernetes Dashboard project consists of two main components. They are called here the -frontend and the backend. - -The frontend is a single page web application that runs in a browser. It fetches all its -business data from the backend using standard HTTP methods. It does not implement business logic, -it only presents fetched data and sends requests to the backend for actions. - -The backend runs in a Kubernetes cluster as a Kubernetes service. Alternatively, it may run anywhere -outside of the cluster, given that it can connect to the control plane. The backend is an HTTP server -that proxies data requests to appropriate remote backends (e.g., Kubernetes API) or implements -business logic. The backend implements business logic when remote backends APIs do not -support required use case directly, e.g., “get a list of pods with their CPU usage metric -timeline”. The figure below outlines the architecture of the project: - -![Architecture Overview](../images/architecture.png) - -The rationale for having a backend that implements business logic: - -* Clear separation between the presentation layer (frontend) and business logic layer (backend). -This is because every action goes through well-defined API. -* Transactional actions are easier to implement on the backend than on the frontend. Examples of -such actions: "create a replication controller and a service for it" or "do a rolling update". -* Possible code reuse from existing tools (e.g., `kubectl`) and upstream contributions to the tools. -* Speed: getting composite data from backends is faster on the backend (if it runs close to the -data sources). For example, getting a list of pods with their CPU utilization timeline -requires at least two requests. Doing them on the backend shortens RTT. - -## Backend - -- Written in [Golang](https://golang.org/). -- Code and tests are stored in `src/app/backend` directory. Test file names start the same as sources, but they are with `_test.go`. -- Every API call hits `apihandler.go` which implements a series of handler functions to pass the results to resource-specific handlers. -- Backend currently doesn't implement a cache, so calls to the Dashboard API will always make fresh calls to the Kubernetes API server. - -## Frontend - -- Written in [TypeScript](https://www.typescriptlang.org/). -- Using [Angular](https://angular.io/) along with [Angular Material](https://material.angular.io/) for components like cards, buttons etc. -- Using [Google Closure Compiler](https://developers.google.com/closure/compiler/). -- Code and the tests are stored in `src/app/frontend` directory. Test file names start the same as sources, but they are with `.spec.ts`. -- Frontend makes calls to the API and renders received data. It also transforms some data on the client and provides visualizations for the user. The frontend also makes calls to the API server to do things like exec into a container directly from the dashboard. - ----- -_Copyright 2019 [The Kubernetes Dashboard Authors](https://github.com/kubernetes/dashboard/graphs/contributors)_ diff --git a/docs/developer/code-conventions.md b/docs/developer/code-conventions.md deleted file mode 100644 index cb0c72c51397..000000000000 --- a/docs/developer/code-conventions.md +++ /dev/null @@ -1,48 +0,0 @@ -# Code conventions - -## Backend - -We are following conventions described in [Effective Go](https://golang.org/doc/effective_go.html) document. - -Go to our [Go Report Card](https://goreportcard.com/report/github.com/kubernetes/dashboard) to check how well we are doing. - -## Frontend - -We are following conventions described in [Angular Style Guide](https://angular.io/guide/styleguide) and [Material Design Guidelines](https://material.io/guidelines/). - -Additionally, check the list of rules and tips, that we are using: - -* Private method and variable names should end with a `_`. -* In order to keep all tooltips consistent across whole application, we have decided to use 500 ms delay and auto-hide option. It allows us to avoid flickering when moving the mouse over the pages and to hide tooltips after the mouse is elsewhere but the focus is still on the element with tooltip. - -An overview of the features provided by the dashboard can be found [here](https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard). - -## Code Style - -The code style check suite includes format checks can be executed with: - -```shell -make check -``` - -The code formatting can be executed with: - -```shell -make fix -``` - -These check and formatting involves in go, ts, scss, html, license and i18n files. - -We use following tools and settings for each check and formatting: - -| code | tools | setting | -|---------|------------------------------------------------------------------------|---------------------------------------------------------------------------------------| -| go | [golangci-lint](https://github.com/golangci/golangci-lint) | [`.golangci.yml`](../../.golangci.yml) | -| ts | [eslint](https://eslint.org) | [`.eslintrc.yaml`](../../.eslintrc.yaml) and [`.prettierrc.js`](../../.prettierrc.js) | -| scss | [stylelint](https://github.com/stylelint/stylelint) | [`.stylelintrc.yaml`](../../.stylelintrc.yaml) | -| html | [prettier](https://prettier.io/) | [`.jsbeautifyrc`](../../.jsbeautifyrc) | -| license | [license-check-and-add](https://github.com/awjh/license-check-and-add) | [`license-checker-config.json`](../../license-checker-config.json) | -| i18n | [xliffmerge](https://github.com/martinroob/ngx-i18nsupport) | `xliffmergeOptions` in [`package.json`](../../package.json) | - ----- -_Copyright 2019 [The Kubernetes Dashboard Authors](https://github.com/kubernetes/dashboard/graphs/contributors)_ diff --git a/docs/developer/dependency-management.md b/docs/developer/dependency-management.md deleted file mode 100644 index b601dc61815a..000000000000 --- a/docs/developer/dependency-management.md +++ /dev/null @@ -1,21 +0,0 @@ -# Dependency management - -- Keep all the dependencies outside the repository. -- Avoid using suspicious, unknown dependencies as they may introduce vulnerabilities. - -## Go dependencies - -- Use [go mod](https://github.com/golang/go/wiki/Modules) as dependency manager. -- Run `go mod tidy` before sending any changes. -- Use only official releases, avoid using master versions. - -## JavaScript dependencies - -- Use [yarn](https://yarnpkg.com/) as package manager. -- Run `yarn` after checking out the repository to install dependencies. -- [Dependabot](https://github.com/dependabot) updates packages by creating pull requests for -the new releases of used packages. Its pull requests are marked with `area/dependency` label. -- Update `yarn.lock` before sending any changes. - ----- -_Copyright 2019 [The Kubernetes Dashboard Authors](https://github.com/kubernetes/dashboard/graphs/contributors)_ diff --git a/docs/developer/getting-started.md b/docs/developer/getting-started.md deleted file mode 100644 index edf3a88ed4d6..000000000000 --- a/docs/developer/getting-started.md +++ /dev/null @@ -1,189 +0,0 @@ -# Getting started - -This document describes how to setup your development environment. - -## Preparation - -Make sure the following software is installed and added to the `$PATH` variable: - -* Curl 7+ ([installation](https://curl.se/docs/install.html)) -* Git 2.13.2+ ([installation](https://git-scm.com/downloads)) -* Docker 23.0.1+ ([installation](https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/)) -* Golang 1.20+ ([installation](https://golang.org/dl/)) - * We use `go mod` for go dependency management -* Node.js 18.14.0+ ([installation](https://nodejs.org/en/download)) -* Yarn 2+ ([installation](https://yarnpkg.com/getting-started/install)) - -Clone the repository and install the dependencies: - -```shell -make --directory modules/common/tools install -yarn -``` - -## Running the cluster - -To make Dashboard work you need to have cluster running. If you would like to use local cluster we recommend [kubeadm](https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/), [minikube](https://kubernetes.io/docs/getting-started-guides/minikube/) or [kubeadm-dind-cluster](https://github.com/Mirantis/kubeadm-dind-cluster). The most convenient way is to make it work is to create a proxy. Run the following command: - -```shell -kubectl proxy -``` - -kubectl will handle authentication with Kubernetes and create an API proxy with the address `localhost:8080`. Therefore, no changes in the configuration are required. - -## Serving Dashboard for Development - -Quick updated version: - -```shell -npm start -``` - -Another way to connect to real cluster while developing dashboard is to specify options for `npm` like following: - -```shell -npm run start:https --kubeconfig= -``` - -Please see [here](https://github.com/kubernetes/dashboard/blob/master/.npmrc) which options you can specify to run dashboard with `npm`. - -Open a browser and access the UI under `localhost:8080`. - -In the background, `npm start` makes a [concurrently](https://github.com/open-cli-tools/concurrently) call to start the `golang` backend server and the `angular` development server. - -Once the angular server starts, it takes some time to pre-compile all assets before serving them. By default, the angular development server watches for file changes and will update accordingly. - -As stated in the [Angular documentation](https://angular.io/guide/i18n#generate-app-versions-for-each-locale), i18n does not work in the development mode. -Follow [Building Dashboard for Production](#building-dashboard-for-production) section to test this feature. - -> Due to the deployment complexities of i18n and the need to minimize rebuild time, the development server only supports localizing a single locale at a time. Setting the "localize" option to true will cause an error when using ng serve if more than one locale is defined. Setting the option to a specific locale, such as "localize": ["fr"], can work if you want to develop against a specific locale (such as fr). - -## Building Dashboard for Production - -To build dashboard for production, you still need to install `bc`. - -The Dashboard project can be built for production by using the following task: - -```shell -make build -``` - -The code is compiled, compressed, i18n support is enabled and debug support removed. The dashboard binary can be found in the `dist` folder. - -To build and immediately serve Dashboard from the `dist` folder, use the following task: - -```shell -make prod -``` - -Open a browser and access the UI under `localhost:9090`. The following processes should be running (respective ports are given in parentheses): - -`Dashboard backend (9090) ---> Kubernetes API server (8080)` - -To build the Docker image on darwin OS you will need to set environment variable for go to build as linux: - -```shell -export GOOS=linux -``` - -In order to package everything into a ready-to-run Docker image, use the following task: - -```shell -make docker-build-head -``` - -You might notice that the Docker image is very small and requires only a few MB. Only Dashboard assets are added to a scratch image. This is possible, because the `dashboard` binary has no external dependencies. Awesome! - -## Run the tests - -Unit tests should be executed after every source code change. The following task makes this a breeze. The full test suite includes unit tests and integration tests. - -```shell -make test -``` - -You can also run individual tests on their own (such as the backend or frontend tests) by doing the following: - -```shell -make test-backend -make test-frontend -``` - -The code style check suite includes format checks can be executed with: - -```shell -make check -``` - -The code formatting can be executed with: - -```shell -make fix -``` - -These check and formatting involves in go, ts, scss, html, license and i18n files. - -## Committing changes to your fork - -Before committing any changes, please run `make fix`. This will keep you from accidentally committing non tested and unformatted code. - -Since the hooks for commit has been set with `husky` into `/.git/hooks/pre-commit` already if you installed dashboard according to above, so it will run `make fix` and keep your code as formatted. - -Then you can commit your changes and push them to your fork: - -```shell -git commit -git push -f origin my-feature -``` - -## Easy way to build your development environment with Docker - -At first, change directory to kubernetes dashboard repository of your fork. -This development container has all of dependencies to develop dashboard. - -### Miscellaneous - -* Development container builds Kubernetes Dashboard and runs it with self-certificates by default. -* This container create `user` with `UID` and `GID` same as local user, switch user to `user` with `gosu` and run commands. So created or updated files like results of `make fix` would have same ownership as your host. You can commit them immediately from your host. -* Built Kubernetes Dashboard will run by `docker compose`, so other few containers will be created in your docker. -* A Docker network called `kubernetes-dashboard` will be created by our script and all these containers will be assigned to it. - -### To run dashboard using Docker at ease - -1. Run `hack/develop/run-dev-container.sh`. - -That's all. It will build dashboard container from your local repository, will create also kubernetes cluster container for your dashboard using [`kind`](https://github.com/kubernetes-sigs/kind), and will run dashboard. -Then you can see dashboard with your browser. Since dashboard uses self-certificates, so you need ignore warning or error about it in your browser. - -### To run with your Kubernetes cluster - -1. Copy kubeconfig from your cluster, and confirm the URL for API server in it, and modify it if necessary. -2. Set filepath for kubeconfig into `KD_DEV_KUBECONFIG` environment variable. -3. If you deployed `dashboard-metrics-scraper` in your cluster, set its endpoint to `KD_DEV_SIDECAR_HOST` environment variable. -4. Change directory into your dashboard source directory. -5. Run `hack/develop/run-dev-container.sh`. - -These manipulations will build container and run dashboard with `make run` as default. - -To accessing Kubernetes Dashboard, open from your browser. - -### Just to run development container without building and running dashboard - -1. Set `KD_DEV_CMD` environment variable as `bash`. -2. Run `hack/develop/run-dev-container.sh`. -3. Run commands as you like in the container. - -This runs container and execute `bash` command interactively. Then, develop Kubernetes Dashboard! - -* To run dashboard, execute `make run`. This will build dashboard for production and run three containers for the dashboard. - Then, access from your browser. -* To run dashboard with Angular Live Development Server, execute `KUBECONFIG=/home/user/.kube/config make serve`. - Then, access from your browser. - -### To access console inside of running development container - -1. Run `docker exec -it k8s-dashboard-dev gosu user bash`. - ---- - -_Copyright 2019 [The Kubernetes Dashboard Authors](https://github.com/kubernetes/dashboard/graphs/contributors)_ diff --git a/docs/developer/release-procedures.md b/docs/developer/release-procedures.md deleted file mode 100644 index 6353eab75f54..000000000000 --- a/docs/developer/release-procedures.md +++ /dev/null @@ -1,38 +0,0 @@ -# Release procedures - -## Official releases - -After significant improvements have been done it is worth to release a new version. In order to do so just follow the steps described below: - -1. Test everything twice on Docker image and `npm run start:prod`. -2. Send a pull request that increases version numbers in all files. Follow versioning guidelines. Files to keep in sync are listed below: - * `package.json` and `package-lock.json` - * `RELEASE_VERSION` in `Makefile` - * YAML files from `charts` - * Helm Chart from `charts/kubernetes-dashboard`: `image.tag` of `README.md` and `values.yaml`, `version` and `appVersion` of `Chart.yaml` -3. Get the pull request reviewed and merged. -4. Create a git [release](https://github.com/kubernetes/dashboard/releases/) tag for the merged pull request. Release description should include a changelog. -5. Update add-ons on the [Kubernetes](https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/dashboard) repository. If the update is minor, all that needs to be done is to change image version number in the main controller config file (`dashboard-controller.yaml`), and other configs, as described in the header of the config. If the release is major, this needs coordination with Kubernetes core team and possibly alignment with the schedule of the core. -6. Update addon config in the [minikube](https://github.com/kubernetes/minikube/tree/master/deploy/addons) repository. -7. Update addon config in the [kops](https://github.com/kubernetes/kops/tree/master/addons/kubernetes-dashboard) repository. - -Official release procedures are done by CI after successful TAG build automatically, that are pushed to [`kubernetesui/dashboard*`](https://hub.docker.com/u/kubernetesui) repositories. - -### Versioning guidelines - -Kubernetes Dashboard versioning follows [semver](https://semver.org/) in spirit. This means that it uses `vMAJOR.MINOR.PATCH` version numbers, but uses UX and consumer-centric approach for incrementing version numbers. - -1. Increment MAJOR when there are breaking changes that affect user's workflows or the UX gets major redesign. -2. Increment MINOR when new functionality is added or there are minor UX changes. -3. Increment PATCH in case of bug fixes and minor new features. - -Versions `0.X.Y` are reserved for initial development and may not strictly follow the guidelines. - -## Development releases - -There is no need to do anything at all after everything was set up and now the whole process is automated. - -On every successful master build CI provides development releases, that are pushed to [`kubernetesdashboarddev/dashboard*`](https://hub.docker.com/u/kubernetesdashboarddev) repositories. Each build produces one image for each architecture. The images are tagged with `head`. - ----- -_Copyright 2019 [The Kubernetes Dashboard Authors](https://github.com/kubernetes/dashboard/graphs/contributors)_ diff --git a/docs/developer/text-conventions.md b/docs/developer/text-conventions.md deleted file mode 100644 index 29122e49c640..000000000000 --- a/docs/developer/text-conventions.md +++ /dev/null @@ -1,60 +0,0 @@ -# Text conventions - -Kubernetes Dashboard is a web-based user interface for Kubernetes clusters. It consists of multiple views like overview pages, list of resources and resource details pages. Much textual information is required within these elements. Let's consider sample dialog: - -![Dashboard UI workloads page](../images/overview.png) - -As you noticed there are a lot of different kinds of text messages in each view: - -* Titles. -* Headers. -* Labels. -* Values. -* Tooltips. -* Action button. -* Menu and navigation entries. -* All kinds of messages including warnings, errors and help information. - -For each one of them a developer has to make the following decisions: - -* Grammar - Using a verb in infinitive or gerund form? -* Punctuation - Using a period or not? -* Capitalization - Using capitalized words? Capitalize Kubernetes specific names? - -In addition, with few exceptions, all text messages within the Dashboard should be localized. For more details check our [internationalization guidelines](internationalization.md)). - -## General terms - -### Grammar - -The gerund form should be used everywhere. Exceptions are all kinds of messages including warnings, errors and help information. - -### Punctuation - -Certain types of text resources should have punctuation. Periods should be used for - -* All kinds of messages including warnings, errors and help information. - -Periods should be avoided for: - -* Headers. -* Titles. -* Labels. -* Values. -* Tooltips. -* Menu and navigation entries. - -### Capitalization - -In general, all kinds of messages should have their first word capitalized. Exceptions are: - -* Names which appear in the middle of a message. -* Values and table contents. - -Moreover, Kubernetes-specific names should be capitalized everywhere. This includes: - -* Application names - Kubernetes, Kubernetes Dashboard etc. -* Resource names - Pod, Service, Endpoint, Node etc. - ----- -_Copyright 2019 [The Kubernetes Dashboard Authors](https://github.com/kubernetes/dashboard/graphs/contributors)_ diff --git a/hack/develop/run-dev-container.sh b/hack/develop/run-dev-container.sh index 213cea3b13c0..a2853f139bff 100755 --- a/hack/develop/run-dev-container.sh +++ b/hack/develop/run-dev-container.sh @@ -14,7 +14,6 @@ # limitations under the License. # This prepares development environment for Kubernetes Dashboard in Docker. -# See `docs/developer/getting-started.md`. CD="$(pwd)" DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"