Skip to content

Commit dba6abb

Browse files
authored
blog: add post on history of AEPs (#275)
1 parent 083e8bf commit dba6abb

File tree

1 file changed

+106
-0
lines changed

1 file changed

+106
-0
lines changed

blog/history-of-aeps.md

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
---
2+
title: The History and Philosophy of AEPs
3+
date: 2025-02-03
4+
authors:
5+
- name: Yusuke Tsutsumi
6+
---
7+
8+
# The History and Philosophy of AEPs
9+
10+
There have been a lot of interest in the AEPs, and a question that often comes
11+
up is "where did the AEPs come from?" and "what are the underlying motivation
12+
and philosophies of the project?". This blog post aims to help answer those
13+
questions.
14+
15+
## What are AEPs?
16+
17+
AEP is short for "API Enhancement Proposal", intended to be a comprehensive
18+
specification, set of best practices, and tools to help an organization provide
19+
best-in-class resource-oriented APIs.
20+
21+
More specifically, the following is provided:
22+
23+
1. An API design specification for gRPC and REST APIs, with a heavy focus on
24+
[resource-oriented design](https://aep.dev/121/) and
25+
[standard methods](https://aep.dev/130/) that operate on them.
26+
27+
2. Design patterns for common use cases such as
28+
[long-running operations](https://aep.dev/151/),
29+
[resource revisions](https://aep.dev/162/),
30+
[filtering](https://aep.dev/160/), with best practices aggregated from API
31+
design experts with experience at Google, Microsoft, Meta, Roblox, and
32+
DataBricks.
33+
34+
3. An ecosystem of
35+
[server-side and client-side tooling](https://aep.dev/tooling-and-ecosystem/)
36+
to produce and consume AEP-compliant APIs.
37+
38+
## How did the AEPs begin?
39+
40+
The history of AEPs begin with the AIPs:
41+
[Google API Improvement Proposals](https://google.aip.dev/): a set of design
42+
patterns for resource-oriented APIs, focusing primarily on protobuf. AIPs
43+
themselves were then open sourcing of internal documentation around Google
44+
API's best practices.
45+
46+
Along with Google's own design practices, aip.dev also had a generic industry
47+
wide component, that primarily focused on the idea of creating design style
48+
guides that tailor to an organization's own needs. This project includes
49+
components such as a
50+
[style guide site generator](https://github.com/aip-dev/site-generator) as well
51+
as a template of [more generic guidance](https://github.com/aip-dev/aip.dev).
52+
53+
Although aip.dev is not a formal API specification, an ecosystem of tooling
54+
does exist that adheres to it, including:
55+
56+
- A protobuf based [api-linter](https://linter.aip.dev/).
57+
58+
- A [client library generator](https://github.com/googleapis/gapic-generator).
59+
60+
Among the contributors to aip.dev, some wanted to see a stronger formalization
61+
of the API design guidance itself, for a few reasons:
62+
63+
1. To act as a reference point for organization-agnostic best practices.
64+
65+
2. To enable an official ecosystem of tooling to make best-practice APIs
66+
easier to build and consume.
67+
68+
This group forked aip.dev and created aep.dev. Since its founding in 2023,
69+
aep.dev has rapidly progressed in building out a tooling ecosystem, and proving
70+
that well-designed APIs can truly enable a simple-to-maintain but powerful
71+
ecosystem of tooling
72+
([read more here](https://aep.dev/tooling-and-ecosystem/)).
73+
74+
## What philosophies drive aep.dev?
75+
76+
### Adopting and sharing resource-oriented API best practices
77+
78+
We do not want to reinvent the wheel. Instead, our guidance is based on IETF
79+
RFCs that exist around HTTP semantics, using them when applicable.
80+
81+
### Powerful server-side and client-side tooling, enabled by simple, consistent APIs.
82+
83+
As organizations develop their APIs, organizations must often create their own
84+
service generators to create consistency, as well as create client-side tooling
85+
to consume them. This includes:
86+
87+
- Linters and style guide checkers to ensure API consistency
88+
89+
- server-side generators, handling the creation of boilerplate interfaces that
90+
enable common features that include: CRUD of basic resources, pagination and
91+
filtering for lists, precondition checking, and documentation generation.
92+
93+
- Clients that interface with these APIs, including: SDKs, command line
94+
interface, web-based UIs, asset inventories.
95+
96+
Rather than have every organization create their own clients, AEPs strive to
97+
provide the above tools, allowing an organization to focus on their goal and
98+
from having to have full teams dedicated to maintaining these tools.
99+
100+
## Where to learn more?
101+
102+
Now that you have an understanding of the aeps, we encourage you to
103+
[explore the project](https://aep.dev/), use the
104+
[specification](https://aep.dev/1/) to help guide your APIs, and use the
105+
[tooling](https://aep.dev/tooling-and-ecosystem/) to help produce and consume
106+
them. Visit the [home page](https://aep.dev/) for more information!

0 commit comments

Comments
 (0)