The 2024 Wheel Reinvention Jam just concluded. See the results.

Go IDE

Hey everybody,


I am creating a Go IDE, from scratch, in Go.

I would like to get feedback on my plans and ideas and also check to see if people are generally interested in such a project, or if I will end up being the only user of my IDE.


The Program

I have been writing the IDE in my spare time, along my day job, for a couple of months now.
I switched to my IDE as soon as I could (basically when text editing was possible) which was a big motivator in furthering usability.
Here is a screenshot of the program right now:



It has a GUI and a lot of keyboard shortcuts.
You can go run/test/install directly from the IDE.
There are shortcuts for opening the command line and the file explorer from the IDE.

The code is all Go, it uses some CGo for OS specific stuff.
Right now the IDE runs on Windows only. It uses Direct3D9 for rendering, so it should run on basically every Windows there is right now.
There are no dependencies on other Go libraries that are not under my control.
A simple go get is sufficient to build and install the IDE.


The Plan

- I want to add auto-completion (gocode), documentation (GoDoc comments when hovering over code) and refactoring tools (like gorename) to the IDE.
- Linux and possibly Mac support. This would mean new rendering and window event handling code for those platforms.
- Easy customization in code: the IDE is supposed to stay easy to go get which means entering one line in the terminal to install it. Since this is easy deployment and the target audience are programmers, my thought is to create entry points for customization directly in the code. For example there is a file highlighter.go which contains the color definitions for syntax highlighting. Instead of having a menu for this, the user can simply go to the IDE's source code, edit the color values, execute a go install and restart the IDE. The same is possible for keyboard shortcuts and GUI layout.


Questions

- Who and how many of you even use Go?
- What is important to you in an IDE?
- Which IDE are you using right now? LiteIDE? Emacs? Notepad?
- What features are you missing from your current editor?
- Would you be interested in trying another IDE or are you happy enough with your status quo not to switch?
- Do you think a patreon would make sense for this project? I have invested a lot of time already and will continue to do so. It would be nice to get a little money out of it.


Thanks in advance for your help and feedback, I really appreciate it.
I'll take a crack at your questions. It's Thanksgiving Holiday for many of us, so we might take a while in replying.

Who and how many of you even use Go?

We started a Twitter poll for you to check in on.

What is important to you in an IDE?

I can't speak for the entire community, but a healthy portion here likes to be in control. The more you expose your IDE behavior for us to tweak, the happier we tend to be. It seems you're going in that direction?

You should check out the 4coder forums to see what users here ask for in general. Don't take that as a sign that we want a 4coder clone (each project here is unique). Just that whatever you choose to make, many would be happy if we can "mod it" at some point. Up to you though.

Which IDE are you using right now? LiteIDE? Emacs? Notepad?

I use Vim.

What features are you missing from your current editor?

I'm pretty happy with Vim, although I wouldn't mind something like the Racket IDE when I want a programmer's playground.

Would you be interested in trying another IDE or are you happy enough with your status quo not to switch?

If you mean yours specifically I'd say yes. I have never used Go but I would give it a Go.

Do you think a patreon would make sense for this project? I have invested a lot of time already and will continue to do so.

It could make sense to find a platform for your project before you start asking for money. If you are serious about your Go IDE, and wouldn't mind us helping you, e-mail me at [email protected] to start a conversation.

Hope that helps.

-Abner

Edited by Abner Coimbre on Reason: Broken link.
Who and how many of you even use Go?
I use it quite often and I find that it's great for server development and an all round replacement for scripting language too due to its speed and simplicity.

What is important to you in an IDE?
Fast and doesn't get in my way. I usually prefer a text editor for that reason.

Which IDE are you using right now? LiteIDE? Emacs? Notepad?
Sublime with GoSublime for writing

What features are you missing from your current editor?
Maybe very decent autocomplete. Builtin debugging tools.

Would you be interested in trying another IDE or are you happy enough with your status quo not to switch?
Why not? I'm always up for something new.

Do you think a patreon would make sense for this project? I have invested a lot of time already and will continue to do so. It would be nice to get a little money out of it.
I don't know. That's up to you and if you think Patreon and et al. is the way for you, go ahead!
I've been recently learning & trying out go and I must say I like it for small tools & utilities. It has a potential to replace Python for me. Haven't written anything big to know for sure if it is for me or not.

I don't care much for IDE's. I've tried LiteIDE (on Windows), its fine. But mostly I write in notepad-like editor - builtin editor of FarManager.
If I would want to use IDE then main feature should be debugger. Built-in documentation/refactoring is usually very low on my priority list.
Hey Abner,

thanks for the twitter poll!
It turns out, of the 245, about 40 people use Go and about 35 tried it and may use it again.
Having lived in Go-world for a long time now I am a bit suprised that 65% have never even tried it.

As for the ability to tweak the behavior of the IDE, that is actually the reason why I started the project.
I was unhappy with all the little annoyances in other IDEs. That is why I have my own text redering and GUI layout.
All the code is written from scratch and will be available for everybody to modify. As I said, I will make sure to expose usability-related functionality in clear ways in the code.

The thing you mentioned with the playground was also a big issue for me. That is why I already have the ability to run single in-memory-files without the need to save them beforehand. This way when I want to quickly try something out, I can just hit Ctrl+N to create a new buffer, write the code and run it from the IDE.

I have thought about the way to get my program out there and I think putting it up here would be a very good thing. I really like the atmosphere and the attitude of this community.
Right now I am still finishing some basic features, like e.g. a file browse dialog, which I have not needed myself but which have to be in the IDE before I feel I can give it to anybody else.
Once I get to a point where I want to release it, I will contact you, maybe the IDE can become part of your network.
Hey gingerBill,

can you elaborate on the "does'n get in my way" part a little? What exactly do you mean by that?

As for the auto-completion, GoSublime uses the "gocode" daemon for completion, which I am in the process of adding to my IDE as well.
However, I have experienced some problems with it as well, when I was still using LiteIDE (which also uses gocode for auto-completion).
I remember using one of the Go OpenGL wrapper libraries, with the many public constants and functions, and whenever I typed a dot, LiteIDE would freeze for two seconds because the auto-completion took so long. I will account for these kinds of problems (at least the ones I am aware of) in my IDE, for example by running the auto-completion in another thread to let you keep typing.
I also know that the package completion does not work correctly, I have my own replacement code for that already.

As for a debugger, I will probably not build that into the IDE as I rarely use debuggers in other programming languages. For me it is not a priority at the moment.
Hi gonutz,

"Doesn't get in my way" -- This is a weird way of saying something like this:
If I want to edit code, then it should just edit code. If I want to debug code, then it should just debug code. It shouldn't have 1000s a menus cluttering the interface and it process things faster than I can process things. "Getting in my way" is huge problem for many IDEs and why I usually resort to a text editor instead. It does one thing well and that's it.

With regards to the autocompletion and gocode daemon, what Sublime offers is usually good enough for me as I don't use autocompletion as method a of navigating code (browse by autocomplete), rather as a way for me type quicker.

When programming C/C++ code, I usually have Sublime as my editor and then an external debugger (MSVC, Xcode, lldb, etc.) as there are no decent methods to get debugging functionality within Sublime. There are very few decent Go debuggers out there and using gdb is just painful at times.

I'm glad you are working on this and hope you achieve making a great IDE.

Regards,
Bill
Hi gonutz,

No problem we'd be happy having a Go-focused project on the network. You don't need your project ready for people to download to be a part of it, mind you, so if you want to e-mail me earlier than feel free. Like Bill said, we look forward
to what you can do with it. That 65% of people not using Go would give it a go if a member releases an IDE for it, I'm sure.

-Abner
Who and how many of you even use Go?
I have never used Go, but I would be willing to try it.

What is important to you in an IDE?
--- Fast everything ---
File browsing
Jump to definition / implementation
Create definition / implementation
Jump to error
Managing multiple buffers (create, delete, move between, etc)
Terminal emulation in editor
Customization

Which IDE are you using right now? LiteIDE? Emacs? Notepad?
Vim is my primary editor, but I am slowly moving towards using 4coder.

What features are you missing from your current editor?
Fullscreen support (gvim)
Good auto-completion (gvim and 4coder)
Good font rendering (gvim)

Would you be interested in trying another IDE or are you happy enough with your status quo not to switch?
Yes, I would try another IDE.
Hey Rayalan,


I agree that everything should be fast.

Recently I added auto-completion and jump to definition to my IDE using external command line tools. They are slow the first time you use it on code that is not yet in the cache, one or two seconds to start-up, but after that they are really fast. I was thinking about rolling my own and maybe I will in the future.
Having my own index of the code would allow me to implement more features like that.

As for terminal emulation in the editor, I guess every programmer always needs to use the terminal at times and I feel like the IDE should actually NOT try to implement a new terminal, as it will always be different from the OS terminal.
That is why I have a short-cut in my program, F12, that simply opens a terminal in the directory of the current file.
This way when I want to check-in my code to git, for example, I simply hit F12, do the git magic, and close it afterwards to go back to the code.

The same thing is true for advanced file operations, F11 will open the Windows Explorer in the current file path.
What do you think of this idea? I am sure other editors must have done this in the past but I actually have never used one (or did not know about it) that would do this.

What do you not like about gvim's font rendering?

Thanks for your feedback, I really appreciate it.
I think the way you're handling the terminal is fine, but I think you _need_ to be able to execute a build script and see the output in the IDE.

I'm not sure what you mean by advanced file operations. I think it's important to be able to move, rename, delete, and create folders and files.

The font rendering in gvim was more of a nitpick. Sometimes edges look a little rough to me (esp. 'x', '<', etc).