I have the general idea for the following project for a long time but I am still hesitating on the shape this project should take.
This project is more oriented towards physicists, engineers, data scientists. But who knows? Maybe other people could find an interest in it.
Do you know about Jupyter notebooks? If you are among the group of people mentioned above, you most likely do. Jupyter notebooks allow you to combine text with markup, LaTeX, and Python code, and display the results with interactive widgets, all in a single notebook that presents your calculations and thought process in a narrative way.
Jupyter notebooks are extremely useful for taking notes while performing computations and tests. They provide the ability to visually illustrate your coding work and explain the results more effectively.
When working alone on certain problems, Jupyter notebooks can be practical. However, when you need to discuss specific issues with colleagues or teammates, sending a copy of your notebook can result in asynchronous communication with annotated copies of the notebook, leading to confusion with version control. Real-time collaborative editing can also be chaotic.
To address these issues, my idea is to introduce a chat feature that allows users to not only communicate via text, but also through Jupyter cells that include markup text, LaTeX, and Python code, as well as associated outputs with widgets.
All of the necessary components for this feature already exist, the main challenge is integrating them properly and creating a user-friendly interface. The backend consists of a simple web server that serves the frontend, which is made up of two parts: the chat page, designed in the structure of a Jupyter notebook, and an iframe containing a version of Jupyterlite.
On the server-side, there is also a server that receives messages from the Jupyterlite client through a simple POST command, and broadcasts the message to the appropriate chat page that is “listening” through server-side events. The Jupyterlite client is modified to allow users to send the selected cell to the server.
The main technical difficulty lies in synchronizing the chat page and the Jupyterlite client, both for authentication and navigation purposes. This will require careful attention to ensure seamless integration and user experience.
Developing this tool would require a significant amount of effort, and it is important to determine its potential usefulness and target users. To identify potential use cases and gauge interest, it may be helpful to seek out individuals who would benefit from this tool and gather their feedback.
Some potential users may include teams working collaboratively on coding projects or researchers working on data analysis. The tool could be particularly useful in cases where real-time collaboration and communication are necessary, such as remote team meetings or discussions with geographically dispersed colleagues.
To gather feedback and determine potential use cases, reaching out to relevant communities or individuals through forums, social media, or targeted surveys could be helpful. Additionally, seeking out early adopters to test and provide feedback on the tool could provide valuable insights for further development.