golab: go local application builder - a web-based golang ide

golab

golab was a Go IDE for Linux.

This project is no longer maintained and might not build due to chganges in dependency projects.

The author (mb0) does use neovim and is quite happy with it, while missing the convenient auto install and test facilities. The ot (operation transformation) package is worth a look and a good start for any collaborative text editing project, there is also a utf-8 based version with js client that can be shared.

golab screenshot

Install

Requires Linux and Go 1.1.

go get github.com/mb0/lab/golab
echo 'yay! magic!'

Basic Usage

golab watches all files under your goroot and gopath (go help gopath). It automatically installs and tests a list of packages specified by the -work flag and prints colored reports to stdout.

Flag -work specifies a path list to the packages you are working on. Multiple paths can be seperated by a colon :. The default ./... uses the current directory and all it child packages.

Example:

cd $GOPATH/src/github.com/mb0
golab -work=../garyburd/go-websocket/websocket:./lab/...

Html5 UI

golab -http starts a web interface for reports and collaborative editing of text files.

Flag -addr=localhost:8910 specifies the http address.

Example:

cd $GOPATH/src
golab -http -addr=:80 -work=github.com/mb0/lab/...

Features:

  • Report view for go errors and test failures with links to sources.
  • Ace editor with gentle highlights and error markers for go, js and css.
  • Document collaboration with operational transformation.
  • External filesystem changes to open documents are merged.
  • godoc Ctrl+Alt+Click on imports in go source files opens the doc view.
  • gofmt Ctrl+Shift+F changes the document (does not save to disk)
  • gocode Ctrl+Space shows gocode completion proposals if installed.

I recommend using the Chrome browser, because the visual feedback seems faster than other browsers.

Feedback

Yes please!

License

golab is BSD licensed, Copyright (c) 2013 Martin Schnabel

Server code attributions

  • Go (c) The Go Authors (BSD License)
  • go-websocket (c) Gary Burd (Apache License 2.0)

Client code and asset attributions

  • require.js (c) The Dojo Foundation (BSD/MIT License)
  • json2.js by Douglas Crockford (public domain)
  • Underscore (c) Jeremy Ashkenas (MIT License)
  • Zepto (c) Thomas Fuchs (MIT License)
  • Backbone (c) Jeremy Ashkenas (MIT License)
  • Ace (c) Ajax.org B.V. (BSD License)
  • Font Awesome by Dave Gandy (SIL, MIT and CC BY 3.0 License)
  • Qunit (c) jQuery Foundation and others (MIT License)

Recycled code attribution // was easier than adapting to golab

  • ot.js (c) Tim Baumann (MIT License)
Owner
Martin Schnabel
Martin Schnabel
Comments
  • -work argument seems to be being overridden/ignored

    -work argument seems to be being overridden/ignored

    As it's said above

    [asa@kirito IntaLancer]$ golab -http -addr=:8910 -work="/home/asa/dev/Go/"
    2013/06/17 02:31:11 found gocode at: /home/asa/go/bin/gocode
    2013/06/17 02:31:11 starting http://:8910/
    starting lab for: [/home/asa/go/src/pkg /home/asa/gopath/src]
    

    The lab isn't started for the area I specify in -work and within the browser the areas it does look at aren't shown within the document browser window.

    Here shown if I look in the documents tab it just shows the tray icon with the work documents

    capture1

    but then if I manually enter my home directory after #file in the url it shows me some more options but crucially still ignores the one I specified

    capture

  • Uninstall

    Uninstall

    How do I uninstall golab. Even when I do not start it, it seems to be using the port I previously started it with and there does not seem to be a running process listening on the port when I use netstat -tulpn

  • Missing repository github.com/garyburd/go-websocket

    Missing repository github.com/garyburd/go-websocket

    The respository github.com/garyburd/go-websocket is 404 now

    github.com/garyburd/go-websocket (download)
    Username for 'https://github.com': kokizzu
    Password for 'https://[email protected]': 
    # cd .; git clone https://github.com/garyburd/go-websocket /home/kyz/Dropbox/go/src/github.com/garyburd/go-websocket
    Cloning into '/home/kyz/Dropbox/go/src/github.com/garyburd/go-websocket'...
    remote: Repository not found.
    fatal: repository 'https://github.com/garyburd/go-websocket/' not found
    package github.com/mb0/lab/golab
            imports github.com/garyburd/go-websocket/websocket: exit status 128
    
  • communication

    communication

    this issue is a declaration of intent. even though a simple chat box is the first thing that comes to mind when thinking about a collaborative workspace this or similar features are not going to be part of golab.

    my reasoning is that any effort in that direction will ultimately be too big for this project and in any way lacking the features you are used to. instead use your preferred way of communication like jabber, mumble, voip or carrier pigeons.

  • file management

    file management

    it would be useful if golab has the ability to create, rename and delete files. not a hard problem in general the one thing holding me back are interface considerations. but i come more and more to the conclusion that context menus and modal dialogs are the way forward.

  • gdb interface

    gdb interface

    looking at the github.com/sirnewton01/godbg project by chris mcgee gbd integration with golab seems feasible.

    i have not often had the need for debugging but in some cases it is very much called for and then often obstructed by the the unwieldy usage of gdb.

    so i want to add this as a long term goal to collect ideas and considerations.

    the first substantial one is that golab needs some kind of lockdown mode. so files and document buffers cannot be changed during the debug run. because golab is a shared and collaborative workspace there needs to be initialization sequence for the lockdown other collaborators can object to.

    that reveals other questions of which aspects of the ui and control are shared.

  • suspending computer can result in golab silently failing to update files

    suspending computer can result in golab silently failing to update files

    I tend to suspend my computer rather than shutting it off. I left golab open in my browser, and when I resumed I had to click the reconnect icon in the upper left. I edited a file that I had left open. It seemed to work - console output showed that packages were being rebuilt when I pressed ^s. However, behavior of the modified code did not change.

    I didn't realize what the problem was until I opened the file in a text editor and found that the last changes were ones I made before putting my computer to sleep.


    I think an error should be displayed to the user if any OT transform fails to apply.

