Hacker News new | past | comments | ask | show | jobs | submit login
A Web IDE for Teams using Golang (github.com/b3log)
87 points by kristianp on Oct 27, 2014 | hide | past | favorite | 52 comments

I don't want to sound arrogant, but can someone please try to explain to me what is the appeal of web-based IDEs for non-web development? The “feature” bullet points from their site do not really speak to me, and it overall still seems like a solution in search of a problem. I'd seriously like to hear some stories from people who use such solutions and environments.

The only reason I can think of for the existence and continuous implementations of this idea is when you regularly develop on different machines where you can't set up development environments. And here again I can't imagine why such a thing would ever happen to a typical programmer, let alone to a team of developers (presumably at a company).

Main point to me would be that it would work automatically on every platform and without needing setup/installation/updating, so I could switch between a Chromebook, a Mac, PC with Windows or Linux without even having to think about whether the IDE has been ported to that platform. If there would be a practical IDE solution running in the browser (or Chromium as offline package) for C++ which replaces VStudio/Xcode/QtCreator I would switch in an instant.

There are some decent C++ web IDEs, like https://www.codebox.io/stack/c or https://koding.com

But what is the purpose of creating yet another Web IDE (for Go) if there are already many established open source solutions like Eclipse Orion? They could just add a Go code completion and a build service to it.

Although I don't think there is any web-based IDE that currently exists[1] that provides a remotely acceptable level of usability (even for web development), I buy into the dream.

I would love to code right up until 17:15, then go pick up my kid, have dinner, play with his trains or Duplo blocks, and then at 18:45 when my wife takes the kid in for his bath, be able open my laptop at the dinner table and get right back to the work I was doing, with the same code editors and test cases open, breakpoint on the same line of code, and take advantage of that 23 minutes or so by picking up right where I left off.

I used to just have a beefy workstation dialed in at my office, and do all my coding there. When I got in the zone, I'd just stay as long as I wanted.

It was having kids that broke that arrangement for me, but I can see how it could be different things for other people. The change is that I now have things I have to (and want to) do, that require me to be certain places at certain times. So being able to code anywhere, with all my state preserved, would be terrific.

It's not so much about setting up the development environment (although that is actually pretty annoying for me this week, with the 4 Macs I regularly use all being upgraded to 10.10). It's about being able to just drop what you are doing RIGHT NOW and leave that window open with the half-written line of code, not even compiling much less something you want to check in, and then picking it up again right from that spot, when you are physically somewhere else.

That's the dream anyway. The reality is that I just mostly code less these days, and do more of other things (like writing) which are actually totally portable using current technology. But I would like it if someday my dev tools could keep all my developer state in the cloud, and yet have UX as good as the leading native IDEs. We aren't there yet, though.

[1]: Haven't tried them all, of course, but I feel like I've tried enough to extrapolate about the where the state of the art currently is.

As someone who wants to see more projects like this one I'll just explain what I see. Instead of opening up a full blown IDE UI 10 times, you could easily open up 10 browser tabs each separated by a web server instance. You can leave your project from one computer, go to the next one and continue. Instead of sending a friend a paste-bin to help you, you could easily link them to where you're working at, and what you're stuck with. No need to SSH or connect directly to a server, when you can indirectly edit files.

I see such a tool being useful for PHP / Web admins, provided said tool is setup secure (and hidden very well as a security fall back). Sort of the same way PHPMyAdmin is used, minus the PHP back-end. There's plenty of benefits to web based desktop applications, install once, run from everywhere, including devices that cannot possibly run an IDE but can run a browser, like computers with terrible processing / ram speeds, or tablets.

Multiple desktop IDEs/editors have true collaborative editing, where both parties can interact at the same time (ie two, user specific cursors)

As for the "edit files via ssh". Just stop. Please. This is why we can't have nice things. Etc.

If you want to collaborate that's great, but live editing files on a server via ssh is such a bad idea I can't believe I have to say so in 2014. Think of it like the tech equivalent of "don't let your 6 month old baby drive a bus on an icy road at night after a pub crawl"

This sort of tone is toxic and anachronistic in the extreme. Please consider the sort of environment you contribute to when you relate to strangers in a public community in this way.

sorry I don't believe in sugar coating the message. But this is HN so I'm sure people think it's more important to make friends and sing Kumbaya than actually stopping ridiculously bad practices.

I use Sublime Text 3 + GOSublime on my Mac and it has been a nice experience for developing golang apps. But I can see the appeal of web based IDE when combined with tools like nitrous.io, where your development tools are all in the cloud and you don't have to setup everything local just to start coding.

Sublime 3 + GoSublime is my correct set up as well, and as nice as it is, I do still miss some features from LiteIDE - namely the class view (which is handy for larger projects). Sadly this feature seems to be broken (empty box; doesn't populate with any classes) on my ArchLinux box and after hours of trial and error trying to fix the damn thing, it still doesn't populate. :(

Actually, if anyone else has any experience here I'd gratefully welcome it.

How do you find debugging?

Debugging was one of the primary reasons of moving away from Sublime3 for me, though I didn't try Sublime with Go.

From what I've seen, debuggers are a last-resort for most Go devs. GDB sorta works but it's not a great experience. The Go team is working on ogle[0], but it's a very early prototype at this point so who knows what they intend with it.

Most Go devs use logging/printing to debug. Mainly because of the prolific use of Goroutines, properly debugging an app can be very difficult.

[0] https://code.google.com/p/ogle/

Debugging is not ST's strong point for sure, but you can use https://github.com/quarnster/SublimeGDB.

At least you wont hear "it runs on my machine" because it never ran on your machine.

One advantage would be that any improvements to the web IDE would directly benefit all its users.

On the other hand, improvements you make to your personal local dev environment are local and not helpful to others.

Consider the time it took you, when learning Go, to setup gofmt on save, then after some time you might discover goimports and start using that. A newbie coming into Go will not have the benefit of goimports-on-save the way you do.

However, if they use the same web IDE, they will have the same good initial experience as you.

Just answering the question directly... That is one advantage.

(Also, lots of people are using an outdated version of goimports with bugs that have been fixed upstream; this should be a lesser problem with a web IDE.)

One of the great features IDEs have over plain text editors is integrated debugging experience.

How do you have that in a Web IDE?

Specially taking into account all the use cases a programming language is used for.

I don't use Go so I don't know the specifics of the tools you mentioned but any desktop IDE targeted at or supporting Go would very likely a) support stuff like syntax formatting out of the box and b) have a plugin system for less-common functionality and c) still allow you to define your own custom commands to call external tools/scripts.

For me it would be instant, remote collaboration. Unfortunately no web-based IDE offers that, as far as I know. Google docs for code anyone?

SageMathCloud (https://cloud.sagemath.com) offers collaborative editing of files, IPython and Sage notebooks, and latex documents, and terminal sessions. Really, it's like a collaborative unix account. It doesn't have a debugger, etc., so it's definitely not a full-blown ide, but it does have syntax highlighting and a shell.

Cloud9 offers that. https://c9.io/

https://www.nitrous.io/ does something like that, they're not open source or free however (though they do have a free plan).

Sometimes I'd like to host my IDE online so i can just pick up my work from anywhere, then run my tests from anywhere.

Maybe thats one advantage.

I also don't get the point.

Btw, I sent you an email on a somewhat related topic recently.

I saw it, just had a very busy week. I reply to it still today.

I also don't want to sound arrogant, but I would like to address this point:

> Text editor (vim/emacs/sublime/Atom, etc.): For the Go newbie is too complex

Text editor may be hard(?) to setup for a go newbie, although I do not personally agree with this statement, but at least local shell + text editor + command line compiler is a well known and understood stack. A newbie having a problem with it can always ask for help - coworkers, friends, online, etc., and solution is always within her control.

Replacing this stack with a web-based one will change a set of known problems into a set of unknown problems, outside of anybody's control, except for the b3log and their team. And their software is fresh and untested, and surely contains a lot of bugs, as any new code.

I'm not sure that sounds like a good value proposition - not to me.

On the other hand, it's likely (if their system is at least as good as cloud9) that if someone has a problem, they can provide a link that will literally show it exactly as they see it, and it'll almost certainly remove one of the most common problems of getting started which is weird environmental problems on the users computer. When cloud9 first came out, for a long time it was by far the best way of developing node.js code on windows.

I still have weird environment and cygwin/msys issues on windows when trying to set up Idris or rust or even some node packages that insist on compiling native code on install.

A couple of comments:

1) There are a few comments the question the appeal of web based IDEs. My view is that this because IDEs are generally quite refined pieces of software: the people who use them are also authors, etc. It's hard for a new IDE of any type to compete with that at the start.

