Merge remote-tracking branch 'LCTT/master'

This commit is contained in:
Xingyu Wang 2020-08-30 19:41:15 +08:00
commit 184f5e66e0
7 changed files with 504 additions and 19 deletions

View File

@ -1,8 +1,8 @@
[#]: collector: (lujun9972)
[#]: translator: (wxy)
[#]: reviewer: (wxy)
[#]: publisher: ( )
[#]: url: ( )
[#]: publisher: (wxy)
[#]: url: (https://linux.cn/article-12563-1.html)
[#]: subject: (Decentralized Messaging App Riot Rebrands to Element)
[#]: via: (https://itsfoss.com/riot-to-element/)
[#]: author: (John Paul https://itsfoss.com/author/john/)

View File

@ -1,18 +1,20 @@
[#]: collector: (lujun9972)
[#]: translator: (geekpi)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: reviewer: (wxy)
[#]: publisher: (wxy)
[#]: url: (https://linux.cn/article-12564-1.html)
[#]: subject: (OnionShare: An Open-Source Tool to Share Files Securely Over Tor Network)
[#]: via: (https://itsfoss.com/onionshare/)
[#]: author: (Ankush Das https://itsfoss.com/author/ankush/)
OnionShare: 一个通过 Tor 网络安全共享文件的开源工具
OnionShare:一个安全共享文件的开源工具
======
_**简介OnionShare 是一个免费开源工具,它利用 Tor 网络安全和匿名地共享文件。**_
> OnionShare 是一个自由开源工具,它利用 Tor 网络安全和匿名地共享文件。
你可能已经有很多在线服务来安全地共享文件,但它可能不是完全匿名的。
![](https://img.linux.net.cn/data/attachment/album/202008/30/103623ty2r6sz03y32o99o.jpg)
已经有很多在线服务可以安全地共享文件,但它可能不是完全匿名的。
此外,你必须依靠一个集中式服务来共享文件,如果服务决定像 [Firefox Send][1] 那样关闭,那你不能真正依靠它来一直安全地共享文件。
@ -41,17 +43,14 @@ _**简介OnionShare 是一个免费开源工具,它利用 Tor 网络安全
* 接收文件
* 命令行选项
* 发布洋葱站点
* 能够使用桥接(如果你的 Tor 连接不起作用)
* 能够使用桥接(如果你的 Tor 连接不起作用)
* 能够使用持久 URL 进行共享(高级用户)。
* 隐身模式(更安全)
你可以通过 GitHub 上的[官方用户指南][7]来了解更多关于它们的信息。
### 在 Linux 上安装 OnionShare
你应该可以在你的软件中心找到 OnionShare 并安装它。如果没有,你可以在 Ubuntu 发行版上使用下面的命令添加 PPA
```
@ -62,7 +61,7 @@ sudo apt install -y onionshare
如果你想把它安装在其他 Linux 发行版上,你可以访问[官方网站][4]获取 Fedora 上的安装说明以及构建说明。
[下载 OnionShare][4]
- [下载 OnionShare][4]
### OnionShare 如何工作?
@ -83,7 +82,7 @@ sudo apt install -y onionshare
现在接收方需要的是 OnionShare 的地址,它看上去是这样的。
```
http://onionshare:[email protected]
http://onionshare:xyz@jumbo2127k6nekzqpff2p2zcxcsrygbnxbitsgnjcfa6v47wvyd.onion
```
接着 Tor 浏览器开始下载文件。
@ -94,7 +93,7 @@ http://onionshare:[email protected]
#### 允许接收文件
如果你想生成一个 URL让别人直接上传文件到你的电脑上要注意谁与你分享),你可以在启动 OnionShare 后点击 **Receive Files** 标签即可。
如果你想生成一个 URL让别人直接上传文件到你的电脑上要注意你与谁分享),你可以在启动 OnionShare 后点击 **Receive Files** 标签即可。
![][10]
@ -124,7 +123,7 @@ http://onionshare:[email protected]
我试着用[免费模板][15]测试了一下,效果很好(但很慢)。所以,这可能取决于你的网络连接。
### **总结**
### 总结
除了上面提到的功能,如果需要的话,你还可以使用命令行进行一些高级的调整。
@ -138,8 +137,8 @@ via: https://itsfoss.com/onionshare/
作者:[Ankush Das][a]
选题:[lujun9972][b]
译者:[geekpi](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
译者:[geekpi](https://github.com/geekpi)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出

View File

@ -1,5 +1,5 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: translator: ( chenmu-kk )
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )

View File

@ -0,0 +1,114 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (Use GraphQL as an API gateway to monitor microservices)
[#]: via: (https://opensource.com/article/20/8/microservices-graphql)
[#]: author: (Rigin Oommen https://opensource.com/users/riginoommen)
Use GraphQL as an API gateway to monitor microservices
======
Use the monitoring feature of GraphQL to help you detect issues early,
before a problem takes a critical microservice down.
![Net catching 1s and 0s or data in the clouds][1]
[Microservices][2] and [GraphQL][3] are a great combination, like bread and butter. They're both great on their own and even better together. Knowing the health of your microservices is important because they run important services—it would be foolish to wait until something critical breaks before diagnosing a problem. It doesn't take much effort to let GraphQL help you detect issues early.
![GraphQL in Microservices][4]
Routine health checks allow you to watch and test your services to get early notifications about problems before they affect your business, clients, or project. That's easy enough to say, but what does it really mean to do a health check?
Here are the factors I think about when designing a service checkup:
**Requirements for a server health check:**
1. I need to understand the availability status of my microservice.
2. I want to be able to manage the server load.
3. I want end-to-end (e2e) testing of my microservices.
4. I should be able to predict outages.
![Service health in microservices][5]
### Ways to do server health checks
Coming up with health checks can be tricky because, in theory, there's nearly an infinite number of things you could check for. I like to start small and run the most basic test: a ping test. This simply tests whether the server running the application is available. Then I ramp up my tests to evaluate specific concerns, thinking about the elements of my server that are most important. I think about the things that would be disastrous should they disappear suddenly.
1. **Ping check:** Ping is the simplest monitor type. It just checks that your application is online.
2. **Scripted browser:** Scripted browsers are more advanced; browser automation tools like [Selenium][6] enable you to implement custom monitoring rule sets.
3. **API tests:** API tests are used to monitor API endpoints. This is an advanced version of the ping check model, where you can define the monitoring plan based on the API responses.
### Health check with GraphQL
In a typical REST-based microservice, you need to build health check features from scratch. It's a time-intensive process, but it's not something you have to worry about with GraphQL.
According to its [website][7]:
> "GraphQL is a query language for APIs and a runtime for fulfilling those queries with your existing data. GraphQL provides a complete and understandable description of the data in your API, gives clients the power to ask for exactly what they need and nothing more, makes it easier to evolve APIs over time, and enables powerful developer tools."
When you bootstrap a GraphQL microservice, you also get a provision to monitor the health of the microservice. This is something of a hidden gem.
As I mentioned above, you can perform API tests as well as ping checks with the GraphQL endpoint.
Apollo GraphQL Server provides a default endpoint that returns information about your microservices and server health. It's not very complex: it returns status code 200 if the server is running.
The default endpoint is `<server-host>/.well-known/apollo/server-health`.
![Health Check with GraphQL][8]
### Advanced health checks
In some cases, basic health checks may not be enough to ensure the integrity of a system. For example, tightly coupled systems require more business logic to ensure the health of the system.
Apollo GraphQL is efficient enough to manage this use case by declaring an `onHealthCheck` function while defining the server:
```
* Defining the Apollo Server */
const apollo = new ApolloServer({
  playground: process.env.NODE_ENV !== 'production',
  typeDefs: gqlSchema,
  resolvers: resolver,
  onHealthCheck: () =&gt; {
    return new Promise((resolve, reject) =&gt; {
      // Replace the `true` in this conditional with more specific checks!
      if (true) {
        resolve();
      } else {
        reject();
      }
    });
  }
});
```
When you define an `onHealthCheck` method, it returns a promise that _resolves_ if the server is ready and _rejects_ if there is an error.
GraphQL makes monitoring APIs easier. In addition, using it for your server infrastructure makes things scalable. If you want to try adopting GraphQL as your new infrastructure definition, see my GitHub repo for [example code and configuration][9].
--------------------------------------------------------------------------------
via: https://opensource.com/article/20/8/microservices-graphql
作者:[Rigin Oommen][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/riginoommen
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/data_analytics_cloud.png?itok=eE4uIoaB (Net catching 1s and 0s or data in the clouds)
[2]: https://opensource.com/resources/what-are-microservices
[3]: https://opensource.com/article/19/6/what-is-graphql
[4]: https://opensource.com/sites/default/files/uploads/graphql-microservices.png (GraphQL in Microservices)
[5]: https://opensource.com/sites/default/files/uploads/servicehealth.png (Service health in microservices)
[6]: https://www.selenium.dev/
[7]: https://graphql.org/
[8]: https://opensource.com/sites/default/files/uploads/healthcheck.png (Health Check with GraphQL)
[9]: https://github.com/riginoommen/example-graphql

View File

@ -0,0 +1,65 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (5 open source activities for kids to try this weekend)
[#]: via: (https://opensource.com/article/20/8/open-source-kids)
[#]: author: (Lauren Pritchett https://opensource.com/users/lauren-pritchett)
5 open source activities for kids to try this weekend
======
These open source boredom busters will keep kids of all ages busy having
fun.
![Family learning and reading together at night in a room][1]
During the last six months or so, my family and I have enjoyed a slower pace of life. With few museums and parks open, weve stayed safer at home together or going on outdoor excursions. My young children are pretty good at creating their imaginary worlds where they could play for hours. I think they are adapting to this new normal better than I am to tell you the truth. However, there will be weekends when we have all run out of ideas. Luckily, Opensource.com is chock full of boredom-busters for kids of all ages. In this article, I rounded up a few of our more recent open source activities for kids. 
## [Create coloring book pages with Jupyter][2]
My toddler uses crayons, markers, pencils, or any other writing utensil available on every sheet of paper in the house. Being surrounded by original artwork is fabulous, but he is running out of coloring page designs! With Jupyter, you can have an endless supply of coloring sheets at the ready for kids. Browse Creative Commons for images and use the magic of Python and Jupyter to turn them into one-of-a-kind coloring pages.
## [Go to an open source scavenger hunt][3]
When I was a kid, my brother and I each had a massive map of the United States on our bedroom wall. Each time we visited a new state, we highlighted it on our map. Since he is a few years older than me, I was continually playing catch-up, but eventually we evened the tally. This early exposure cultivated a lifelong interest in maps for both of us. These days, we can access and contribute to maps right from the palm of our hands with OpenStreetMap. The StreetComplete mobile app makes it possible to find and complete quests the whole family can enjoy together. Go on a scavenger hunt while helping out your community!
## [Build a video game to learn Python][4]
Seasoned educators know that the best way to teach a new subject is to turn it into a game. Author [Moshe Zadka][5] is one of those educators. He designed a Jupyter Notebook to teach people Python by making an interactive game. With Python and Git installed on your computer, you and your child can follow the steps in his tutorial. By the end, you will be having so much fun playing a penguin video game! 
**[Read next: [Programmable tanks and Raspberry Pi: Try these kid tech projects][6]]**
## [Experiment with open source robotics][7]
Last fall, author [Jess Weichler][8] shared a list of her favorite maker gifts for kids and teens. It featured [Hummingbird][9], an open source robotics kit ideal for kids ages eight and up. Since it supports several popular programming languages, kids can have fun practicing their coding skills. Hummingbird is compatible with Linux, Windows, Mac, Chromebook, Android, and iOS.
## [Play with virtual LEGOs][10]
Have you ever stepped on a rogue LEGO brick? Its a pain one never forgets. I love watching my daughter build cars, ice cream stands, and castles with her LEGO bricks. Our households cardinal rule is to keep LEGO bricks off the floor. This is easier said than done! Playing with virtual LEGOs is a much safer route to take. [Seth Kenlons][11] tutorial walks LEGO lovers through using open source tools to build and play with virtual bricks.
How have you been keeping yourself and the young people around you entertained? Share your ideas in the comments.
--------------------------------------------------------------------------------
via: https://opensource.com/article/20/8/open-source-kids
作者:[Lauren Pritchett][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/lauren-pritchett
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/family_learning_kids_night_reading.png?itok=6K7sJVb1 (Family learning and reading together at night in a room)
[2]: https://opensource.com/article/20/8/edit-images-python
[3]: https://opensource.com/article/20/1/streetcomplete-crowdsource-maps
[4]: https://opensource.com/article/20/5/python-games
[5]: https://opensource.com/users/moshez
[6]: https://enterprisersproject.com/article/2020/7/raspberry-pi-tech-projects-kids
[7]: https://opensource.com/article/19/11/maker-gifts-kids
[8]: https://opensource.com/users/cyanide-cupcake
[9]: https://www.birdbraintechnologies.com/hummingbirdbit/
[10]: https://opensource.com/article/20/6/open-source-virtual-lego
[11]: https://opensource.com/users/seth

View File

@ -0,0 +1,188 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (Best Free Online Markdown Editors That Are Also Open Source)
[#]: via: (https://itsfoss.com/online-markdown-editors/)
[#]: author: (Ankush Das https://itsfoss.com/author/ankush/)
Best Free Online Markdown Editors That Are Also Open Source
======
[Markdown][1] is a useful lightweight [markup language][2] and a lot of people prefer for writing documentation or web publishing. Many of us at Its FOSS use markdown for writing our articles.
There are [several Markdown editors available for Linux][3] that you can install and use.
But, what if you dont want to install another program on your system? Perhaps you are using a system temporarily and cannot install an application? Maybe you just want a markdown editor that lets you collaborate in real-time?
No matter what you require, online markdown editors makes a lot of things easy by providing collaboration features, publishing integration, notes synchronization, and some online-only features.
Hence, Ive compiled a list of the best online markdown editors.
### Free Online Markdown Editors
I have tried to keep the focus on online markdown editor with open source code. You may use the official website or deploy them on your server.
**Note:** _The list is in no particular order of ranking._
#### 1\. StackEdit
![][4]
[StackEdit][5] is one of the most popular open-source online Markdown editors available.
It provides a great user interface and offers a bunch of useful features. The ability to collaborate, synchronizing capability, and being able to publish/save your files to Blogger, WordPress, GitHub, and a couple other services are some key features that you get with StackEdit.
Not to forget, you also get an extended markdown support some extensions available to support LaTeX mathematical expressions, UML diagrams, and more. It presents a WYSIWYG editor that makes it easy for you to work with Markdown. It also works offline and offers a chrome app and extension — if thats your requirement.
Its easy to import/export files on StackEdit as well. You can take a look at its source code on [GitHub][6] for more details if you need to host it on your server.
[StackEdit][7]
#### 2\. Dillinger
![][8]
Dillinger is yet another interesting open-source online Markdown editor. Similar to StackEdit, you also get the ability to link and save the documents with Dropbox, GitHub, Medium, Google Drive, Bitbucket, and OneDrive.
You can also choose to simply import/export files when needed. The user interface for Dillinger is simpler than what you get on StackEdit — but it gets the job intended. Unlike StackEdit, you may not get extended Markdown support with LaTeX expressions or diagrams but if you just need simple online Markdown editor, this is a good pick.
If you need, you can choose to deploy it in a Docker container on your server. For more technical details on it, you might want to check out its [GitHub page][9].
[Dillinger][10]
#### 3\. Write.as
![][11]
Write.as is based on the free and open source software [WriteFreely][12], developed by the same team. So you can simply host it on your own server and start using it for free if you want.
You can also use Write.as service as a free online Markdown editor with basic features. To make the most out of it, you may want to choose a subscription. Some paid features include custom themes, newsletters, photo hosting, and multiple blogs.
It supports Markdown and also lets anyone on [Mastodon][13], [ActivityPub][14], and [Pleroma][15] to follow and share your blog posts easily.
You can explore more about WriteFreely on its [GitHub page][16] or get started using Write.as.
[Write.as][17]
#### 4\. Editor.md
![][18]
An interesting open-source Markdown editor that you can also embed on your own web pages if you require.
It supports real-time preview, GitHub flavored markdown, and also presents a WYSIWYG editor along with a bunch of useful features. In addition to the basic Markdown support, it also supports emojis, LaTeX expressions, Flowchart, and more.
You can choose to configure your own by hosting it yourself as well. Take a look at its [GitHub page][19] for more information.
[Editor.md][20]
#### 5\. CodiMD
![][21]
CodiMD isnt available as a full-fledged online service from the get-go. But, it is an open-source project that lets you collaborate on documentations or notes in real-time by giving you the ability to host it on your server.
Its based on [HackMD][22]s source code and offers a [demo instance][23] to test it out. Personally, I like the fact that it also offers a dark mode and its easy to use.
For its future release (at the time of writing this), it will be renamed as “**HedgeDoc**“.
You can find all the relevant information on deploying it on your server through Docker/Kubernetes and other manual configuration options on its [GitHub page][24].
[CodiMD][25]
#### 6\. Wri.pe
![][26]
Wri.pe is a simple open-source online Markdown editor thats no longer maintained but it is still active and usable.
It features real-time preview and the options to export or save your notes to Dropbox/Evernote. Considering that its not actively maintained — you may not rely on it but it works as expected when I tested it.
You can take a look at its [GitHub page][27] or the official site to learn more about it.
[Wri.pe][28]
### Honorable Mentions
Here are a few tools that provide markdown access.
#### Markdown Web Dingus
![][29]
A simple and free online Markdown editor by the creator of Markdown language. Its not a full-fledged online editor with integrations or that supports import/export.
But, if you just want an online editor to get a preview for your Markdown source, this could be a great option to use. Not just limited to the editor, but you also get a syntax cheatsheet in the sidebar of the website. So, you can try and learn here as well.
[Markdown Web Dingus][30]
#### Markdown Journal
![][31]
[Markdown Journal][32] was an interesting open-source project on [GitHub][33] which has been discontinued. It gave you the ability to use its online editor to create journals using Markdown language and save them directly on your Dropbox account. I noticed Internal Server error when I tried to create a journal — but you can take a look at it.
#### Etherpad
![][34]
[Etherpad][35] is yet another impressive open-source online editor but it doesnt come with Markdown support out of the box. You might notice some plugins available to enable Markdown editing on your server — but thats not something that works flawlessly yet. So, you might want to keep an eye out for it. Theres a list of [public instances][36] to try it out as well.
### Wrapping Up
Considering that a lot of online editors, CMSs, and note-taking services support Markdown, services/applications like [WordPress][37] can also be a good option if you want to publish it to the web.
Which one do you prefer to use as a Markdown editor? Did I miss any of your favorites? Let me know in the comments below!
--------------------------------------------------------------------------------
via: https://itsfoss.com/online-markdown-editors/
作者:[Ankush Das][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://itsfoss.com/author/ankush/
[b]: https://github.com/lujun9972
[1]: https://en.wikipedia.org/wiki/Markdown
[2]: https://en.wikipedia.org/wiki/Markup_language
[3]: https://itsfoss.com/best-markdown-editors-linux/
[4]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/08/stackedit-screenshot.png?resize=800%2C396&ssl=1
[5]: https://itsfoss.com/stackedit-markdown-editor/
[6]: https://github.com/benweet/stackedit
[7]: https://stackedit.io/
[8]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/08/dillinger-screenshot.jpg?resize=800%2C390&ssl=1
[9]: https://github.com/joemccann/dillinger
[10]: https://dillinger.io/
[11]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/08/write-as-screenshot.jpg?resize=800%2C505&ssl=1
[12]: https://writefreely.org/
[13]: https://itsfoss.com/mastodon-open-source-alternative-twitter/
[14]: https://en.wikipedia.org/wiki/ActivityPub
[15]: https://pleroma.social/
[16]: https://github.com/writeas/writefreely
[17]: https://write.as/
[18]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/08/editor-md-screenshot.jpg?resize=800%2C436&ssl=1
[19]: https://github.com/pandao/editor.md
[20]: http://editor.md.ipandao.com/en.html
[21]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/08/codiMD.png?resize=800%2C525&ssl=1
[22]: https://hackmd.io/
[23]: https://demo.codimd.org/
[24]: https://github.com/codimd/server
[25]: https://demo.codimd.org
[26]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/08/wri-pe-screenshot.jpg?resize=800%2C558&ssl=1
[27]: https://github.com/masuidrive/open-wripe
[28]: https://wri.pe/
[29]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/08/markdown-web-dingus.jpg?resize=800%2C616&ssl=1
[30]: https://daringfireball.net/projects/markdown/dingus
[31]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/08/markdown-journal.jpg?resize=800%2C656&ssl=1
[32]: https://markdownjournal.com/
[33]: https://github.com/maciakl/MarkdownJournal
[34]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/08/etherpad-public-instance.png?resize=800%2C556&ssl=1
[35]: https://etherpad.org/
[36]: https://github.com/ether/etherpad-lite/wiki/Sites-that-run-Etherpad-Lite
[37]: https://wordpress.com/

View File

@ -0,0 +1,119 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (Linux Jargon Buster: What is a Display Server in Linux? What is it Used for?)
[#]: via: (https://itsfoss.com/display-server/)
[#]: author: (Dimitrios Savvopoulos https://itsfoss.com/author/dimitrios/)
Linux Jargon Buster: What is a Display Server in Linux? What is it Used for?
======
In Linux related articles, news and discussions, youll often come across the term display server, Xorg, Wayland etc.
In this explainer article, Ill discuss display servers in Linux.
### What is display server in Linux?
A display server is a program which is responsible for the input and output coordination of its clients, to and from the rest of the operating system, and among the hardware and the operating system. Basically, thanks to a display server, you can use your computer graphically (GUI). Without the display server, you would only be restricted to a command line interface (TTY).
The display server provides the framework for a graphical environment so that you can use mouse and keyboard to interact with applications.
The display server communicates with its clients over the [display server protocol][1], like X11. The display server is a key component in any graphical user interface, specifically the windowing system.
Dont confuse display server with [desktop environment][2]. The desktop environment uses display server underneath it.
Sounds familiar but it is not fully clear? Let me explain.
### Display server communications protocols in Linux
![][3]
There are three display protocols available in Linux, the X11, Wayland and Mir. Ill give you a brief introduction for these display servers.
#### X11
The X11 (also refer as X) is the legacy display server that has been existed for years. It is the most common display server used in Linux distributions.
![X Architecture][4]
The X11 communication protocol, uses the [X.org Server][5] display server. It receives input events from [device drivers][6] and makes them available to one of its clients.
The display server also receives data from its clients, it processes the data and does the compositing and on Linux it passes the data to one of three kernel components the [DRM][7], [gem][8] or [KMS driver][9].
The X.Org Server is a display server that relies on a second program, the [compositing window manager][10], to do the compositing. Examples are [Mutter][11] or [KWin][12]. GNOME uses Mutter.
#### Wayland
As per its website, Wayland is “intended as a simpler replacement for X, easier to develop and maintain”.
And indeed [Wayland][13] is the modern display server that is supposed to replace the legacy X display server.
Its adoption is still a work in progress. Ubuntu tried to switch to Wayland as the default display server with version 17.10 but the experiment met with negative feedback.
A lot of GUI applications and their frameworks depend on the X server. These applications didnt work as intended on Wayland.
This forced Ubuntu to stay on X as default display server. It still provides the option to use Wayland but it is not default anymore.
An overwhelming majority of distributions use X display server by default even today.
![Wayland Architecture][14]
Display servers that put into effect the Wayland display server protocol, are called [Wayland compositors][15]. Like any X11, a Wayland compositor is responsible for handling input and output for its clients but also does the [compositing][16] in contrast to X11.
A few Wayland compositors are [Weston][17], [Mutter][18], [KWin][12] or [Enlightenment][19].
#### Mir
The [Mir display server][20] comes with its own Mir display server protocol which differs to those used by X11 and Wayland. It was developed by [Canonical][21], as part of the development of Unity, and was intended to be the display server of choice for [Ubuntu][22].
As of 2017, it has been replaced with the Wayland display server for desktop editions of Ubuntu, although Mirs development continued for Internet of Things (IoT) applications.
#### Why are we still using Xorg?
Wayland as it is relatively new, is not very stable yet, compared to Xorg. The programs, which act as clients, in order to communicate with a display server, must know how to do it.
For this reason, many programs might not run when using Wayland. Ubuntus experiment to switch to Wayland by default confirmed this.
#### Conclusion
I hope you have a bit better understanding of display server concept in Linux. I have tried to not go into too much technical details but I could not avoid them altogether.
Your feedback and suggestion is welcome.
--------------------------------------------------------------------------------
via: https://itsfoss.com/display-server/
作者:[Dimitrios Savvopoulos][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://itsfoss.com/author/dimitrios/
[b]: https://github.com/lujun9972
[1]: https://en.wikipedia.org/wiki/X_Window_System_core_protocol
[2]: https://itsfoss.com/what-is-desktop-environment/
[3]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/08/display-server-linux.png?resize=800%2C450&ssl=1
[4]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/08/x-architecture-1.png?resize=800%2C507&ssl=1
[5]: https://en.wikipedia.org/wiki/X.Org_Server
[6]: https://en.wikipedia.org/wiki/Device_driver
[7]: https://en.wikipedia.org/wiki/Direct_Rendering_Manager
[8]: https://en.wikipedia.org/wiki/Graphics_Execution_Manager
[9]: https://en.wikipedia.org/wiki/KMS_driver
[10]: https://en.wikipedia.org/wiki/Compositing_window_manager
[11]: https://en.wikipedia.org/wiki/Mutter_(window_manager)
[12]: https://en.wikipedia.org/wiki/KWin
[13]: https://wayland.freedesktop.org/
[14]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/08/wayland-architecture-1.png?resize=800%2C500&ssl=1
[15]: https://en.wikipedia.org/wiki/Wayland_compositor
[16]: https://en.wikipedia.org/wiki/Compositing
[17]: https://en.wikipedia.org/wiki/Weston_(software)
[18]: https://en.wikipedia.org/wiki/Mutter_(software)
[19]: https://en.wikipedia.org/wiki/Enlightenment_(software)
[20]: https://mir-server.io/
[21]: https://canonical.com/
[22]: https://itsfoss.com/install-ubuntu/