Hi folks,
TL; DR.
Akashdeep/t0xic0der here. I would love to hear what you think about a project that I am
proposing for Fedora's representation in this year's Google Summer of Code. I have
built a functional prototype of
the project (which you would find [
here](https://github.com/t0xic0der/syngrafias/), the
documentation [
here](https://github.com/t0xic0der/syngrafias/wiki/Usage) and the
screenshots [
here](https://github.com/t0xic0der/syngrafias/wiki/Screenshots)) so you would
able to know what the project can potentially provide. You can find the project
proposition [here](https://pagure.io/mentored-projects/issue/85). As this project pertains
to facilitate convenient documentation creation as a service specifically, it is vital for
me to know what you think about the project and the feasibility of implementation of this
service on our infrastructure should it get selected and worked upon.
IWRTLV. (I wanna read the long version :P)
Take a look at the following excerpt which was taken from the proposition I wrote (Check
issue
https://pagure.io/mentored-projects/issue/85 of mentored-projects for the entire
content and the conversation regarding it).
<EXCERPT START>
- There has been this web application I have been building a functional prototype for,
which allows for synchronized authorship of documents in an unintrusive manner. The
project is called Syngrafias.
- To explain this in a better way, people who have used Google Docs for editing documents
collaboratively know how the changes made to the document are actively synchronized to all
the collaborators during the time of editing. Syngrafias does that but with a much more
distributive approach to it - as here the changes made in the document in the absence of
the other user would not be synchronized, thereby seamlessly creating (say) a fork of the
same document. ([See the attached image
collabnt.png](https://raw.githubusercontent.com/t0xic0der/syngrafias/mast...)
- The unintrusiveness in the document editing can be better explained if I draw
parallelism with Jupyterlab. Just like in Jupyterlab, we have distinctive cells here for
editing text. It is a simple mechanism but with much greater functionality as it allows
you to selectively share the parts of the document you want collaborators to edit and
rearrange the parts of the document by simply using a drag-n-drop operation. I have added
in Summernote for WYSIWYG editing for each cell. ([See the attached image
opendocs.png](https://raw.githubusercontent.com/t0xic0der/syngrafias/mast...)
- Of course, there is activity tracking so any change in the document title, cell title or
cell content gets logged and activities like cell creation and removal are synchronized
across all connected clients. The way I see it, this project can bring about radical
positive changes to the way Fedora's project documentation are worked upon
collaboratively. Also, if I simply replace Summernote with CodeMirror - this can even be
used for collaboratively editing code snippets on-the-go. ([See the attached image
activlog.png](https://raw.githubusercontent.com/t0xic0der/syngrafias/mast...)
- With 57 commits as of the time of writing the idea description, the project is only
getting started and only the bare functionalities of the project are complete. You can
find the repository [
here](https://github.com/t0xic0der/syngrafias), the usage
instructions [
here](https://github.com/t0xic0der/syngrafias/wiki/Usage) and the
screenshots [
here](https://github.com/t0xic0der/syngrafias/wiki/Screenshots). There are
tons that we can expand upon if this ends up becoming a project for GSoC. I would very
much love for you folks to try out the project, let know what you think about it and your
valuable suggestions for it to become a GSoC project - if it can. I would be obliged.
<EXCERPT END>
The reason why I wish to propose this (outside) project for Fedora's GSoC
representation is because it has the potential to be a project assisting the
distro/community (e.g. Bodhi and Mote) by making the process of documentation creation
much more efficient and conveniently collaborative (as compared to the Pagure and
Antora-bound method that we use right now). Do note that the project (I believe) aims to
complement the tried-and-tested systems in place as of now with the features it has (and
plans to have).
The way I see it - the project I am proposing here can complement to Antora's
functioning by cutting down on the mandated build times to generate a preview (as we have
a WYSIWYG feature) and deferred collaboration (highly subjective though as active
synchronization would mostly benefit only those who are living at the same timezone and
decide to work together for the same time). I cannot emphasize enough how beneficial it
can be to try out the project prototype to understand how capable the project can be. You
can find the [project
page](https://github.com/t0xic0der/syngrafias) and the [project
wiki](https://github.com/t0xic0der/syngrafias/wiki) links here. (or drop a response
expressing willingness for a demonstration and maybe, we can schedule a video meet ;-))
As the proposed project marks a departure from the kinds of project that were used to be
proposed for GSoC, it would be vital for me to know what you think about the proposed idea
and the likeliness of adoption of the ideas stated in the project. How effective do you
think it can be (if it can be selected as a GSoC project) and what can be done to make it
better?
As questions concerning the infra team, some basic information on the project architecture
are as follows :
- Programming languages used - Python 3, JavaScript
- Frameworks and technologies used - Flask, Jinja, Click, Websockets, Asynchronous
programming
- Tested load (automated load of 500 concurrent users typing "Lorem Ipsum" on
the same document) - 115MB memory utilization (DDR4-2400, Upto 8-10% of CPU usage
(i5-7300HQ)
How feasible would it be to implement this as a service for the Fedora infrastructure (if
it gets selected that is) and what nuances do we consider for so?
Thanks in advance. Looking forward to your responses.
Yours faithfully,
Akashdeep Dhar