HOWEVER, Web-based IDEs have some very attractive features. The ability to always have it available and customised to how you want it, with state shared across multiple computers is very attractive. Remote compilation and dependency/library management is much nicer than local, especially with the integration automatic versioning. Shared, multiuser coding spaces are also much more natural.

2) Regarding this IDE: I'd love a good Go IDE. The thing that stopped me diving deeply into Go last time I tried it was that I missed refactoring support. At least it seems to have autocomplete.

2) i have a kickstarter coming in a few days =]

Probably should put your email in you profile so people can email you to beg for details...

(The HN email field is private - it has to go in the "About Me" section)

When they mention LiteIDE has no modern interface, is that just colour scheme and icons? I've created my own modern theme for it. Should I share that?

I wanted to ask why Go is so popular in China, but then I found this: http://herman.asia/why-is-go-popular-in-china

On reddit: http://www.reddit.com/r/golang/comments/23c7y0/why_is_golang...

Hacking Go from a Chromebook; definitely gonna look. Neat if it runs happily as a local server under crouton ( https://github.com/dnschneid/crouton ).

I created a new Terminal.com snapshot to try this this IDE. Feel free to take a look at https://www.terminal.com/tiny/BRIrX20hCQ

I think it looks pretty cool. I think I'll try to set it up and have it as a backup option when all I have is a browser.

Someone throw this in a docker container and make it easy to play with.


From https://github.com/b3log/wide/blob/master/editor/editors.go: // 编辑器操作. (...) // TODO: 目前是调用 liteide_stub 工具来查找声明,后续需要重新实现

This is not an isolated example. People, please. For open source code stick to english in the code. Otherwise, you needlessly exclude anyone who doesn't speak your particular language.

I was about to dive into the code thinking "this thing looks cool, maybe there's something to learn from it". This turned me away instantly.

While I do like English, the way you said 'your particular language' seemed a little off to me.

I'm no expert but that sample you gave me looks like Simplified Chinese, which should be readable by about 1.2 billion people[0]. There is no solid data on how widespread English is yet but I think if 1/6th of the earth speaks a language which is also an official language of the United Nations, programmers should be able to use it without criticism.

It might be an unpopular view on a site seemingly populated mostly by Americans but there's a big world out there and not everyone is at a comfortable level of English proficiency.

I know it's disappointing not to be able to contribute but I also think it's wrong to expect everyone who wants to build an open source project to restrict their communications and comments to English, especially when most of the world's population doesn't speak it.

Plus, 30% of developers are from the Asia/Pacific Region, comparable to developers in the Americas[1]. Familiarity with Chinese is going to be comparable to familiarity with English.

Just to add a little more, Go specifically may very well be more popular in China than it is in the English speaking countries[2].

[0] http://www.ethnologue.com/statistics/size [1] http://www.techrepublic.com/blog/european-technology/there-a... [2] http://herman.asia/why-is-go-popular-in-china

You assume all developers from Asia/Pacific are familiar with Chinese. Speaking as one of 1.2 billion Indians, we are not familiar with Chinese, despite being firmly in Asia/Pacific. I doubt the Japanese, Koreans, Malayasians or Filipino are familiar with Chinese either. (familiar = to the point of being able to read it)

Just because a language is accepted at the UN doesn't mean everyone should be familiar with it. Even the UN needs translators for Arabic, Spanish, Russian, French and Chinese; all official languages. (Aside: the UN Secretariat uses only English and French).

Being a UN accepted language shouldn't be a criterion for programming, being popular among developers should be. And anyone writing any piece of code in any human language, be it English or Chinese, should know that by making that choice, they are also limiting the set of understanding eyes that can be laid on their code.

You're missing the point comletely.

There needs to be a common, agreed on ("standard") intercommunication language for exchange of knowledge to happen. For computer science related things, programming in particular, this is english. This happened historically because a lot of the development took place in the US and it is also a good choice, because english is easy to learn (I'm no native speaker btw.). Had computers been developed mainly in china I would very likely write to you in chinese at this moment (which would be a bad choice because it is badly suited as a global intercommunication language).

But they weren't and english is the lowest common denominator everyone doing CS is required to know. Hell, anything on the internet. If you deviate from this than you hinder the free exchange of knowledge and ideas which is bad.

Do not use any language other than english in public code. It is a bad idea because it needlessly alienates the larger part of mankind. It's not about "having it my way" or having others cater to my needs. I'm not advocating it because it is the easier choice for me, but because it is the better choice in the big picture.

> , because english is easy to learn (I'm no native speaker btw.).

OK, I guess your experience as a non-native speaker validates that claim?

I don't see how the claim "English is easy to learn" is obvious on an international level.

> I'm not advocating it because it is the easier choice for me,

But it also is an easier choice for me. Doesn't matter if you're a native speaker or not, since you're obviously comfortable with it.

(On this topic I also see a lot of "I wish everyone would just write in English/speak English in these contexts, and I'm not even a native speaker!", implying that they're an unbiased party. No, if you have a good command of the language, you're about as biased as any native speaker on this debate, really.)

Good point. What I was trying to convey is that it happened the other way round. I know english well because it is the language CS takes place in. Had it been chinese, I had learned chinese. Had it been elvish, I had learned elvish.

On the other hand, it's also possible that, for similar reasons, they wouldn't have written the whole thing if commenting in Chinese wasn't possible. I suspect that not turning people away wasn't one of their primary goals when writing those comments.

I've poked at C++ with Japanese comments once; I ended up just ignoring those comments completely and reading the code to figure out what was going on. I don't think those authors should have written the comments in a language they didn't seem to be comfortable in either; they probably never thought about who would look at their code.

It's open source; they don't owe it to you to make it easy to work with for you, and you don't owe them to work on it even if you are uncomfortable with the comment style.

With the abundance of online translators this should not be a problem. This is what Google translate makes of it:

    // Editor operations (...) // TODO:.
    Is currently calling liteide_stub tool
    to find statement, the subsequent need to reimplement
Baidu translate:

    / / editor operation. (...) / / TODO:
    is now calling the liteide_stub tool
    to find the following statement,
    the need to re implement
Between the two of those it is clear what this comment means. Had they written it in 'Chinglish' the result would probably be similar, but in that case nobody would know exactly what they meant, not even those who read Chinese.

Writer friendly comments/documents....

I am guilty of them also. A lot of time after 6 months, 1 year and I go back to the source/document I wrote, I have hard time out my writings.

I think the reasons are a lot of sentences/paragraph we wrote are highly dependent on the contexts of author's mind and the state of that particular moments of developments. It might just make sense within those contexts. When one forgot them or other try to read sentences out of the context, it become very difficult to understand.

I have some documents on power management code related to particular SOC + linux kernel + .ko + user app + pm scripts. They are very hard to understand for myself after a few months.

I don't know the best way to solve this.

You got the key point extactly! This is why we choosed Chinese comments in Wide :-)

Yes... relying to machine-translation for important content, always a good idea.

I agree with you that projects using languages I don't understand is a major turn-off, I think they understand that as well, and live with the trade-off. As someone else said, many people are not comfortable using English (which is just a nice way of saying their English sucks).

I wrote a small script [1] to translate this really cool Go blog [2] from Chinese using a free Bing API.

1: https://github.com/oyvindsk/Tore-the-translator 2: https://github.com/fuxiaohei/GoBlog

They have the freedom to do make that decision just as I have the freedom to voice my disagreement.

Ok, maybe their english sucks. Do you ever get better at something by not practising?

Or you could take the opportunity to learn Chinese. After all, are you ever going to learn something if you insist the rest of the world does it your way.

I have to say, from this and your other comments ("Do not use any language other than english in public code"), you come off as extremely arrogant.

Are you intentionally misrepresenting what I said in the other comments? Quote: 'It's not about "having it my way"' (Explanation follows).

Also, is it not allowed to make statements anymore? Yes, it is my opinion that it is very bad practice to use anything but the de-facto standard intercomunication language for CS in programming code. Do I have to pre-/post-fix everyhing with humble phrases and opinion disclaimers? When was that established?

Learn Chinese?

And I suppose everyone else should learn chinese too? Just because a bunch of programmers is lazy everyone else needs to change?

And you call me arrogant.

Don't be so touchy.

I make bold statements because I have a strong opinion on this based on experience and good reasons. That is not arrogance. Insert redundand humble phrases here (IRHPH). Tell me about this again after you debugged an old program written by the friendly (insert nationality) colleague who left the company, and wrote all his code in (native tongue) under time constrains.

The question of who should learn which language should be answered in this way: The correct way is so that it takes the least learning effort overall (added up) while enabling maximum exchange of knowledge and ideas. IRHPH. At the moment that means english is the way to go. IRHPH.

And just to make this clear: I'm not demanding anyone do anything in any way. I'm just pointing out that it is a bad idea. IRHPH

Isn't that an example of why people might want an IDE, because go source is UTF-8 and you want to make sure it is handled correctly.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact