Skip to main content

Thinking about developing an opensource P2P social network

It has been a while since I made a blog post. I have been occupied by my academic work and I found using my past time on non-blogging related activities more rewarding. However, since it is summer break now, and I have mostly run out of things to do, I decided to get back to being creative and work on some project.

Recently, I have been floating an idea about creating a social network that practically eliminates the requirement to have servers and databses. From a high-level, the idea is that users can host their profile on their phones and their connections can query data about the profile, send messages, form groups, and make wall post which can be viewed by anyone who is connected to the profile.

I have seen a research paper summarising quite a few projects that has attempted to create something similar. However, I observed that these would at least have a server for authenticate a user; to tell confirm if the user is who he says he is. I believe this can be eliminated by allowing users to hold on to a private key and use digital signature algorithms like Elliptic Curve Digital Signature Algorithm to prove the identity.

At the moment, I think we would need to setup something like a WebRTC server to route the messages, which would be the only server in this entire system. I am not sure if this can be removed, but I shall be actively looking into any alternatives that would allow removing this as well.

Since all the code is in the client side, I think it is better to make everything opensource. People would be able to read the source and copy it either way, and hence there is no point in not actually making the project officially opensource. Also, making it available on GitHub would potentially allow others to contribute to the project.

I have been in contact with my friends Julien, Dario, Michal and Kuntal to flush out the idea and to see if there are flaws in this. I am not sure if they would be interested in being involved in coding this; however, I will send a link to the GitHub page at a later point, after I can make a clear architecture.

It would be better to have people involved in this project in the long run, as they would probably motivate me to work on this as time passes. I am not sure if it was Ratan Tata who said this quote first, but he did say it at some point, I believe, "if you want to walk fast walk alone if you want to walk far walk together".

Comments

Popular posts from this blog

How to Create your own Ad Blocker Chrome Extension

Not very long ago, I read an article stating that Google banned advertisement blockers from its stores. There are several websites which does not let you in if you have an Ad blocker extension installed on your browser. I have not investigated on how these websites detect that, nor do I know whether our own version of advertisement blocker would be immune to that. But, isn't it fun to build something like this on our own? As the first step, I found a random website that has a Google Ad. I right clicked on the Google Ad and clicked on Inspect button. As I moved up the Elements inspector, I found that the id of the advertisement starts with "google_ads_". Therefore, I opened the console and typed in the following command: div = document.querySelector('[id^="google_ads_"]') This selected the div  that contained the advertisement. I went ahead and typed in the following command that would remove the div from the page. div.parentElement.remove...

Turning your phone into a virtual-joystick

Update: I kept working on this and I have released it as a package for Windows, Linux and macOS. Check it out: https://github.com/zenineasa/joystick/releases/tag/v1.0.0 -- During the days when I was pursying my master's programme, my friends and I used to occasionally go to a classroom in the university, turn on a projector, connect devices like Nintento Switch or Gaming computers and loads of joysticks, and play different simple multiplayer games; MarioKart was my favourite. From time-to-time, when I get together with people, I ponder that it would be a good idea if I bought such devices. Indeed, I do have a laptop, which could easily run such games; SuperTuxKart is similar enough to MarioKart and it can run on Linux, Windows and Mac. However, I do not have joysticks with me at the moment. Therefore, I think it would be a good idea if I simply worked on a project that would enable using our phones as joysticks. From a high-level, the plan is to host APIs on a NodeJS server that wo...

How to remove Blogger (or any free blogging platform) credits from the footer

I am not sure if removing the footer credits is legal or not, but I just wanted to try doing it. As I searched the internet, I found several pages describing how it could be done by making some adjustments in CSS. However, I could not find an article which uses simple JavaScript commands to do the same. So, I decided the write this. As you can see now, my footer does have Powered By Blogger credit signature. I am intending on keeping it that way until I am sure that removing it would not get me into any legal issues. I am just writing this article for the educational purposes. Right click on the Powered By Blogger  button and click on Inspect to have Chrome Developer tools loaded with the div that holds the credit content. You can see that the element should have a content similar to the following. Notice that the div is having a class value blogger . We can use this to our advantage. <div class="blogger"> <a href="https://www.blogger.com...