Related tags
A Golang plugin collection for SublimeText 3, providing code completion and other IDE-like features.

GoSublime Intro GoSublime is an IDE-like plugin for Sublime Text 3 mainly, but not limited to, providing integration for most of your Go/Golang develo

Jan 4, 2023
gide is an IDE framework in pure Go, using the GoGi gui. It extensively adopts emacs keybindings.
gide is an IDE framework in pure Go, using the GoGi gui.  It extensively adopts emacs keybindings.

Gide Gide is a flexible IDE (integrated development environment) framework in pure Go, using the GoGi GUI (for which it serves as a continuous testing

Jan 8, 2023
Eclipse IDE for the Go programming language:
Eclipse IDE for the Go programming language:

Project website: http://goclipse.github.io/ As of 2017, Goclipse is no longer actively maintained, see this blog post for more information. If you are

Dec 20, 2022
The Fyne IDE

DEFyne This repo contains the work-in-progress Fyne IDE. Features Embedded terminal TODO Various types of editor Syntax highlighting Standard run/test

Dec 20, 2022
A modern and intuitive terminal-based text editor
A modern and intuitive terminal-based text editor

micro is a terminal-based text editor that aims to be easy to use and intuitive, while also taking advantage of the capabilities of modern terminals.

Dec 30, 2022
A terminal based game that teaches you how to use Vim.
A terminal based game that teaches you how to use Vim.

VimMan Learn how to use Vim in its natural environment, the Terminal! About VimMan is terminal program that's a semi editor and a semi game. The purpo

Dec 5, 2022
Vim compiler plugin for Go (golang)
Vim compiler plugin for Go (golang)

Vim compiler file for Go (golang) Compiles Go files in the background and usefully underlines and reports errors to the QuickFix window: Installation:

Sep 27, 2022
Data-builder - Data builder with golang

databuilder import "github.com/go-coldbrew/data-builder" Index Variables func Is

Feb 5, 2022
Web-based IDE for the Go language
Web-based IDE for the Go language

Welcome to godev! The aim of this project is to develop a premier Go language IDE hosted in a web interface. This was inspired by the way that the god

Nov 30, 2022
Web based, Go IDE.
Web based, Go IDE.

Strukture IDE Beta II Go lang IDE. Built with GopherSauce About project IDE runs as a server and is accessed via web browser. Being a web server, the

Nov 28, 2022
Go-Postgresql-Query-Builder - A query builder for Postgresql in Go

Postgresql Query Builder for Go This query builder aims to make complex queries

Nov 17, 2022
A Golang plugin collection for SublimeText 3, providing code completion and other IDE-like features.

GoSublime Intro GoSublime is an IDE-like plugin for Sublime Text 3 mainly, but not limited to, providing integration for most of your Go/Golang develo

Jan 4, 2023
A command line tool that builds and (re)starts your web application everytime you save a Go or template fileA command line tool that builds and (re)starts your web application everytime you save a Go or template file

# Fresh Fresh is a command line tool that builds and (re)starts your web application everytime you save a Go or template file. If the web framework yo

Nov 22, 2021
LiteIDE is a simple, open source, cross-platform Go IDE.
LiteIDE is a simple, open source, cross-platform Go IDE.

LiteIDE X Introduction LiteIDE is a simple, open source, cross-platform Go IDE. Version: X37.3 (support Go modules) Author: visualfc Features Core fea

Jan 5, 2023
gide is an IDE framework in pure Go, using the GoGi gui. It extensively adopts emacs keybindings.
gide is an IDE framework in pure Go, using the GoGi gui.  It extensively adopts emacs keybindings.

Gide Gide is a flexible IDE (integrated development environment) framework in pure Go, using the GoGi GUI (for which it serves as a continuous testing

Jan 8, 2023
Eclipse IDE for the Go programming language:
Eclipse IDE for the Go programming language:

Project website: http://goclipse.github.io/ As of 2017, Goclipse is no longer actively maintained, see this blog post for more information. If you are

Dec 20, 2022
The in-browser IDE for Go

Go Wasm Go Wasm is a Go development environment with the essentials to write and run code entirely within the browser, using the power of WebAssembly

Dec 19, 2022
A tool that helps you write code in your favorite IDE: your word processor!
A tool that helps you write code in your favorite IDE: your word processor!

WordIDE Have you ever wondered: How would it feel like to write code in a word processor? Me neither. But after months minutes of planning, I present

Jul 21, 2022
Lens - The Kubernetes IDE
Lens - The Kubernetes IDE

Lens - The Kubernetes IDE ("Lens IDE") is a distribution of the OpenLens repository with Team Lens specific customizations released under a traditional EULA.

Dec 31, 2022
Go Wasm is a in-browser IDE for Go

Go Wasm Go Wasm is a Go development environment with the essentials to write and run code entirely within the browser, using the power of WebAssembly

Jan 8, 2023