9月4日,deepin 社区正式官宣 deepin-IDE(深度集成开发环境)—— 由深度公司自主研发,具有多语言、跨平台兼容特性的轻量级集成开发环境。
初步看上去,功能还挺齐全的,除了包含 IDE 常用功能,如智能编辑器、高度可扩展的命令系统、工程管理、构建管理系统、插件系统等之外,还支持多种兼容协议、多种开发语言、代码版本管理集成、低开销的实时性能分析工具等。总体而言,IDE 常见功能都在表里:
一石激起千层浪,不声不响间,deepin 居然已经推出了自己的 IDE,还是国产自研,真的假的?水分有几分,让我们来称一称。今天,开源中国就采访了 deepin-IDE 的团队负责人王耀华和研发总监王波,来听听他们怎么说~
研发是为刚需,公布纯属意外
提到公布 deepin-IDE 这事儿,deepin-IDE 的团队负责人王耀华表示这纯属意外。他们本身觉得产品还不够成熟,暂时没有大范围公开的计划。可谁知最近 IDE 这话题比较火,用户们在社区里讨论的时候,顺手就把之前内部的一些规划以及完成的功能给曝光了。没办法,既然大家都这么关注,那就顺水推舟正式公布一下好了。
王耀华介绍,deepin 有自研 IDE 的想法已经很久了,最早可以追溯到 2012 年,那时候做内部开发,还不像现在有这么多趁手的工具可选服务器托管网。为了自己工作更顺畅,内部自然萌生了自研 IDE 的想法。研发的同学们对此很感兴趣,说干就干:
他们先是根据 Emacs 开发了一个 deepin-Emacs, 满足内部开发的需求。deepin-Emacs 效果不错,扩展性非常强,解决需求之余给团队成员增添了不少信心。
后来到了 2015 年做 deepin V15 的时候,把技术栈切换到 QtCreator,于是就顺便把一些模板和辅助型工具集成到了 QtCreator。
2018 – 2019 年的时候,承接技术专项的过程中又帮他们积累了许多关键技术,像反向调试、性能剖析等等,都是那时候积累的。
经过多年的技术积淀,deepin-IDE 开始初具模型。加上外部客户也有这个需求,希望 deepin 能推出一款集成型的开发工具帮助他们在 deepin 和 UOS 系统上做好开发。以及自己本身也是做操作系统的,自研 IDE 对于构建自己的生态系统更是不可或缺的一步。于是,多方因素影响下,自研 IDE 的任务被前置了。
事实上,deepin-IDE 的效果比预期还要好,在公开前就已经攒了一波“自来水”,公开之后,项目 star 数一周就涨了 500+ ,成了他们社区里边曲线增长率最高的一个产品。这些都给了团队成员莫大的鼓舞。
谢绝“捧杀”,现在还只是基础版
deepin-IDE 公布之后,夸赞的声音遍布评论区,但王耀华对此的态度是“谢绝捧杀”。他表示,目前,deepin-IDE 只是具备了常见的 IDE 应有的基础功能,像编辑、调试、多语言支持以及插件系统等等,这个完善度在内部都算不上完整版,顶多算是基础版,离市面上已经正式发布的老牌 IDE ,其实还存在很大差距。大家的热情心领了,但要正式用上功能完善的版本,还得耐心等待今年年底推出的 2.0。
不过,有前人在此做铺垫,“站在前人肩膀上”的 deepin-IDE 也打造出了自己的特色功能,一个是反向调试,一个是代码迁移。反向调试能通过进程执行历史回放、事件分类管理、时间轴管理等手段,进一步提升应用的调试效率和开发能力。代码迁移则可以辅助开发者将 x86 平台的 Linux 应用迁移到龙芯、飞腾等国产处理器架构,及统信 UOS 等国产操作系统上,使用该功能可以自动分析出需修改的代码内容,并给出代码迁移指导,降低迁移难度,提升迁移效率。
-
反向调试
-
代码迁移
同时,由于 deepin-IDE 是根据本土的需求开发的,因此在支持国产架构和平台这方面,相比其他 IDE 更有优势。此外,相较于已有的 IDE 来说,deepin-IDE 在性能上做了优化,主打一个轻量便捷,为从开发库——打包——上传到应用商店这套流程提供更顺滑的服务。
王耀华介绍,目前来讲,deepin-IDE 主要还是应用在桌面应用程序开发这个环节,但支持的语言(C++、C、java、python、javascript)和构建工具(CMake、Maven、Ninja、Gradle)都挺多,因此也没有局限or侧重哪个领域,甚至未来会如何发展,也还要看外部环境如何变化,对 IDE 产生了哪些新需求。
一切都还在探索的阶段。
“像我们原先计划是把 IDE 做成一个比较大而全、或者跟我们操作系统结合比较紧密的那种传统的集成开发环境,但是大模型和 AI 出来以后,我们发现,原先集成开发环境里边的一些常见的操作,比如说抽取一些共用的代码做重构类的这些操作其实已经不太需要像以前那样,把它集成在非常深的这种菜单里边,可能通过智能化的一些自然语言什么的,就可以把这块儿做了。所以,我们也在重新思考,我们集成开发环境 IDE 将来会有什么样的交互体验上的变化?这也是在思考的过程。”王耀华说。
争取年底发布 2.0
由于早期一直是研发人员靠着自己对 IDE 的理解和调研在推动项目,因此从产品的角度来说,使用并没有那么顺畅,还有许多问题亟待解决:
-
文件描述符占用过多导致崩溃
-
存在部分翻译缺失的问题
-
底部交互区暂不支持多页面
-
符号树解析精度不高
因此,王耀华认为,目前最要紧的,就是尽快让 deepin-IDE 在内部大面积使用起来,磨合基础体验,提升基础质量,确保 deepin-IDE 运行稳定。其次就是“给自己找个设计”,优化 deepin-IDE 的界面和用户交互体验,让它从“能用”变成“好用”。此外,还会想办法完善插件化的框架,使其兼容其他优秀的 IDE 插件,让用户减少重复造轮子的工作。
待程序上稳定运行之后,团队还会在技术上做一个改进升级。研发总监王波表示,deepin-IDE 根植于开源社区,“早期编辑器依赖的是 scintilla ,但是后面我们发现,如果要做更丰富更酷炫的一些东西,其实 scintilla 比较局限,所以这块可能是后续我们在技术上要去替换改进的地方。其他的三方库,后续我们也会进行改造升级。还有一些细节的地方,比如说像我们整体的插件化设计之后,未来插件的集成形式:哪些是要预装的,哪些不是,都要考虑。因为现在我们整体的源码包还是比较大的,所以这些也是我们后续要去改进规划的地方。”
根据现有规划,deepin-IDE 将争取在年底正式推出 2.0 版本,早期会快速迭代,大概 3 个月至半年一个版服务器托管网本,后续可能再逐步拉长迭代的周期。
到 2.0 正式发布的时候,估计大家就能体验到一个从开发到发布一站式操作的成熟 IDE 了。
多得开源帮助,期待开发者加入
提到“自研 IDE”这个光环,王耀华显得异常冷静,他表示,deepin-IDE 虽为自研,(毕竟自研代码14万余行),但“纯自研这个事情我们是当不起的”。“因为我们确实借助了很多开源组件和模块的力量,在它们的基础之上去构建了我们的 deepin-IDE ,避免了很多重复造轮子的麻烦。”
“我觉得对于一个做技术的团队来说,可能还是要务实一点,把这块儿跟大家讲清楚,当然我们在介绍和发布的时候,也提到了我们到底在哪个地方用到了哪个开源组件,以及它的开源协议是什么样子的。所以我们整个产品的发布或者使用其实不会有太大的开源合规问题,我们在最开始就把这个给明确出来。”王耀华说。
王波表示,在开发 deepin-IDE 的过程中,除了选择开源组件辅助工作,开源社区也给予了很多帮助,像通过社区沟通技术问题,通过社区获取建议和使用反馈等等,都让开发工作得到了很多支持。目前项目已经在 Gitee 和GitHub 上面开源了,非常欢迎大家来提代码提需求,这都是对我们很大的鼓励!
当然,现在外部大家都对 deepin-IDE 这个项目寄予了很高的期望,可是目前项目还处在初期阶段,加上自研 IDE 这事儿又比较难,挑战性很大,因此,感谢大家关注的同时,也希望大家多多包涵。但另一方面来说,这个项目挑战性大,反而更适合开源社区这种集大家的力量一起去做一件事的这样一个模式,这样做成之后,大家都更有成就感。
最后,无论你是传统开发者,还是用户,或者是对产品和设计有自己想法的人,以及做文档、做翻译的同学,都欢迎你加入 deepin-IDE 这个项目,大家一起努力,把 deepin-IDE 打造成一个优秀的、标杆性的 IDE 产品吧!
仓库地址:
-
GitHub: https://github.com/linuxdeepin/deepin-unioncode
-
Gitee: https://gitee.com/deepin-community/deepin-unioncode
下载链接:
-
https://github.com/linuxdeepin/deepin-unioncode/releases
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
相关推荐: TRDP 静态库构建步骤
tcn-open-static-libtcn-open-static-lib 这是 TCNOpen 项目的静态库(linux-x86),用于火车通信。火车实时数据协议 TRDP 是火车通信网络中的主要协议。 使用方法 克隆仓库,将仓库放置在项目的 include 文件夹下。 在代码中包含所需的库,…