Standalone Application or NetBeans Plugin
GoWorks is now available both as a standalone application and as a plugin to NetBeans 7.3. For users who already have NetBeans 7.3 and wish to include support for Go as an integrated plugin, please see the Release Notes below for special instructions.
A Video Introduction to GoWorks
The following video gives a brief overview of GoWorks Preview 7. We start with a few basic tips for users launching GoWorks for the first time, followed by several examples to help developers effectively use our highly-responsive code completion features. We recommend watching the video in HD for best image quality (should be automatic in full-screen mode).
When facing a project with tight restrictions on time, it's essential to prioritize development of features in a manner that maximizes the productivity of end users. For GoWorks, we chose a feature set that highlights the scalability of our algorithms. 28 days after starting this project, we released GoWorks 1.0 Preview 4 featuring full-project responsive code completion support exceeding standards seen in most established products. We later revisited this project to incorporate several performance and usability improvements which are now part of our standard NetBeans framework.
Scalable Code Completion
GoWorks employs the same approach approach to highly-responsive code completion seen in ANTLRWorks 2, and shows the exceptional scalability of these techniques to large, general-purpose programming languages. Providing these features requires on-the-fly type analysis for inferred types and full analysis of complicated expressions.
The rapid progression of GoWorks proved that even we can be surprised. GoWorks was our first attempt to bring our highly-responsive code completion algorithms from computer science theory to a successful product. The result proved support for every one of our goals over the previous four years so well that we've been forced to revisit the basic question of what is possible. Following evaluations of this IDE in practice, we have modified many portions of our framework to improve support for new languages, reduce development overhead, and (perhaps most importantly) significantly improve our ability to progressively develop an IDE with a low risk of regression bugs. For companies using in-house languages on a daily basis, this approach produces usable products early in the development cycle while working along a solid path to completion.
Editor Analysis and Features
After careful review of the behavior of GoWorks in practice, we've revisited many of its features to improve performance, reliability, and flexibility to address the varying needs of programming languages in use today. In particular, we are better equipped than ever to handle the following features, but the strict time limits of this project prevented us from includeing them in the GoWorks demonstration.
Automatic Indentation and Formatting
After five years of searching for the best answer in this space, we now have a generalized approach to code indentation and formatting that can meet the needs of all of our internally tested languages.
After developing the semantic analysis features in GoWorks, we generalized our approach and modified it to better meet the needs of developers working with implicitly- and dynamically-typed programming languages. Areas where the algorithm in GoWorks is inaccurate or slow have since been properly resolved.
Large File Support
GoWorks uses a limited version of our framework support for large files. Currently our advanced approach to handling exceptionally large files works well but requires careful language-specific development and integration into the IDE. We are working to generalize the concepts used in these builds so they can be applied to all IDEs from the beginning.
For developers working while traveling, concerns such as battery life and application performance in battery saving modes require serious consideration. Our approach to these problems is based on dynamic feature reduction, a set of techniques which disable "candy" features while fully preserving the behavior of essential productivity features like highly-responsive code completion.
Refactoring and Static Analysis
For very short projects, we make sure to emphasize features developers use most frequently. GoWorks does not currently include support for automatic refactoring or static analysis features like Find Usages or browsing call graphs.
Build System and Debugging Support
Go provides the go tool for compiling and installing packages. GoWorks Preview 7 provides basic support for building, running, and testing packages with this system. GoWorks does not yet support the GDB-based debugging features of Go. When adding support for debugging a programming language, we make sure to leverage algorithms similar to those used in code completion to provide a consistent, responsive debugging interface even when using complicated watch expressions.
- Java 6 or newer
- Java 7 or newer is recommended; GoWorks takes advantage of performance improvements in this release
- 512MB free memory for GoWorks to use
- 1GB free memory is recommended
- A release of Go should be installed, and the
GOROOTenvironment variable set as described on the Go installation page
With Java and Go already installed on your system, simply download GoWorks from the link above and extract the files to some fixed location on your system.
Plugin for NetBeans 7.3 Users
GoWorks is also available as a plugin for NetBeans 7.3. When used as a plugin, GoWorks has the ability to use additional standard and 3rd-party NetBeans plugins, including source control integration. To install this plugin, open the NetBeans 7.3 plugin manager and go to the Settings tab. Add an Update Center with the following settings. Afterwards, the plugins will be available under Available Plugins in the Tunnel Vision Labs category.
- Name: GoWorks
- URL: http://tunnelvisionlabs.com/downloads/nbupdates/nb73/goworks/updates.xml
bin folder includes three binaries. You should launch the one matching your system:
- Windows, 64-bit Java:
- Windows, 32-bit Java:
- Linux, OSX:
For projects using the directory structure recognized by the Go command,
the root folder (the folder containing your
src folder) is recognized by GoWorks as a project. To
get started in GoWorks, simply use the
Open Project... command to open this root folder in the IDE.
The current preview release of GoWorks primarily targets users who already have some Go code they're working on.
As such, there is not currently a way to create a new Go project directly within the IDE. To create a
new project, create a directory on your system for the project, and add a
src folder containing one
.go source files. GoWorks will then recognize the project folder as a Go project and allow
you to open it in the IDE.
Bugs and feature requests may be reported on the GoWorks Bitbucket issue tracker.
A complete release history for GoWorks is available on the project's Bitbucket Wiki.