In what will be the new internet, in addition to the useful identity certification systems, anonymity must still be preserved. I wanted to take advantage of the native features of the new Motoko language and challenge myself to write something functional and useful. Ultimately it is communication that makes us human and I thought a communication app was a good place to start. Just as the internet computer is a distributed and non-centralized network, the concept of the individual also exists in its decentralized form. While a specific individual, as each of us is, is in fact centralized, the idea of an anonymous individual is in fact decentralized, because it is not identifiable. Take advantage of the decentralization of computer networks of today and the near future to allow this trans-human possibility that transcends the single individual to empower him in this new dimension. From the anonymous individual, in his multitude, the collective individual emerges, which is not society, with its rules, but the abstraction of a prototype individual. The aim is to provide new material of interaction and knowledge for the next artificial intelligences, so that they can learn from authentic human nature, which is expressed only when it is free from restrictions and social constraints imposed from above.
What it does
Q does what it says: records messages for reading and sharing. Q only checks the length of the messages but otherwise leaves you free to write what you want. There are several independent channels to choose from, in which one can communicate. Q sequentially numbers the messages as they flow, showing them one on top of the other, creating a stack. At message number 100 of a channel the system does a reset to prevent data overload. Only the affected channel is reset, while the others update independently. These simple mechanisms allow you to manage messages that can be shared publicly but which disappear after a certain period of time. In this way we preserve anonymity while ensuring communication between potential strangers. But even people who know each other will benefit from using Q due to its anti-censorship qualities.
How I built it
Q was developed in the motoko language, in the windows environment, in the windows linux subsystem. Once installed ubuntu in the WSL environment I started using the scite editor for the code, finding it suitable and lean for the task. The DFX framework is very well done, and despite its complexity, you can use it a little at a time, gradually. A lot of trial and error before I realized that the messages the compiler gave me were very accurate and useful.
Challenges I ran into
I was not developing in linux but windows, and the language I am familiar with is PHP. I wanted to develop something on the internet computer, after reading the goals and the great vision that ICP has of the future. I also wanted to develop in motoko because it is the language that synthesizes that great vision. Initially I was thinking of developing another concept, but too complex for the time and knowledge at my disposal. The difficulty of finding some functions in the Motoko language slowed me down a lot. Eventually I had to be able to do something with what I had learned. Despite the lack of some functions, which will arrive, I thought I could develop a communication system. Motoko has great potential, but is still immature today (21 June 2022). Despite the difficulties, I still took the good in the system to make something work.
Accomplishments I'm proud of.
And in the end the system works, while I have left room for further improvements. I conceived Q in a modular way, in order to be able to intervene more easily, but also to make it understandable to others, I isolated the fundamental concepts for a shared communication system, using a language I did not know before. Knowing that I can develop today on a cutting-edge internet platform and that it is the future galvanizes me a lot.
What I learned
I learned to use WSL ubuntu in a windows environment, because it was the only way for me to access ICP technology. I tried to install rust as well but then I focused on motoko and learning about him. Documentation is still in its infancy and finding examples is still a challenge. But every step taken to learn motoko showed me the great robustness of his approach. I have yet to understand much of the motoko syntax, especially in the area of pattern matching.
What's next for Q messaging system
Integrate some improved features, such as antispam, but also optimization in general. Being able to check the performance of the system while it is running will certainly give me other ideas. Perhaps even the possibility of adding images in the form of icons for composing messages. The connection with an artificial intelligence could also serve to finalize the project. A form of collective synthetic intelligence should emerge from the accumulated human interactions. Person Q is therefore the synthesis, the unification of the many people who will use the Q messaging system.