Skip to content
This repository has been archived by the owner on Sep 29, 2023. It is now read-only.

Suggest a standard set of terms to reduce confusion across docs #222

Merged
merged 13 commits into from
Jul 27, 2022

Conversation

gewenyu99
Copy link
Contributor

What Is This PR

After reviewing the new branding documents and following APA style guide, I proposed the following terms to reduce confusion across our documentation. This is not comprehensive but merely covers commonly confused terms.

Why We Need This PR

Some concepts related to Appwrite can be expressed with many different words, and phrases, and in varying formats. This is fine in conversation but can often introduce unwanted confusion.

For example, using the word "user" and "account" interchangeably to refer to:

  1. Appwrite Console Users
  2. Users created on the Account API
  3. Appwrite developers (Users of Appwrite, the OSS software)
  4. End-users of applications created on Appwrite

While there will always be confusion, we should at least make an effort to be consistent.

Other examples, Cloud Function, Function Service, Function service, and Appwrite Functions can all mean the same thing. Similarly, Server API, Admin Mode, Server-side SDK, and similar terms are used interchangeably.
Screen_Shot_2022-03-23_at_2 45 26_PM

Goals of This PR

During the review process, I hope to achieve the following.

  1. Propose standard language to make our communication more clear and consistent.
  2. Receive feedback on word choice and language; we need to be happy with the terms we choose collectively.
  3. Receive suggestions of common confused terms I missed.

Thank you :)

README.md Outdated Show resolved Hide resolved
README.md Outdated
#### Authentication
| **Term** | **Suggested Usage.** |
|------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Authentication Service | The Authentication service encompases the Account API, Users API, and Teams API. |
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Need Feedback

Do we want to call services

  1. Appwrite Authentication
  2. Authentication Service (entire proper noun, which is proper if we're consistent)
  3. Authentication service (where Authentication, the service, is the sole proper noun)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would vote for 2

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I will post this on this week's state of the docs to get more feedback.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we change encompases? Feels like a complex word.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also voting for 2. We already use that naming in console (project -> settings -> services)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What about Users Service? Since we probably call it Storage Service, Databases Service, Functions Service... Matching list of services on left side.

CleanShot 2022-07-16 at 09 11 34@2x

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should rename the button. The word Users doesn't make a ton of sense.

| Developer | Refers to Appwrite developers that use Appwrite to create applications. |
| End User | Refers to end users of applications with an Appwrite backend. This doesn't refer to developers that interact with Appwrite directly. |
| Appwrite Instance | Refers to a single, self-hosted deployment of Appwrite |
| Application | Refers to the application built by the Appwrite developer. Can be referred to as web app, mobile app, flutter app, etc. |
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Need Feedback

Do we want to call it a deployment of Appwrite, an instance of Appwrite? What language makes the most sense?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think a cluster might make more sense, not 100% sure.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I will post this on this week's state of the docs to get more feedback.

| Developer | Refers to Appwrite developers that use Appwrite to create applications. |
| End User | Refers to end users of applications with an Appwrite backend. This doesn't refer to developers that interact with Appwrite directly. |
| Appwrite Instance | Refers to a single, self-hosted deployment of Appwrite |
| Application | Refers to the application built by the Appwrite developer. Can be referred to as web app, mobile app, flutter app, etc. |
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think a cluster might make more sense, not 100% sure.

README.md Outdated
Comment on lines 30 to 32
| Method | Refers to SDK methods like the method `account.get()`. This helps differentiate SDK methods and Appwite Functions in written language. |
| Parameters | Refers to parameters in an SDK method or API definition. Use in cases where we speak about needs, such as "takes parameters x, y, and z" or "requires parameters x and y". |
| Arguments | Refers to arguments passed to CLI, SDK method, or REST API. Use when the argument has a concrete value and when we refer to invoking a method, such as "pass in arguments x and y, or "call account.create() with the argument "unique()" to generate a random id. |
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These 3 seems very generic and not Appwrite specific

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed. Idk if this belongs somewhere else, but it made sense to use these correctly if we can.

Although, the Method term works here mostly to differentiate a function from our Functions service. We can remove if this is the opinion at the end of review process.

README.md Outdated
#### Authentication
| **Term** | **Suggested Usage.** |
|------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Authentication Service | The Authentication service encompases the Account API, Users API, and Teams API. |
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would vote for 2

| Collection | Use "collection" as a noun (no capitalization), use as "a collection" or "collections". Avoid using similar terms like "table". |
| Document | Use "document" as a noun (no capitalization), use as "a document" or "documents". Avoid using similar terms like "entry" or "row". |
| Attribute | Use "attribute" as a noun (no capitalization), use as "a attribute" or "attributes". Avoid using similar terms like "column" or "key/value". |
| Index | Use "index" as a noun (no capitalization), use as "a index" or "indexes". Use "indexes" instead of indices in a DB related context. |
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we should also mention Adapter. This one is used across Databases, Storage, Error Logging. Sometimes used for OAuth providers.

| Create | When we "create" a function, it refers to the process of using "Add Function" in console or using `functions.create()` method. No code is uploaded. |
| Deploy/Deployment | When we say we "deploy" a function or create a new deployment, this is when we upload code through the Create Deployment button or endpoint. |
| Activate Deployment | When we enable a particular version of a function, we say we "activate" the deployment. |
| Runtimes | When we refer to a runtime like `node.js 15.5`, call it a "Node.js runtime" or "function runtime". Avoid similar terms like "runtime environment" or "function environment" |
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing Execution

README.md Outdated
|-----------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Functions Service | Write as the "Functions service"(as a proper noun). Not "Function service" or "Cloud Functions". |
| Function (individual) | When we mention a specific function and not the service as a whole, use "a function" or "functions". Not "a cloud function" or "a Function". |
| Create | When we "create" a function, it refers to the process of using "Add Function" in console or using `functions.create()` method. No code is uploaded. |
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new console will use the same terms we use for the API

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice, we'll change this when the new console rolls out.

Copy link
Contributor

@Meldiron Meldiron left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I already love this document! 😍
Left my suggestions

README.md Outdated

#### Terminology
### Terminology
Appwrite has many services and features with many ways to express the same concepts. To avoid confusion, this section suggests a standard set of terms used across Appwrite documentation to describe features and concepts.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

with many ways to express the same concepts

If I was using Appwrite and read this, it sounds negative. Like we were messy and complex, and if I want to make chat app, there are 500 ways that I need to consider.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Meldiron I think of this as a maintainer's document. No Appwrite developer would reasonably need to read this. It's more for those who wish to contribute to Appwrite's docs, copy writing, or maybe blogs.

README.md Outdated
|---------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Appwrite | Written as "Appwrite" not "AppWrite" or "appwrite". |
| Projects | Each Appwrite instance can have many Appwrite Projects. Use "Appwrite Projects" as a proper noun when referring to the concept, use project or projects when referring to specific projects. |
| Console | Refers to the the GUI. Can also be referred to as the "Appwrite Console" to distinguish from a Mac, Linux, or Windows machine's console. |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| Console | Refers to the the GUI. Can also be referred to as the "Appwrite Console" to distinguish from a Mac, Linux, or Windows machine's console. |
| Console | Refers to the the GUI. Can also be referred to as the "Appwrite Console" to distinguish from a Mac, Linux, or Windows machine's console. |

What about Appwrite Web Console? To make sure it's clear it's the website, not terminal.

README.md Outdated
| Console Users | Refers to users that are registered to have access to the Appwrite Console. Not a proper noun, use as "a console user" or "the console user". Differenciate this clearly from users created through a Client SDK. |
| Client SDK | Refers to SDKs used by Web, Flutter, Android, and Apple applications. Use as a proper noun, use "a Client SDK" or "the Client SDKs", not client-side SDKs. |
| Server SDK | Refers to SDKs used by backend languages like Java, Node.js, or PHP. Use as a proper noun, use "a Server SDK" or "the Server SDKs", not server-side SDKs. |
| Adaptor | Refers to interfaces used to connect Appwrite with third party technologies. Adaptors are found for OAuth, Databases, Storage, and error logging. When referring to adaptors, use specific adaptor names, such as "an OAuth adaptor" or "a Storage adaptor" to avoid confusion.|
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Interesting word, pretty unique 🤔 I would say adapter or integration. Anyone else has weird vibes from the word?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a typo XD

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We will stick with Adatper, Adaptor is technically correct in English, but I think less used. I won't dig into it further because it really doesn't matter :P

https://grammarist.com/spelling/adapter-adaptor/

README.md Outdated
| Adaptor | Refers to interfaces used to connect Appwrite with third party technologies. Adaptors are found for OAuth, Databases, Storage, and error logging. When referring to adaptors, use specific adaptor names, such as "an OAuth adaptor" or "a Storage adaptor" to avoid confusion.|
| Developer | Refers to Appwrite developers that use Appwrite to create applications. |
| End User | Refers to end users of applications with an Appwrite backend. This doesn't refer to developers that interact with Appwrite directly. |
| Appwrite Cluster | Refers to a single, self-hosted deployment of Appwrite. Use as "an Appwrite Cluster" or "Appwrite Clusters".|
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To me a Cluster is not only self-host but also having Appwrite scaled over many machines. Shouldn't we use the word self-host here somehow instead? That sounds more simpler, also considering we will have "selfhost" section in docs in future.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We were thinking of calling it a "self-hosted instance." Cluster is what Eldad suggested, I'll let you duke it out with Eldad, I have no particular opinion here :D

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about just Appwrite Instance and remove any references to self-hosted or cloud?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@stnguyen90 This was my original proposal XD

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree. Cluster doesn't make sense unless we have several machines. I vote for Appwrite Instance too

README.md Outdated
| End User | Refers to end users of applications with an Appwrite backend. This doesn't refer to developers that interact with Appwrite directly. |
| Appwrite Cluster | Refers to a single, self-hosted deployment of Appwrite. Use as "an Appwrite Cluster" or "Appwrite Clusters".|
| Application | Refers to the application built by the Appwrite developer. Can be referred to as web app, mobile app, flutter app, etc. |
| Method | Refers to SDK methods like the method `account.get()`. This helps differentiate SDK methods and Appwite Functions in written language. |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We named queries as methods too (query methods being limit() or equal(). Possibly even permission methods like read() and write() in future.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is fine. They would be in fact called methods in most textbooks.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we want something to refer to things like account.get() rather than Query.equal() we could use API call since the SDKs make API calls to our REST APIs.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👀 I think this can work. TBH, I'm only concerned about confusing a function from the Functions Service, when we talk about this and the SDK.

README.md Outdated
### Terminology
Appwrite has many services and features with many ways to express the same concepts. To avoid confusion, this section suggests a standard set of terms used across Appwrite documentation to describe features and concepts.
#### General
| **Term** | **Suggested Usage.** |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| **Term** | **Suggested Usage.** |
| **Term** | **Suggested Usage** |

Same everywhere

| Bucket | Write as "a bucket" or "buckets", not a proper noun. |
| File | Write as "a file" or "files", not a proper noun. |

#### Functions
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's maybe add:

  • Variable (variables?)




#### Database
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's maybe add:

  • Permissions
  • Permission level

#### Terminology
### Terminology
Appwrite has many services and features with many ways to express the same concepts. To avoid confusion, this section suggests a standard set of terms used across Appwrite documentation to describe features and concepts.
#### General
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's maybe add:

  • Usage stats
  • Audit logs

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't have any experience with these, what terms do you suggest under them?


#### Spell Checking
#### Authentication
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's maybe add:
-Membership

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Question for you. There's a few concepts that are actually confusing right now:

  • Team membership vs role:member
  • Team roles vs role: (like role:guest)

These terms are very similar in context and meaning, but aren't the same. Should we consider definite terms for these?

CC: @eldadfux

@eldadfux
Copy link
Member

I would only add that this document would also make a great blog post.

README.md Outdated Show resolved Hide resolved
README.md Outdated Show resolved Hide resolved
README.md Outdated
| Adaptor | Refers to interfaces used to connect Appwrite with third party technologies. Adaptors are found for OAuth, Databases, Storage, and error logging. When referring to adaptors, use specific adaptor names, such as "an OAuth adaptor" or "a Storage adaptor" to avoid confusion.|
| Developer | Refers to Appwrite developers that use Appwrite to create applications. |
| End User | Refers to end users of applications with an Appwrite backend. This doesn't refer to developers that interact with Appwrite directly. |
| Appwrite Cluster | Refers to a single, self-hosted deployment of Appwrite. Use as "an Appwrite Cluster" or "Appwrite Clusters".|
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about just Appwrite Instance and remove any references to self-hosted or cloud?

README.md Outdated
| End User | Refers to end users of applications with an Appwrite backend. This doesn't refer to developers that interact with Appwrite directly. |
| Appwrite Cluster | Refers to a single, self-hosted deployment of Appwrite. Use as "an Appwrite Cluster" or "Appwrite Clusters".|
| Application | Refers to the application built by the Appwrite developer. Can be referred to as web app, mobile app, flutter app, etc. |
| Method | Refers to SDK methods like the method `account.get()`. This helps differentiate SDK methods and Appwite Functions in written language. |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we want something to refer to things like account.get() rather than Query.equal() we could use API call since the SDKs make API calls to our REST APIs.

README.md Outdated Show resolved Hide resolved
README.md Outdated Show resolved Hide resolved
README.md Outdated Show resolved Hide resolved
README.md Outdated Show resolved Hide resolved
README.md Outdated Show resolved Hide resolved
gewenyu99 and others added 7 commits July 19, 2022 16:53
Co-authored-by: Steven <1477010+stnguyen90@users.noreply.github.com>
Co-authored-by: Steven <1477010+stnguyen90@users.noreply.github.com>
Co-authored-by: Steven <1477010+stnguyen90@users.noreply.github.com>
Co-authored-by: Steven <1477010+stnguyen90@users.noreply.github.com>
Co-authored-by: Steven <1477010+stnguyen90@users.noreply.github.com>
Co-authored-by: Steven <1477010+stnguyen90@users.noreply.github.com>
Co-authored-by: Steven <1477010+stnguyen90@users.noreply.github.com>
README.md Outdated Show resolved Hide resolved
@gewenyu99 gewenyu99 merged commit d35390a into update-contribution-guide Jul 27, 2022
@gewenyu99 gewenyu99 deleted the propose-terminology-guidelines branch August 4, 2022 15:56
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants