overleaf的很多功能都是通过module 导入进去的,有些功能甚至就直接硬编码在里面是否开启。所以说要实现其实难也不难
难在于搞清楚这个体系的代码结构,上下层次,还有后期的维护,overleaf上游代码每天一更新,fork之后魔改一时爽,Merge时候冲突就快乐了
不难是因为overleaf社区版在“删代码”的时候没有删除干净,顺着蛛丝马迹可以类似完形填空一样把删掉的代码给补全。
随便讲俩个例子:
编译镜像切换本质是通过docker编译来实现的,但是clsi微服务里面的容器编译的代码都还在,稍微补一个解析环境变量,就可以实现docker编译了
再说那个审阅功能,核心的写数据库的代码都在,本质就是加个转发给chat微服务的模块就能搞定了
至于为什么官网有人数限制,看看下面的代码就知道了,都是写好了的,不存在什么技术瓶颈
当然有些功能也比较麻烦,比如git集成,这个东西很麻烦,我看了一下ertuil的实现就是加了olbridge,那是个国外的人给自己学校免费版的overleaf开发的工具,相当于就是个外挂的web服务,不过似乎后来他自己学校买了overleaf pro,他也就不维护那个项目了。git相关的代码几乎在开源版里面完全找不到,属于是完全独立的模块,所以很难从0开始写并且接的上。
最后好奇一嘴,ertuil的那个repo似乎behind一千多个commit了,你们还维护这个项目嘛(