Skip to content

Commit 7275dba

Browse files
committed
expand readme
1 parent cce9906 commit 7275dba

File tree

1 file changed

+17
-11
lines changed

1 file changed

+17
-11
lines changed

README.md

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ Unidoc powers the [Swiftinit](https://swiftinit.org) open source package index!
1212

1313
## Features
1414

15-
### Small archive sizes
15+
### 🪶 Small archive sizes
1616

1717
Unidoc servers are designed to store versioned documentation indefinitely. To achieve this, Unidoc uses a stable binary symbol graph format that can be up to two orders of magnitude smaller than an equivalent DocC archive.
1818

@@ -28,7 +28,7 @@ Here’s a comparison for the (in)famous [SwiftSyntax](https://github.com/apple/
2828
> [DocC numbers sourced from Slack](https://swift-open-source.slack.com/archives/C04PCMXMBD0/p1694154083683579?thread_ts=1694101493.046719&cid=C04PCMXMBD0)
2929
3030

31-
### Evolving documentation
31+
### ⬆️ Evolving documentation
3232

3333
You can regenerate Unidoc documentation from symbol graph archives without recompiling documentation from package sources, which historically was a [major bottleneck](https://forums.swift.org/t/navigating-html-docs-vs-generated-interfaces/67115/7) in the DocC workflow. In many situations, this means you can easily upgrade Unidoc documentation to take advantage of new features even if the underlying symbol graph was compiled by an older version of Unidoc.
3434

@@ -37,60 +37,66 @@ You can re-link Unidoc documentation against newer versions of their package (an
3737
Unidoc databases use a cellular architecture which allows you to stagger documentation upgrades across a package index without taking the server offline.
3838

3939

40-
### Cross-package references
40+
### 🔗 Cross-package references
4141

4242
Unidoc can validate and resolve cross-package symbol links, including links to symbols in the standard library. This means you can link to [`String`](https://swiftinit.org/docs/swift/swift/string) in your documentation, and Unidoc will automatically generate a link to the standard library documentation for `String`.
4343

4444
Normal “IDE-style” symbol references, such as links to [`Int`](https://swiftinit.org/docs/swift/swift/int) within function signatures, are also supported.
4545

4646

47-
### Cross-package extensions
47+
### 🕸 Cross-package extensions
4848

4949
Unidoc can display extensions, including third-party extensions, directly in the documentation for the extended type. This means you can view [`Channel`](https://swiftinit.org/docs/swift-nio/niocore/channel) members originating from packages such as [`swift-nio-ssl`](https://github.com/apple/swift-nio-ssl) and [`swift-nio-http2`](https://github.com/apple/swift-nio-http2) from the `swift-nio` documentation itself.
5050

5151
In the future, we hope to support finer-grained control over third-party extensions shown in extendee documentation.
5252

5353

54-
### Inherited symbols
54+
### 💞 Inherited symbols
5555

5656
Because Unidoc is a multi-package documentation engine, it can track and display symbols inherited from protocols in upstream dependencies, including the standard library, at negligible storage cost. This means types in third-party libraries that conform to protocols such as [`Sequence`](https://swiftinit.org/docs/swift/swift/sequence) can display and link to `Sequence` API in their member lists.
5757

5858

59-
### Server-side database
59+
### 🌐 Unified database
6060

6161
Unidoc servers maintain a combined database of all documentation in their index. This allows Unidoc to serve (or redirect) individual symbol pages on-demand, instead of requiring clients to download enormous Vue.js indices for client-side rendering. This provides better performance for clients, and greatly reduces cache churn on the server as documentation is upgraded.
6262

6363

64-
### Lightweight HTML
64+
### 🔋 Lightweight HTML
6565

6666
Unidoc generates lightweight HTML documentation that uses CSS for the majority of its layout and interactivity, and serves a very low number of additional assets. This means Unidoc pages are responsive, accessible, cache-friendly, and render with minimal content-layout shift ([CLS](https://web.dev/cls/)).
6767

6868

69-
### Documentation coverage
69+
### 📜 Readable signatures
70+
71+
Unidoc symbol graphs include line-breaking markers computed by SwiftSyntax, which allows Unidoc to display long function signatures in a readable, line-wrapped format. This makes it much easier to scan long lists of symbols with complex signatures, such as the member list of SwiftSyntax’s [`AccessPathComponentSyntax`](https://swiftinit.org/docs/swift-syntax/swiftsyntax/accesspathcomponentsyntax).
72+
73+
### 🛸 Documentation coverage
7074

7175
Unidoc can compute documentation coverage on a per-package and per-module basis. You can view coverage levels as pie-chart visualizations on package and module pages; see [`swift-atomics`](https://swiftinit.org/docs/swift-atomics)’s [package page](https://swiftinit.org/docs/swift-atomics) for an example.
7276

7377

74-
### GitHub integration
78+
### :octocat: GitHub integration
7579

7680
Unidoc can periodically index Git tags by querying the GitHub API. This feature requires a [GitHub app registration](https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/differences-between-github-apps-and-oauth-apps) and app secret and is not enabled by default. Unidoc can also load repository metadata from GitHub, and use it to generate permanent links to source code on GitHub if the underlying symbol graph includes source map information.
7781

7882
The Unidoc compiler builds symbol graph archives with source maps by default, even if GitHub integration is not available.
7983

8084

81-
### Secure administration
85+
### 🔐 Secure administration
8286

8387
When GitHub integration is available, Unidoc can use [social authentication](https://en.wikipedia.org/wiki/Social_login) to allow users to log in with their GitHub account and perform administrative actions.
8488

8589
As the [Swiftinit](https://swiftinit.org) index grows, we hope to allow package maintainers to claim ownership of their packages and manage their documentation directly through the Swiftinit website.
8690

8791

88-
### Search engine optimization (SEO)
92+
### 🔎 Search engine optimization (SEO)
8993

9094
Unidoc can generate, update, and serve sitemap files for search crawlers like Googlebot. This allows search engines to discover and index your documentation, and makes it easier for users to find your package.
9195

9296
Unidoc will make an effort to generate a `<meta>` description for every symbol in a package, even if the symbol has no documentation.
9397

98+
Unidoc avoids generating many copies of the same documentation, which can hinder visibility in search engines.
99+
94100

95101
## Running Unidoc locally
96102

0 commit comments

Comments
 (0)