If you ask me what is the most important ability for humans to stand out from other species? I would say “abstract ability.” Simply put, it’s the ability to hide the underlying details and manipulate the surface interface to achieve the goal. Yuval Harari, in A Brief History of Man, said that the fundamental difference between man and other species is imagination. We can look beyond the surface, encapsulate complex concrete processes, “abstract” them into easy-to-use interfaces, and then other people don’t need to go into the details, just look at the exposed interfaces.

The history of human progress is essentially an abstract one

There are several abstractions in the history of human development that have changed mankind. Number one. From the concrete concept of sheep to the abstract concept of numbers, it is of epoch-making significance. If there were no numbers, three apples and three pears would have nothing to do with each other, and we would not be able to find any patterns in natural phenomena. Second, the state. The state is an imaginary concept that we can all agree on in order to move towards a common goal. The collective capacity of humanity is shown. Third, currency. Money is an extremely powerful tool. That’s what we mean when we say “money makes the mare go.” Money is not a particular kind of money, but an abstract recognition of labor. Money allows us to do everything without having to do everything personally. We can only pay for our work in money, which greatly reduces personal complexity.

The abstractions in science are much broader, and we can think of all scientific theories and theorems as abstractions. The mass of an object is an abstraction that doesn’t care what the object is or its shape or texture; Newton’s laws are an abstraction of the way things move, which we now know to be inaccurate, but it’s still a pretty reliable abstraction in the normal world. In science and engineering, it is often necessary to establish some models or assumptions, such as the standard particle model of quantum mechanics and the rational man hypothesis of economics, which are abstractions. Even the models that AI now generates through training are, to some extent, abstractions.

Division of labor and cooperation are inseparable from abstraction

Abstract is everywhere, it can be said that without abstraction, modern life can not move. We all use mobile phones, but few of us know how they work, and in fact we don’t care. We take all kinds of transportation every day, but we never worry about how the wheels actually turn. We call the cleaning lady to clean the house, and we just need to pay the corresponding remuneration. We don’t need to worry about how she came here by car and what kind of detergent she used. By abstracting the above, we can divide an event into three parts:

  • The target
  • The specific underlying details of achieving the goal
  • What I need to do in order to achieve our goal is to text, to browse the web, and to achieve that goal, the underlying details are the electronic circuits, the complex communication protocols, and what I need to do is touch the screen. Our goal is to get to the destination, and the bottom details are how gasoline works, how the engine works, and what I need to do is step on the gas and steer. Our goal is to keep the room clean. The bottom detail is that someone has to buy cleaning supplies and clean the room. What I need to do is to ask the cleaning lady to do it on our behalf and then pay for it.

If you think about it further down, the abstraction is layer upon layer, endlessly, exposing more and more complexity as you go down. Just from the production of washing powder this matter, is the specific complexity high? Very high. It involves complex chemistry and manufacturing processes that are difficult for a layman to fully understand. But do you think buying and using washing powder is complicated? Very simple. That’s because detergent manufacturers have abstracted the complexity of stain removal for us.

When we were young, we had political lessons and talked about economic globalization. Our daily life was built on the basis of global division of labor and cooperation. Division of labor and cooperation, divided into two parts: on the one hand to division of labor, know what needs to be done by yourself, what needs to be handed over to others to do; On the other hand, cooperation is required, which involves clearly defining the interaction behavior along the interaction boundary and agreeing on the meaning and format of the information.

Ideally, we’re both trying to achieve a big goal, but we don’t need to care about the details of each other’s actions. It doesn’t matter how the other person does it. I just need to invoke the abstraction layer that the other person exposes to me on the domain boundary.

Abstractions in the field of computing

Anyone who has studied computer science should be familiar with the concept of “abstraction”. There is a saying in computer science that any problem in computer science can be solved by adding an indirect intermediate layer. This “indirect middle layer” is a layer of abstraction.

Take Web development for example. The Web frameworks and high-level abstraction languages we use in our development are at a higher level of abstraction, and for most developers, our business logic resides at this level of abstraction. Down here, you have low-level languages, like Python, that actually use C at the bottom. Next, the operating system, operating system this layer exposed the most basic file operation, socket interface. Operating system down, hardware, hardware also has interfaces, but from the moment they leave the factory has been soldered dead. When our data gets to the server’s network card and needs to be transferred to the user’s computer, we come to the TCP/IP layer. IP ensures that our data doesn’t go to the wrong place, TCP ensures that our data arrives in the right order and intact. That’s not all. There are many layers of abstraction to successfully display a character on a user’s browser, and we won’t list them all. In the language of software developers, this means programming to the interface without caring about the underlying implementation details. This layer upon layer of abstraction and encapsulation makes it extremely easy to write programs today.

What does Authing do and why does Authing exist

In terms of abstracting some of the complexity for users, we and Ali Cloud are actually doing the same thing. The IaaS platform of Ali Cloud abstracts the complexity of managing the physical room, so that we software practitioners do not need to worry about hardware; Authing is dedicated to helping developers abstract away the complexity of identity authentication, freeing developers from the important but trivial issues of password security, single sign-on, and user growth analysis, and freeing them to focus on the core business of real business output. Just as it’s hard to build your own computer room and be as good as Aliyun, it’s also hard to do identity authentication as well as Authing with limited time and resources.

The higher the level, the more efficient the development and the greater the value created. Authing abstracts the complex issue of identity authentication into a series of standardized steps through its knowledge of the identity authentication field, providing user-friendly SDK and beautiful background console to help developers reduce the overall complexity of the system. Authing has a number of useful features built in, such as

  • Login Hotspot Diagram

  • Geographical location distribution of users

  • Easy to use and beautiful, five lines of code can be integrated login form

  • Support social login

Supporting all kinds of social logins is a time-consuming and repetitive task. Authing allows you to customize the social account service providers you want to support in the background. True one-click open, 0 lines of code:

That’s at least a thousand lines of code, a month’s worth of work.

  • Single sign-on is supported

Look at how Authing implements single sign-on: 10 lines of code to do what would take thousands of lines of code to do.

const authing = new AuthingSSO({
    appId: "5d70d0e991fdd597019df70d",
    appDomain: "sample-sso.authing.cn"
});
const res = await authing.trackSession();
if(! Res.session){// Not logged in, execute logon logic, which invokes Authing's login form authing.login()}else{// Already logged in, print user information console.log(res)}Copy the code

Note: The source code can be found at the GitHub repository: github.com/Authing/web…

As mentioned above, Authing continues to work in the field of identity authentication, and has abstracted the identity authentication into many standardized processes. Authing will fully support function calculation in the future, allowing developers to customize the whole process through plug-ins.

Authing currently supports OAuth2, OIDC, LADP, SAML and other major identity protocols. The protocols are evolving all the time, but the developer needs for authentication remain the same: security, stability, simplicity, efficiency, and a good end-user experience. For developers, the underlying protocol changes are a minor detail, like whether you drive a car using electricity or oil.

Just like you can build your own computer room, you can do these things yourself, but in terms of the input/output ratio, it’s not necessarily worth it.

We all stand on the shoulders of our predecessors and take advantage of the layers of abstraction provided to us. No one will try to throw away all existing resources and start from scratch. Only in this way can human civilization continue to advance.

Identity is a seemingly simple but actually very complicated thing, which has not been well solved yet, which is also the reason why we insist on doing Authing well. We’re a connector, connecting platforms around the world, and that’s part of our mission.

Authing official website ~