Wide - 使用Golang开发基于Web的IDE团队

jopen 9年前

Wide 是使用Golang开发基于Web的IDE团队 。

Wide - 基于 Web 的团队 Golang IDE

Wide 的由来

  • 团队的 IDE:

    • 安全可靠:项目源代码实时保存在服务器上,开发者的机器崩溃不会丢失任何源代码

    • 统一环境:服务器统一配置开发环境,开发者本机无需任何额外配置

    • 开箱即用:5 分钟搭建服务器;开发者打开浏览器即可开发、调试

    • 版本控制:每个开发者拥有自己的源代码仓库,随时可和主干保持同步

  • 基于 Web 的 IDE:

    • 只需要浏览器就能进行开发

    • 跨平台,甚至在移动设备上

    • 易进行功能扩展

    • 易与其他系统集成

    • 极客体验

  • 商业-开源的一次尝试:会推出专门为企业定制的 Wide,贴近开发流程

  • 目前较为流行的 Go IDE 都有一些缺陷或遗憾:

    • 文本编辑器类(vim/emacs/sublime/Atom 等):对于新手门槛太高,搭建复杂

    • 插件类(goclipse 等):需要原 IDE 支持,不够专业

    •  LiteIDE:界面不够 modern :p

    •  没有团队开发体验

  • Go IDE 很少,用 Go 本身开发的 IDE 更是没有,这是一个很好的尝试

特性

  • 代码高亮、折叠:Go/HTML/JavaScript/Markdown 等

  • 自动完成:Go/HTML 等

  • 编译检查:编辑器提示编译错误

  • 格式化:Go/HTML/JSON 等

  • 运行:支持同时运行多个程序,方便联调

  • 调试:基于 gdb 的调试系统

  • 多用户:团队开发,方便协作

  • 代码导航:跳转到声明,查找使用,文件搜索等

  • Shell:连接到服务器执行命令

  • Web 开发:前端(HTML/JS/CSS)开发支持

  • go tool:go get/install/fmt 等

  • Git 整合:常用 git 命令可视化操作

    文档

架构

Build & Run

Build & Run

  • A browser tab corresponds to a Wide session
  • Execution output push via WebSocket

Flow:

  1. Browser sends Build request
  2. Server executes go build command via os/exec
    2.1. Generates a executable file
  3. Browser sends Run request
  4. Server executes the file via os/exec
    4.1. A running process
    4.2. Execution output push via WebSocket channel
  5. Browser renders with callback function ws.onmessage

Code Assist

Code Assist

  • Autocompletion
  • Find Usages

Flow:

  1. Browser sends code assist request
  2. Handler gets user workspace of the request with HTTP session
  3. Server executes gocode/ide_stub
    3.1 Sets environment variables (e.g. ${GOPATH})
    3.2 gocode with lib-path parameter

项目主页:http://www.open-open.com/lib/view/home/1411807083750