From 850000b64fc5dff4ed7e15c21fcdbeff290f39f9 Mon Sep 17 00:00:00 2001 From: moonrailgun Date: Wed, 1 Mar 2023 16:09:39 +0800 Subject: [PATCH] docs: add blog about noIM and update Homepage --- website/blog/2023-03-01-the-era-of-noIM.md | 31 +++++++++++++ website/docusaurus.config.js | 2 +- .../2023-03-01-the-era-of-noIM.md | 31 +++++++++++++ website/src/components/HomepageHeader.less | 44 ++++++++++++++++++- website/src/components/HomepageHeader.tsx | 30 +++++++++++-- website/static/img/underline.svg | 8 ++++ 6 files changed, 141 insertions(+), 5 deletions(-) create mode 100644 website/blog/2023-03-01-the-era-of-noIM.md create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-blog/2023-03-01-the-era-of-noIM.md create mode 100644 website/static/img/underline.svg diff --git a/website/blog/2023-03-01-the-era-of-noIM.md b/website/blog/2023-03-01-the-era-of-noIM.md new file mode 100644 index 00000000..a3eae68d --- /dev/null +++ b/website/blog/2023-03-01-the-era-of-noIM.md @@ -0,0 +1,31 @@ +--- +title: It's time to officially step into the era of noIM +authors: moonrailgun +image: /img/logo.svg +keywords: + - tailchat + - noIM +tags: [blog] +--- + +From far to now, there have been many rounds of changes in communication methods, from email to IRC, to today's communication tools such as Slack or Discord that include audio and video communication, and chats such as Telegram and Signal that focus on message privacy and security. Now, I think it's time to step into a new stage, the noIM (Not Only IM) stage. + +As people's needs for information communication methods continue to evolve, we need to collaborate on more and more platforms. We can exchange information on Slack, communicate design drafts on Figma, exchange documents on Notion, conduct video conferences on Zoom, and so on. With the growing power of the Web, most of the online tools can be operated on the web. + +This brings possibility to the concept of noIM. + +noIM means that an instant messaging application is not only for sending and receiving messages – of course, messaging tools will always be the core of instant messaging application iterations – but also means that it should undertake a multi-person collaborative circulation tool and responsibility. Because IM is the natural way, it represents the most basic way of communication and collaboration on the Internet. We can seamlessly connect various tools based on IM. Imagine that, we can do things in the same tool that we needed to switch between multiple tools before, and these tools can interact to a certain extent through the central IM. + +![](/img/intro/connect-apps.excalidraw.svg) + +Excellent chat systems such as Slack and Discord also provide an open platform, allowing third-party applications to interact with chat applications, but I don't think that's enough. Current integration methods simply send links, in the new era, we need a more native integration method. Many things should be shared and connected–such as account system, permission system, group relationship, etc. + +A basic noIM system should have an open design to allow it to be combined with other tools in a native way, or to implement all possible collaboration methods by itself - such as G Suite, in this way, the flow between applications can be very smooth, but I think a better way is to connect third-party application users to have the right to choose their favorite tools, so it is inevitable to design a sufficiently open design. + +So I designed a product like Tailchat. In addition to having an open platform with existing popular projects, Tailchat also provides a set of plugin mechanisms to help achieve deeper integration. Through Tailchat's plugin mechanism, any product can directly obtain all existing contexts of Tailchat, such as user system, permission system, etc. More importantly, Tailchat is an open source and open platform, which means Tailchat has better privacy, can develop plugins very well, and it's easy to make tools unique to users. This is the same as the ecology that VSCode wants to create, but unlike VSCode, Tailchat, as an IM, can naturally bring more interactions, which is a natural advantage of chat software. This is also why I believe that noIM can shine in the future. + +Github: [https://github.com/msgbyte/tailchat](https://github.com/msgbyte/tailchat) + +Office Website: [https://tailchat.msgbyte.com/](https://tailchat.msgbyte.com/) + +Try in online: [https://nightly.paw.msgbyte.com/](https://nightly.paw.msgbyte.com/) diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js index e8376918..24fdaca0 100644 --- a/website/docusaurus.config.js +++ b/website/docusaurus.config.js @@ -108,7 +108,7 @@ const presetClassicOptions = { /** @type {import('@docusaurus/types').DocusaurusConfig} */ module.exports = { title: 'Tailchat', - tagline: 'A pluginify IM Application', + tagline: 'The next-generation noIM Application', url: 'https://tailchat.msgbyte.com', // TODO: 待修改成文档主页 baseUrl: '/', onBrokenLinks: 'throw', diff --git a/website/i18n/zh-Hans/docusaurus-plugin-content-blog/2023-03-01-the-era-of-noIM.md b/website/i18n/zh-Hans/docusaurus-plugin-content-blog/2023-03-01-the-era-of-noIM.md new file mode 100644 index 00000000..ced13dc3 --- /dev/null +++ b/website/i18n/zh-Hans/docusaurus-plugin-content-blog/2023-03-01-the-era-of-noIM.md @@ -0,0 +1,31 @@ +--- +title: 是时候正式步入noIM的时代了 +authors: moonrailgun +image: /img/logo.svg +keywords: + - tailchat +tags: [blog] +--- + +从远至今,已经经历了很多轮沟通方式的变更,从邮件到IRC,再到如今的如 Slack 或者 Discord 这样的包含了音视频通讯的沟通工具,以及如 Telegram, Signal 这样侧重消息隐私安全的聊天工具。如今,我认为现在是时候步入新一代的,noIM(Not only IM) 的阶段。 + +随着人们的对于信息沟通的方式的需求不断的演进,我们需要在越来越多的平台上进行协作。我们可以在Slack上进行信息的交流,在Figma上沟通设计稿,在Notion上交流文档,在Zoom上进行视频会议等等。随着 Web能力的越发强大,大多数的在线工具都可以在网页上操作。 + +而这,给 noIM 的概念带来了可能。 + +noIM,意味着一个即时通讯应用不仅仅做消息的发送与接受 —— 当然消息工具会一直是即时通讯应用迭代的核心 —— 更意味着应当承担一种多人协作的流转工具与职责。因为IM天然的,就代表着互联网时代最基本的沟通与协作方式。我们可以基于IM无缝的连接各种各样的工具。想象一下,我们可以在同一个工具中完成之前需要切换多个工具才能做到的事情,而且这些工具可以通过中心的IM来进行一定程度上的交互。 + + +![](/img/intro/connect-apps.excalidraw.svg) + +如Slack, Discord这样优秀的聊天系统也提供了开放平台,让第三方应用能够与聊天应用产生一定的交互,但是我认为这还远远不够,目前的现有的集成方式只不过是在发送一个个链接罢了,在新的时代我们需要更加原生的集成方式。很多东西本就该产生共享与联系——比如账户系统、权限系统、群组关系等。 + +一个基本的noIM系统应当有一套开放式的设计来让其能够与其他工具以一种原生的方式结合在一起,或者说自己来实现所有的可能的协作方式 —— 如 G Suite,然而这种方式可以做到应用之间流转十分顺畅,但是我认为更好的方式是连接第三方应用用户有选择自己喜好工具的权利,那么设计一套足够开放的设计则是一种必然。 + +因此,我设计了[Tailchat](https://tailchat.msgbyte.com/) 这样的一种产品,除了拥有和现有的流行项目都有开放平台以外,Tailchat还提供了一套插件机制来帮助实现更加深入的集成。通过 Tailchat 的插件机制, 任何产品都可以直接获取到 Tailchat 的现有的一切上下文,比如用户体系、权限体系等。更加重要的是,Tailchat是开源且开放的,这意味着Tailchat 拥有更好的隐私性,能够很好的开发插件,易于制作独属于用户的工具。在这一点和 VSCode 所要打造的生态是一样的,但是与VSCode不同的是,Tailchat 作为IM天然能够带来更多的交互,这是聊天软件天然的优势。也是我相信noIM能够在未来大放异彩的原因。 + +Github: [https://github.com/msgbyte/tailchat](https://github.com/msgbyte/tailchat) + +官方文档: [https://tailchat.msgbyte.com/](https://tailchat.msgbyte.com/) + +在线尝试: [https://nightly.paw.msgbyte.com/](https://nightly.paw.msgbyte.com/) diff --git a/website/src/components/HomepageHeader.less b/website/src/components/HomepageHeader.less index 98d11171..fbe8db38 100644 --- a/website/src/components/HomepageHeader.less +++ b/website/src/components/HomepageHeader.less @@ -13,7 +13,7 @@ .title { margin-bottom: 24px; font-size: 2.25rem; - line-height: 1; + line-height: 1.5; font-weight: 900; @media (min-width: 997px) { @@ -23,6 +23,38 @@ @media (min-width: 1300px) { font-size: 5rem; } + + strong { + position: relative; + color: var(--ifm-color-primary); + cursor: pointer; + user-select: none; + + &::after { + content: ''; + position: absolute; + bottom: -0.125rem; + left: -0.5rem; + right: -0.5rem; + height: 0.75rem; + + // Position the line behind the text so that + // it is still easily readable + z-index: -1; + + // The SVG is added as an SVG background image + background-image: url('/img/underline.svg'); + background-repeat: no-repeat; + + // This allows the SVG to flex in size to fit + // any length of word. If the word is short, + // the SVG will be stretched vertically, if it + // is long, the SVG will be stretched horizontally. + // The jagged nature of this particular SVG works + // with this transforming. + background-size: cover; + } + } } .desc { @@ -31,10 +63,20 @@ color: rgb(153, 153, 153); font-size: 1rem; line-height: 1.5; + margin-bottom: 3rem; @media (min-width: 997px) { font-size: 1.5rem; } + + small { + display: block; + font-size: 0.75rem; + + @media (min-width: 997px) { + font-size: 1rem; + } + } } .btns { diff --git a/website/src/components/HomepageHeader.tsx b/website/src/components/HomepageHeader.tsx index 00b44704..7b63742b 100644 --- a/website/src/components/HomepageHeader.tsx +++ b/website/src/components/HomepageHeader.tsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useReducer } from 'react'; import Link from '@docusaurus/Link'; import Head from '@docusaurus/Head'; import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; @@ -7,9 +7,19 @@ import { useColorMode } from '@docusaurus/theme-common'; import { inviteLink, nightlyUrl } from '../utils/consts'; import './HomepageHeader.less'; +const alternative = ['Slack', 'Discord', 'Rocket.Chat']; + +export function getRandomAlternative() { + return alternative[Math.floor(Math.random() * alternative.length)]; +} + export const HomepageHeader: React.FC = React.memo(() => { const { siteConfig } = useDocusaurusContext(); const { colorMode } = useColorMode(); + const [alternativeIndex, updateAlternative] = useReducer( + (index) => (index + 1) % alternative.length, + Math.floor(Math.random() * alternative.length) + ); return (
@@ -18,13 +28,27 @@ export const HomepageHeader: React.FC = React.memo(() => { -
+
Preview of Tailchat

Open Source, Open Platform

-

Tailchat: {siteConfig.tagline}

+

+ Not only Another{' '} + + {alternative[alternativeIndex]} + +

+ +

+ Tailchat: {siteConfig.tagline} + + + What is noIM(not only IM)? + + +

diff --git a/website/static/img/underline.svg b/website/static/img/underline.svg new file mode 100644 index 00000000..9a12c5d0 --- /dev/null +++ b/website/static/img/underline.svg @@ -0,0 +1,8 @@ + + + + + +