Hacker News new | past | comments | ask | show | jobs | submit login
GitHub Codespaces (github.com/features)
1769 points by CraftThatBlock on May 6, 2020 | hide | past | favorite | 601 comments

Interestingly, it seems that Microsoft hast just renamed its "Visual Studio Online" (which was basically the same as this new product) to "Visual Studio Codespaces". So it seems that they are merging these two products. (See: https://visualstudio.microsoft.com/services/visual-studio-co...)

EDIT: They actually announced the renaming of the product a couple of days ago: https://techcrunch.com/2020/04/30/microsofts-visual-studio-o...

Codespaces uses the same underlying technology as Visual Studio Codespaces to bring a fully GitHub-native experience to our GitHub users. We've been working with multiple teams on the Visual Studio side to make this happen (I work as the product lead on Codespaces)

Similarly Github Actions is reusing a lot of Azure Pipelines under the hood.

One of the most impressive parts about Microsoft's recent acquisitions is how quickly essentially two separate companies are now sharing code. It's hard enough to get different teams/products in the same company to use shared code in a meaningful way, and Microsoft has accomplished it with a new company.

Having APIs designed for public consumption probably helped.

My experience with azure storage didn't make me think it was "designed"...

Azure storage is definitely the black sheep. They cleaned up the VM/compute layer a few years ago with the introduction of Azure Resource Manager (ARM), but storage hasn't gotten that big an overhaul yet. And it shows. They seem to be slowly improving things under the hood though...

Hopefully they’ll eventually provide an S3 compatibility layer like everyone else.

Give Azure NetApp Files a test drive. World of difference.

What's the issue with Azure Storage? It seems to me like it's one of the azure cloud services that are the least painful to use - at least through the official SDKs

Evolved via natural selection perhaps?

GitHub’s acquisition of Microsoft is really paying off.

Thanks to Microsoft maybe it will be possible to code seriously on an iPad. Hey Apple look at this!

All that is nice. But who are they building this for? Who is asking for this stuff?

For Github Actions, the product launch has been a major success and has become a new monetizable product. Anecdotally, I've heard of some companies moving their Jenkins/Circle CI/Travis CI workflows over to it, better proof is the sheer number of Github Actions that are now easy to install. This also allows Github to compete directly with Bitbucket and Bitbucket pipelines.

If your question is about who is asking for Github Codespaces, I'm not totally sure. Personally, for small changes it would be nice to be able to edit directly in Github but I certainly wouldn't pay for it. I imagine that core why behind this product release (besides the fact that most of this functionality was already pre-built and easy to reuse) is that it improves the user experience for anyone working from their chromeOS device, tablet and phone improving brand loyalty and capturing new users, especially students who may only have chromeOS devices.

As an OSS developer, Github actions make a lot of sense and is very welcome since it's very easy to setup (now! it was impossible in the beginning) and if you use bash scripts/npm scripts AND a tiny bit of workflow code then they are very agnostic as well.

I am unsure about this Github Codespaces though, I'll be testing it but I am fairly skeptical about invest a lot in Github-specific tooling beyond what is needed by a typical repo. It seems like Github has been trying to "extend" git into a proprietary phase for a while, and now with Microsoft backing it I'll wait to see if it's still the same old concept of locking you in deep and then do as they please. Not sure, it does look like they are going nice for now, but I personally prefer to wait.

This Codespaces doesn't solve a specific need I could point out like Actions did before, but maybe I'm just not their target.

I can imagine this being very useful in educational settings. Instead of students and teachers spending time on getting everyone's lab environments set up they just fork the course repository and tada it's there and it works.

For private repos, Codespaces will help on-boarding new team members or employees who don't have to waste time setting up a dev environment to contribute back.

I would love to have this stuff in theory but in practice, it hasn't worked for me.

I'm responsible for about 15 different Rails apps. These apps were built over the last 8 years and many have some nasty dependencies that make setting up a dev environment for them a pain. Or running tests a pain or whatever.

So many no one has touched in years but then some bug needs to be addressed in them. Today I have to get the app running again on my machine and there's always some silly timesink that makes the trivial change take too long.

For me ideally, I'd have two docker style images, one production, one test/development that just adds the dev resources to the production image. And then I could jump into any editor and see the changes live online without even installing docker on my machine.

Having a full dev system online means I can make changes from my phone, or really any internet connected device.

At this point, I don't have any interest in using such a system for my day to day work. But for my oddball stuff a well designed one would be great.

> For me ideally, I'd have two docker style images, one production, one test/development that just adds the dev resources to the production image.

Clarification question: do you mean two images in total?

Perhaps you are saying that would cover all 15 Rails apps?

I imagine a lot of projects will start here, whether it's new developers or existing developers who want to spin up a straightforward service.

I just used Glitch.com for the first time to set write and deploy a Node server in 10 minutes, and it was an incredible experience.

I've been looking for a better way to make changes to my personal projects from my Chromebook.

I can easily see at least one use: we have some outsourced dev work. It is painful to get them up and running because we have to set up remote desktop with everything that goes along with that, simply in order to let them edit code and run builds.

I imagine MS/GH will be selling to people like us the idea that we can simply make our GH repos the dev environments, and so all the access controls which we apply for managing interaction with the dev environment get us the appropriate dev environment for (effectively) free, and we throw out the desktop VMs.

So I suppose that you would like a faster horse?

When someone builds something and doesn't actually mention why, its not unreasonable to ask what the motivation was...

Have you asked them? You can hit up pretty much anyone these days on Twitter and they'll respond, if the question is reasonable. You make it sound like someone owes you a response.

If this is about GitHub Actions specifically there is quite a bit of info at https://github.blog/2019-08-08-github-actions-now-supports-c.... My takeaway is that it's about packaging up Azure Pipelines in a way that GitHub users understand and complements other features. There are more jarring ways to integrate the products.

> You make it sound like someone owes you a response.

I didn't interpret the comment that way.

BTW, I'm not saying your interpretation is "not true" or "crazy" or anything like that. I just think it is better to keep this kind of (bad faith) interpretation private. I think it is useful to remember this HN guideline "Please respond to the strongest plausible interpretation of what someone says, not a weaker one that's easier to criticize. Assume good faith." [1]

The benefit, which is not spelled out there, is that if more of us do this, there will be fewer amplifications / chain-reactions of misinterpretations. This results in a more useful discussion.

[1] https://news.ycombinator.com/newsguidelines.html

I think that's a fair point.

For the love of God please make it work at least manageably in phones! Tall ask no doubt, but y'all seem capable of it. GitHub does everything right except getting the phone experience right!

Do you really want to write coffee on your phone? I couldn't imagine wanting to every do that myself. Am I weird? :)

Yes! I certainly do. It's not my main device but for a quick bugfix when I'm not close to a PC it's really useful.

Currently Github regularly completely freezes Chrome on my phone when viewing moderately large files. And I have a decently specced phone.

I’ve used GitHub’s in browser editor to make minor changes to a PR from my phone while out at dinner. It was possible, but made me wish it was a little bit better.

I don’t think I would spend a day writing on my phone, but it’s really useful having this mobile.

I also use GitLab and their “web ide” (I think it’s called) is nice for changes by non-developers who don’t ever have a dev environment. We use a lot of config and docs repos that analysts use to update project material and they use the browser exclusively. I also approve merge requests from my phone almost daily to regenerate the static sites.

I will say it would be nice to review a PR while standing in line for groceries.

I'm gonna say you are in the minority there. Firstly, a Review should be just that a review of the code - not just a blind acceptance of a button. Its going to be hard to properly review code, which may be across multiple files, or may require switching within the same file, on a phone.

And secondly, work life balance, just because you can work while waiting in line for groceries doesn't mean you should

Firstly, I know my repo quite well and can generally (not always) tell whats happening with a PR without having to switch too many files. Even if I need to do that, I've been able to do that just fine on GitHubs desktop page so if it's not easy on a mobile now it's just a usability problem. It's a little bit much to say there's only one right way to do PRs or even write code.

Secondly, work life balance is a choice. Glad you make it, no one should ever be coerced against it, but I want to choose what I do. I'd rather look at my company code than what Kim Kardashians butt looks like on the Us weekly issue in the aisle. Also a bit presumptuous to assume it's only work, I have a personal website as well and I actually want to work on that whenever I have downtime.

My main usage of the app so far has been to approve PRs when pair/mob programming. Instead of going back to my desk where my computer is, I can approve the PR I've co-authored immediately.

Obviously it's quite a narrow use case, but I imagine there are lots of similar cases where the review is simple for one reason or the other and you want to get it done quickly.

Why would you need Codespaces for that? They released a standalone GitHub app recently just for this purpose. Not sure if it also works with the web version. But Codespaces seems to be the wrong tool for this job.

Their app is still outrageously feature incomplete in some ways. Can't create a branch! Can't edit files! Still better than their mobile site though but I end up opening their site in desktop mode to do any real work on my mobile. Super annoying!

They did some demos of improved github mobule support for phone based reviews in the Github satellite stream.

Well played, autocorrect.

I don’t know Visual Studio Codespaces.

Something I don’t yet understand about GitHub Codespaces is: can you execute a Dockerfile from it? Can you execute multiple ones? Can you execute docker-compose configurations?

Is it just an editor, or can it also spin an AWS (or Azure?) instance of the code you are writing?

I have seen people mention they can code from an iPad; but that’s not a complete workstation replacement unless it is easy to run your code.

I'm very excited about this! I hope you can host Codespaces in Australia as well so the latency is nice and fast! I tried VSO but I could only deploy to Singapore and it wasn't fast enough for me in Australia.

Super super super excited!

So I imagine this is similar to codesandbox.io which already lets you do frontendy bits?

I imagine the way Code spaces works is you spin up a container in azure with checked out GitHub branch, vscode on the browser then interfaces with the container(s).

Pretty neat idea if you can customize the docker container setup like a simple docker compose file or something.

Is the codespaces team hiring by any chance? I took a look at GitHub Jobs, and there are a few positions I could apply to there, but none directly related.

Can we please have Julia support? :)

Visual Studio Online (before the recent renaming as Azure DevOps) was at first, and for years, a Team Fondation server in the cloud an associated service. Naming, renaming, re-renaming is always quite an issue with Microsoft products.

Thanks for this! I was just gonna say "wait, this looks exactly like Visual Studio Online".

Ah, this really makes sense with all of the recent work they've done on VSCode's remote development capabilities.

- An early announcement on their focus: https://code.visualstudio.com/blogs/2019/05/02/remote-develo...

- Most (all?) of their recent VSCode updates include improvements to remote development. i.e.: https://code.visualstudio.com/updates/v1_44#_remote-developm...

- Facebook partnering and becoming an early, heavy adopter: https://developers.facebook.com/blog/post/2019/11/19/faceboo...

Their remote development capability is amazing and was quite a game changer for me. Having a nice ide where all of the plugins work on a remote server as if everything is local is so nice!

The SSH plugin is insanely good. I can dev from a Windows machine and SSH into my Mac and do React Native (native) iOS modules. Even my zsh shell acts as if it's local. Running `pod install` from Windows. It's seemless.

+1 to this. $DAYJOB has some proprietary ssh handling, but I can dev from my work-issued macbook into a Linux desktop in the office and vscode "just works"

Agreed. It's completely changed my productivity for the better. I don't even remember the code is remote.

+1 on this -- I had lots of remote issues when traveling to Windows desktop locations. It was surprising how few good solutions (hint: 0) I found. Until VSCode, which has been awesome.

but how do you test the iOS app on Windows?

I agree. I was floored by how well it worked, and actually had doubts that it was working in the way I expected it to/it's supposed to. It was just so seamless and natural. I kept thinking there was no way it was using the correct configuration, running the right scripts, etc.

It was a lifesaver too. I was using a severely under-powered ThinkPad and I'm admittedly awful with Windows. Being able to quickly swap to that remote setup reduced a tremendous amount of friction for me.

When good software works, it's so cool.

So nice when it works and has been breaking incredibly badly for me recently. The Python extensions that vscode was trying to bring up whenever I connected to my remote had some weird interaction with a virtualenv and just pinned the server to 100% CPU and rendered it completely unresponsive. Repeatedly. Reboot to recover.

Generally extremely good, but for obvious reasons this makes me think twice about connecting to some things.

Emacs has had Tramp for ages, which does this. Yes, it's amazing. :)

That's not the same at all. The emacs one is equivalent to all the other text editors that were able to open and save to SSH. Vscode allows remote plugin installation, so things like intellisense work on a code base of millions of lines remotely.

I've absolutely had gtags+semantic on remote C++ projects working just fine with Emacs and Tramp. Python+Flask, too, come to think of it. Oh, and Ruby, including full projectile integration along with automated test execution integration.

The key is Projectile+Tramp; I suppose you coulde use EDE, but I prefer Projectile.

Emacs is the beast.

remote dev (and I guess now codespaces) is one of those "clear differentiators" that is actually getting me to move away from intellij and friends.

I wish IntelliJ moves in this direction so bad - would gladly pay more for this. I tried switching to VS Code for my current project yesterday and it's the best VS Code scenario out of my projects - backend RoR frontend React/TS. TypeScript aspect is amazing but the Rails part is nowhere close to RubyMine.

.NET (Core) was inferior to any IDE (even Xamarin ones) last time I tried it (~6 months back). IntelliJ Rider has been quite an amazing discovery in this regard - I prefer it to Visual Studio.

And then there are things like mobile development which VS Code has realistically no chance of touching.

Any language I can think of other than TypeScript - VSCode just cannot come close to IntelliJ support. I would pay for the ability to have a desktop machine on which I could SSH develop from say a Windows tablet/2in1 with integrated 4G and hardware powerful enough to run the client editor + productivity apps and has portability + battery life (say some intel low power series + 8GB ram)

I agree. I’d love remote intellij development, but it doesn’t seem to be something they’re interested in at all.

VSCode team's highest priority is Javascript/Typescript, everything else is just trailing behind. Python and C++ are the very well supported ones. .NET is still really bad.

In my experience, it can't even do it for TS either.

WebStorm seems to understand Microsoft's TS better than the VS Code Plugin. Complex refactors actually work.

RubyMine can become a resource hog - even when it's not acting up the VSCode responsiveness is a noticeable improvement for me (and I'm working on a i9 MBP with 32gb ram !) - for example code refreshes analysis hints and opens autocomplete much faster.

I don't trust any refactoring tool to do cross file refactoring correctly in JS/TypeScript and the code navigation stuff in VSCode has been rock solid for me - I don't really miss anything and it's a much faster environment to work in - if I just had to do JS/TS development I could switch without any issues.

Vscode has an excellent support for golang too. Python support also is good but sometimes it’s hit or miss with some native dependencies.

VScodes support for Golang is meh. My entire team has switched to using Intellij/Goland.

Try solargraph for VSCode. I've found it about as useful as RubyMine.

But intellij has had remote dev support for longer than vscode has even existed, what am I missing?

It's amazing!

I've been doing some AOSP customization (Android 9) and I have several remote (Ubuntu) servers hosting/building OS images for different implementations (it takes too much disk space for a local PC and even so, I have a Windows based PC because of reasons, so if I had to use VMs, it would be too slow).

Now I can use intellisense through the entire Linux folder without delays. And... a global search for a string takes no more than 2 seconds. And I am talking about a string search through the entire codebase (not just the kernel; thousands of files).

My days are brighter, my life happier, my mood changed; thank you whoever invented this!

How does it work with poor or slow internet connection?

In my experience, pretty well. If the internet cuts out temporarily, it reconnects automatically without losing any of your work.

It’s actually impressive how often VS code or ssh has exploded for some reason without losing any work.

Should be fine - most editors will not round trip on every key press, only periodic saves or command runs.

True, I love it and it has been a game changer. The only problem with that is that it only works with the official VSCode, not with the OSS counterpart, which is a damn shame.

The WSL integration is a pretty good result of that effort too.

Is there a way yet for me to run a server on Windows, and be able to code anywhere from my web browser? I basically want code-server that works on Windows.


You can register your own machines with Visual Studio Codespaces: https://devblogs.microsoft.com/visualstudio/bring-your-own-m...

It's not entirely self-hosted, but it's an interesting hybrid middle-ground.

Coming soon :)

I wish the vscode remote dev functionality didn't require a binary server/remote side component. I have a bunch of users who want to use it, but it's not compatible with the system libraries on our servers and dev environments.

Reminds me of a job in a past life I was quite happy to leave. It seemed like all I did was clean up low-end websites compromised through Frontpage extensions.

That was a year I'll never get back, but I do highly recommend the fun of leaving _vti_bin/ directories laying around with funny-behaving things in them. Every few months I still see evidence in my personal site logs of a script kiddie slowly becoming enraged as they figure out I left them a busy box to play with.

Are you sure it needs a remote component? The remote SSH dev experience is actually pretty good in python.

Quite sure. Here's the documentation.


It seems like it runs all the functionality on the remote end, and the vscode instance you're running on the machine in front of you is just the GUI. To install this, you need ssh access, and then it drops some binaries on the remote system and uses ssh to start them up -- so it looks to a layman trying to get this working that "it only needs ssh", but that's just for the install stage. These binaries only work with more recent releases of glibc.

You know what's interesting about some of the features listed on that page:

- Develop on the same operating system you deploy to or use larger or more specialized hardware.

- Sandbox your development environment to avoid impacting your local machine configuration.

- Make it easy for new contributors to get started and keep everyone on a consistent environment.

- Use tools or runtimes not available on your local OS or manage multiple versions of them.

- Access an existing development environment from multiple machines or locations.

We have all those already with the way our development environments are setup, but the reason people want to use vscode is for the editor, no one asks about the above things.

So then perhaps you could mount the remote file system with something like SSHFS and use VS Code locally?

I don’t understand what VSCode could provide that would be useful while not executing any code on the server side. It sounds like what you’re really asking is that vscode be made compatible with older version of glibc?

sshfs is god awful slow for heavy local editor use. I don't understand what vscode provides other than an editor when all those capabilities are something that already exists when working directly on a remote machine, either.

I am asking that vscode be made compatible with older, established builds of glibc; or that the server component be open source so it's potentially possible to get it to work.

Use the remote containers plugin and that problem goes away.

Didn't we already solve this problem with containers?

You should read the article...nothing to do with containers...

The article has a lot to do with containers. When you spin up a code space, you get a containerized workspace for the current repository.

> Codespaces sets up a cloud-hosted, containerized, and customizable VS Code environment. After set up, you can connect to a codespace through the browser or through VS Code.

(But that wasn’t what the parent was referring to...)

I believe he was referring to the system libraries being outdated problem

There are perpetual reminders all around that Microsoft's only pretending to like f/oss because that's where the developer attention (and thus corporate money) is. There's spyware in all of their open source apps (TypeScript excluded, because they couldn't get away with it there) that you can of course patch out, but you can't get it removed from the project because, free software or not, Microsoft gets to decide what goes in or out.

Bet you a dollar the GitHub mobile app that's going to come out pretty soon will also be totally proprietary with no source provided. It's a growing trend in developer tooling: even Docker's desktop versions (not Microsoft's fault, but still) are not even open source (much less free software).

It's going to be really sad in a few years when Microsoft starts turning the screws to extract more revenue from this free software ecosystem (GitHub/npm) that they are coming to exert major control over.

Soon, the most common "industry standard" tooling for the largest and most popular software development ecosystem (javascript) will rely heavily on proprietary software that spies on you continuously while you use it, just like Windows.

> Bet you a dollar the GitHub mobile app that's going to come out pretty soon will also be totally proprietary with no source provided.

Stable version already came out a while ago, been using it on my phone. Also, GitHub the website has never been open source and they never pretended it was or was going to be, so no one was holding breath for source code of the mobile app.

I mean, they could have totally released the source and it probably wouldn’t impact their bottom line at all.

It would make quite a dent in support contracts for their on-prem offering.

I'm pretty sure it wouldn't. The mobile app isn't something that requires a ton of support anyway. What good would the source code do you in this case?

I think jon-wood was talking about the website’s source code, not the mobile app.

The view of the Eclipse Foundation onto VS Code may be interesting here: https://blogs.eclipse.org/post/mike-milinkovich/theia-open-s...

whoa, slick.

Yeah, this.

The analogy seems clear to me: The web is to IE as git is to VSCode, eh?

At the very least, it makes it harder for an editor to be a competitor to VSCode w/o integrating with GitHub (not just git) now, eh?

It’s telling that they went with VScode and not Atom. Makes me wonder what the long term outlook for Atom is.

Not really. At least: the web happened well before IE was introduced as an answer. In contrast, VS Code was invented much later than git which at the time was an established technology and in some ways a standard.

The other context here is that IE was a competitive browser in its time: 1998-2001. The problem is that it won and then languished. IE had a lot of sway over how developers built things as the market share grew. Then it locked in users in various ways which starved the other competitors.

It took until Phoenix (now Firefox), for there to be something better that grabbed the attention of developers and those sick of being stuck with IE. It became Firefox and Mozilla hatched a pretty effective plan to steal market share. For all of Mozilla's recent failings, we forget (or weren't around to remember) the success of Firefox was pretty impressive as it was a grassroots effort.

GitHub has always been a proprietary company unconcerned with user freedom.

They actually have a whitepaper that predates acquisition on exactly this:


The company has always been unethical; Microsoft didn't change that.

Wait for radicle.xyz

Those of you downvoting this - can you explain what you disagree with here?

Because it looks like a good analysis of this part of Microsoft's strategy to turn "Open Source" into a spyware-laden sausage machine for Azure.

I think the downvotes are because Microsoft has been providing some amazing tools completely free of charge. If that helps them sell more Azure... great! Everyone wins, except GitLab and AWS.

Calling it spyware is hyperbolic.

Keep it up Microsoft.

Some of us have longer memories of Microsoft's game-plan - embrace and extend. With so man now willing to grant Microsoft open source cred don't forget that it wasn't so long ago that Microsoft was running a Linux patent racket. If we allow The Beast to monopolise open source development tools we have only ourselves to blame.

Microsoft has been adopting standards to then extend them and lock-in users for two decades.

> Microsoft has been providing some amazing tools completely free of charge

Yes, and they are the opposite of a no-profit.

This are just the first steps: "embrace" and "extend".

Not at all. There are no objective criteria to define spyware that do not also apply to Windows or VS Code (and probably the GitHub mobile app, but I have not yet confirmed that).

My hope and suspicion is this will have a significant impact on the number of improvements to open-source projects and particularly little things like js components.

Just in the last few days, I've come across a few very minor bugs, with a one-line fix. In order to make that change, I currently need to fork the repo, download it, make the change (turn off my prettier or adapt to the repo's) then make the PR.

I'm hoping with this I can just make a PR in the owner's package. It's the difference between a 10 minute commit and a 1 minute change.

Github has had a built-in editor for almost a decade, you just had to click the Edit button in the file: https://github.blog/2011-04-26-forking-with-the-edit-button/ (the button has since changed look to a Pencil icon)

This is not to disparage you, just to note that it may not have such a great effect.

GitHub's editor is useful for simple fixes, (formatting, markdown, typos,) but Codespaces seems extremely useful in building a reproducible dev environment for more complex packages / projects, including build tooling!

Yes but OP was talking about simple fixes in the first place

Even simple fixes often need to be run/tested before a PR can be put up with confidence.

a one minute change isn't ran or tested, almost by definition.

If you could have a fully-functional dev environment with pre-installed dependencies in 10s and the package takes 48 seconds to build and test, then you could.

I'm aware of several places in my team's codebase where you can change a couple of characters and break the entire company if you didn't test the change.


There's a very big difference between editing a file in a textbox and editing a file in an IDE pre-configured to have all the correct dependencies, extensions, build&test scripts, intellisense, etc.

Of course there is! But if it's literally one line...

The set of single line changes I'd be comfortable making with full IDE support is much larger than the set of one line changes I'd be comfortable making in a text box.

I feel like even with one-line fixes, having the tests run before committing (to see the CI/CD results instead) would give people a lot more confidence in making those changes.

Personally speaking, I'd be worried that I end up making 15 commits to get everything right and the history in that PR would be slightly embarrassing. Having the live linting, intellisense and tests makes pushing a single commit a lot easier.

That was already possible with Travis CI though. Not sure how the situation is now, are they still up and running?

The difference is habbit.

We are not in the habbit of doing this now.

This change may change that habbit and encourage a new one.

Im not saying it will, but its naive to brush literally every suggestion off because you can already do something similar.

At least think it through before making a judgement on a new idea.

Yeah, where this gets really interesting is in the integration with the project's build system, CI, and test environments.

I'm envisioning a project with a full automated build and test suite with an on-demand staging environment for each change (the k8s docs project does this, at least it did the last time I chucked a typo PR over the wall).

With proper integration to the editor you could have an extremely slick dev environment instantly available for any casual passerby. Once implemented, this would greatly simplify maintainers' lives as well!

The edit button is perfect for fixing typos; I don't think I've ever even used it for any other purpose. Tidying-up typos up as you're passing through is a small way in which anyone can help contribute! It's like picking up pieces of trash as you're strolling through a park.

a bit of a noob question. I'd love to be able to tweak code on the spot. Like I'm showing something to my boss and he wants something quickly adjusted, I write a couple lines, commit and then with Github Actions I get back an updated executable immediately

But I feel like things are set up explicitly to not work this way. Maybe I'm doing something wrong but can you trigger a rebuild of a prerelease?

It seems you need to setup a new tag and a new release version to ever get a rebuild. There are explicitly no official Actions for updating releases. A new release for a one line change seems a bit crazy (and you'll get a huge clutter of releases which is confusing for users)

I tried to ask and was told it's maybe possible if you write an action yourself .. yikes https://github.community/t5/GitHub-Actions/What-s-the-canoni...

You can set up your actions to build an executable for each commit on the master branch, it will be available as an artifact in the actions tab. This is useful if you want to test your built code.

Generally speaking, you shouldn't modify existing releases, since somebody may have downloaded them and he will have no way of knowing you have improved them.

I guess you're right. That this is the expected workflow. The way the UI by default dumps Prereleases and Releases together (with very small faint font to distinguish them) in the same tab called "Releases" is an issue so I sorta understand why you feel it'd be confusing. The UI is no good, but this is not an insurmountable problem

It's true you can have a latest artifact.. I will try using that - but I can't email a colleague and tell him/her to download an artifact. There is no "latest build action artifact" page and there is so much extraneous information that if they've never used github you'd need to attach an explanation of where to click.

I didn't feel my use-case was particularly unusual, but I guess it's doesn't fit Github's model.

You still have to fork

Because implementing a shadow fork is sooo hard.

You must be fun at parties

I think you missed the part where i was being positive to new ideas and not just being a pointless debbie downer.

Hopefully the licensing requirements can be made simple as well!

I recently wanted to submit a 3 character change to golang that significantly speeds up strconv.ParseFloat(), but lost interest about 2-3 minutes into reading this: https://golang.org/doc/contribute.html

Technical advancements are always held back by politics. This is one of the main advantages of GPL, there is no CLA to sign.

CLA's are imposed by companies, not licenses. I'm quire sure that companies with OSS projects under GPL licenses would still want external contributors to certify that the code they contribute is theirs to contribute and can legally be licensed as GPL.

Indeed, there is the Developer Certificate of Origin for that:


Sure there is: https://www.gnu.org/licenses/why-assign.html

The owner of a GPL project doesn't own the copyright for contributed code (and therefore can't license it themselves under GPL), unless they receive a copyright assignment.

Why not post the change here so someone else could contribute it? Sounds useful.

That'd be awesome!

    diff --git a/src/strconv/atof.go b/src/strconv/atof.go
    index 28ad094..49cec69 100644
    --- a/src/strconv/atof.go
    +++ b/src/strconv/atof.go
    @@ -410,12 +410,12 @@ out:
     // Exact powers of 10.
    -var float64pow10 = []float64{
    +var float64pow10 = [...]float64{
      1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9,
      1e10, 1e11, 1e12, 1e13, 1e14, 1e15, 1e16, 1e17, 1e18, 1e19,
      1e20, 1e21, 1e22,
    -var float32pow10 = []float32{1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10}
    +var float32pow10 = [...]float32{1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10}
     // If possible to convert decimal representation to 64-bit float f exactly,
     // entirely in floating-point math, do so, avoiding the expense of decimalToFloatBits.

math.Pow10() already uses arrays this way, and I found a ~10% performance while optimizing an alternative float parsing implementation by making the same change.

I just want to say kudos and well done to post the diff here.

Didn't you just poison this change and ensure that it can never be applied? Having posted this anonymously, nobody can sign the Contributor License Agreement and promise truthfully that this is original code that they have the rights to contribute. Including yourself, in the future.

You can not copyright the ... (dot dot dot) nor can you claim copyright to an existing work by adding ... to it. You might be able to pattern it though...

I don't know the specifics of Google's contributor agreement (you need to log in with a Google account just to read it), but in my experience they are much stricter than copyright law. I've heard of organizations that would like to force people to sign contributor agreements just to be allowed to open GitHub issues. Because the issue might contain information that might taint everything. At least in the view of corporate lawyers.

That seems outside of the scope of an in-browser text editor...

Sure - I'm just venting. I found something trivial that makes a small difference, but the contribution process was overly cumbersome.

To the parent poster's point, I feel if I could easily submit even a small subset of the trivial changes I have sitting around in local forks, it'd greatly improve several projects.

Or syncing a local fork before you can edit against master and PR back. I wish syncing a remove/local fork was simpler.

Must be fun for @sytse to watch these GitHub announcements every year, where they consistently release the same thing GitLab rolled out two years prior.

Codespaces -> https://docs.gitlab.com/ee/user/project/web_ide/

Insights -> https://docs.gitlab.com/ee/user/project/insights/

GH Actions -> https://docs.gitlab.com/ee/ci/


Gitlab is a bit of a mess though:

a) Gitlab.com is ridiculously slow. Even the CEO admits they failed to invest in it.

b) You can't disable features you don't need so you end up with a sidebar full of Kubernetes and Security features for a Git project dedicated to documentation.

c) Staggering amount of open issues and merge requests so you feel discouraged from even raising anything since it just gets lost in the weeds.

d) On the main Git project screen there are 15 buttons. Including again ones for "Add Kubernetes cluster" or "Add License" which you can't remove or hide even though it's irrelevant for 99% of Git projects.

e) Feature set and billing are all over the place. It has great project/issue management but in order to get say roadmaps you need to have everyone in your team on the $99/month plan. Even though they aren't developers. So in some cases Gitlab ends up being much more expensive than Jira + Github.

I could keep going. But Gitlab is an example of a company that is moving too fast and needs much better product management. I would take Github's more deliberate approach any day.

Thank you for your feedback!

Regarding performance, we've made some recent improvements (here's one example: https://gitlab.com/gitlab-org/gitlab/-/issues/30507#note_293...), but we know we need to do more. We're actively working to improve our sitespeed (https://gitlab.com/gitlab-com/www-gitlab-com/-/issues/7154), and we have several other improvements in process this quarter.

Regarding disabling features and the Git project screen, our UX research team has heard this feedback from other users. It's fair feedback, and we're looking at how to address it.

I love GitLab's transparency and the decentralized concept; But I can't comprehend how some basic features take as long as they do to get done. It took GitLab _3 YEARS_ to add a "What's new" link to the header: https://gitlab.com/gitlab-org/gitlab/-/issues/16653 ... and it still isn't closed.

Issues fall through the cracks because there's no internal health oversight, take this issue for example: https://gitlab.com/gitlab-org/gitlab/-/issues/21907 It simply ceased to exist because the original staff member left GitLab.

I've also seen community MRs with weeks of work go to waste because GL staff couldn't take proper ownership/responsibility to see them through.

I think having a "all hands" week where all work stops except for going through current GitLab.org issues, fixing labeling/priorities, adding related issues and pinging the correct leads would do WONDERS.

Sadly, if GitHub adds scoped labels and descriptions we'll be making a move over as it's the final piece of the puzzle.

My favorite is when I open an issue and get no response.

Then, after a year, a bot auto-closes the issue due to "inactivity"...

One feature that would help a ton, that would hopefully be low hanging is to refresh the "Issues", "Merge Requests", and "To Do" count indicators in the background.

They're basically useless right now because I constantly have 6+ tabs open and they all have different numbers and I just now I need to do a full page refresh to get the updated number.

I agree that there are loads of open Gitlab issues, but I’ve found that their team are really easy to communicate with, really open to feedback and somehow also respond really quickly on issues. I like that they use Gitlab for so much and that they’re still really open to hearing about a workflow that’s different to theirs and keen to help with that.

As a user I really like that they have their tickets open like that. I’d never contact Github and tell them about some minor feature that would be helpful or give them feedback on a new feature they’ve released because how would you even do that in a way that’s not annoying? And with Gitlab you often get to feed in at the design stage which you’re completely shut out from anywhere else.

I’m not sure if you’ve actually had issues go missing - I know they have loads of repos and I’ve only engaged with a few - but my experience definitely hasn’t been that things get lost in the weeds.

For what it’s worth I agree with all the extra features being too visible. I kinda get it - one day I’ll get round to learning Kubernetes and I’ll probably do something with Gitlab’s integration when I do - but while I don’t use them those features are definitely too visible and add too much clutter.

We host our own GitLab instance and it's been great. Performance is way better than the public GitLab site and it's been dependable. It would be nice to disable some of the features but, overall, everyone at my company is happy.

Ah yes, the "Who can find the open 2y old GitLab issue for our problem" game. There is always one and it always has a couple of "This is an issue for a customer <zendesk link>" comments. At least even very old issues still get responses and seemingly are tracked somehow.

I kind of agree with the "too fast". It seems to me that many features are being created as a PoC to pad out features lists and having something new to market. It will then live on as barely useable and accumulates hundreds/thousands of issues as the devs seem to be spread way too thin over all the PoC, core and new features.

This is great feedback. Going fast is a core part of our strategy, as is focusing on breadth over depth (https://about.gitlab.com/company/strategy/#breadth-over-dept...). Not only does this provide an easier path to collaborate and contribute for the wider community, it allows us to shorten the feedback loop with everyone that uses GitLab so that we can invest our time and effort in the areas that matter most to the wider community.

That said, I completely agree that we need to get better how we iterate and improve the quality and performance of existing features. We've more than doubled the number of Product Managers, Engineers, and UX Designers over the last 12 months to work alongside the wider community to help transition "barely usable" features into lovable features. Please ping me (@gweaver) on any long standing issues that are important to you and i'll do my best to route it to the directly responsible PM.

> But Gitlab is an example of a company that is moving too fast

I've studied GitLab's code history for a while, and they have been moving at a very fast pace for years now. Below is a one year window (from today) into to their gitlab repo.




Some points of interest are:

1) 15k commits are merge commits.

2) The vast majority of the code churn is ruby, which is expected.

3) Based on the bus factor, a lot of files that are iterated on, have less than 10 unique contributors. And there are a handful of files that are iterated on a lot, by a lot of people.

4) A lot of the code changes are 10 lines of churn (lines added, changed, deleted) or less, which indicates incremental improvements/bug fixes/etc., as opposed to adding new functionality.

Something that I'm not doing right now, is mapping the churn, to the number of unique contributors. It would be interesting to see if there is a pattern to their churn vs number of contributors.

GitLab is definitely moving at a very fast pace, and it would be interesting to map this to their issues, but their API is extremely slow, so I've never bothered trying.

Edit: For the scatter charts, the x-axis represents the number of files. And the y-axis is number of contributors (bus factor chart) and churn size (churn chart)

I'm a solo developer and I disagree with everything you have said. Gitlab has been an absolute joy to use. Sure, it has a lot of features, but it's not like you are forced to use stuff you don't need. My workflow is pretty simple, yet I have never felt like I'm using a sledgehammer to kill a fly.

The GitLab license is really tough. We use GitLab internally with about 1000 users, but only 50-100 are developers. The rest are analysts and data scientists who either edit doc files or push their R projects so other people can see them.

25 of those are willing to pay for the advanced features at $100/month, but the entire instance has to be upgraded. It’s frustrating because there’s no way to pay $100/month so 950 people can view a private repo or edit markdown.

If we could enable features for just the devs who need it, we could. The GitLab folks were nice, but the only workaround for this was to have multiple instances that people would connect to depending on their need. That’s confusing for non-devs and also many projects have a few developers but 3x as many people who just edit markdown or view CI status.

I don’t remember gitlab being this cluttered, these new features you mention must be relatively new.

Haven’t used them since they allowed an intern to purge the production database.

Kind of glad I have stuck with github thus far.

Intern? I don't remember that detail being shared.


It wasn't an intern, it was (or rather is now) a senior engineer, and this was 2 years ago now.

GH is clearly not innovating nearly as much as GitLab and hasn’t been for a long time, but since they have so a huge chunk of the market already they can see what works and what doesn’t work for GitLab and cherry pick what they like. Apple operates in a very similar manner - in many areas they lag behind.

I'm not sure this is correct. GH seems to take their time, and get things right. They're product leadership is really top tier compared to the rest of the tools providers who are often quick to release a feature half-baked hoping to iterate. I've rarely seen a GH feature that's not fully polished and "makes sense" on day 1.

They are the Apple of the dev tools space. Less is nearly always more.

Can't really agree on that, looking at Github Actions for example.

It's such a lack luster offering with severe limitations that make it almost unusable for any sort of serious project (no support for private Docker repository, no manual steps, yaml support is abyssmal, ...)

My view is that GitLab is more prone to feature creep. They have a lot of innovative features, but because of the number of features, most of them really only feel 90% or 95% of the way there. GitHub chooses a smaller number of features, but they feel more polished.

I don't think the feature creep is all bad. Sometimes the new features are amazingly useful, if not totally polished. It depends on what you need, and sometimes you need features that only GitLab has.

VS Code online is a substantially more robust offering than the GitLab Web IDE. Not an apples to apples comparison of the actual substance of the offerings here.

This isn't really a useful observation — it's not like any of those were something unique which nobody had thought of before GitLab implemented them, either. It'd be far more useful to compare them knowledgeably and talk about their respective benefits and drawbacks.

This is a "Good Thing" for everyone involved.

Look at Android vs iOS. Each release sees popular features "borrowed" from the competition. Back and forth Google takes something Apple did well, then Apple turns around and does the same.

Tight competition between two platforms gives us, the consumers/users, the best. It drives innovation, it drives down prices (I mean, lets be honest, GitLab had the entire "free" thing down a LONG time ago), and the features that we do have get refined to be even better.

BTW I've seen the same thing on Zoho side, they have so many products and they all work seamlessly across one another, yet they have a very little market share.

The bigger question is, how far will "but we did it first!" carry a business? After all, Github wins that battle on the core feature set.

How do the implementations compare?

In this case, they don't. Codespaces offers a lot more functionality than the GitLab web IDE.

Competition is good for customers. I don't care who had the feature first.

I'm sure he'll have his usual blogpost moaning about how Gitlab already has it by end of day.

Why wait until the end of the day on the west coast? :) We just posted https://about.gitlab.com/blog/2020/05/06/git-challenge/ where we encourage you to compare:

1. GitHub Insights with GitLab Insights, Contribution Analytics, Issues Analytics, Productivity Analytics, Value Stream Analytics, DevOps Score, Code Review Analytics, and CI/CD Analytics.

2. GitHub security features with GitLab Container Scanning, Dependency List, Dependency Scanning, Dynamic Application Security Testing (DAST), Security Dashboard, Static Application Security Testing (SAST), and Secrets Detection.

3. GitHub Codespaces with the GitLab Web IDE, CI/CD Environments, Review apps, and Live Preview.

I'd definitely encourage everyone to git GL a try - our teams switched over from GH + Jira about a year ago, and haven't looked back. The integrated CI and project management features are a game changer.

I have to agree. I have been a big champion of GH but the more I use GL the more I keep asking myself why I don't just do all my stuff in GL.

Git it a try, pun intended? :-D

'Twas a simple typo, but I'll happily retcon it into a pun!

GitLab is also faster at cloning than GitHub. Whenever I have to clone a bunch of website repos to update templates for my website generator the GitLab repos finish cloning first even though I start them last.

To be fair, nothing was announced today by GH that wasn't in GL for several years.

Perhaps the quality of VS Code trumps GL WebIDE ... But I am not the sort of developer to ditch my desktop editors / IDEs for something running in a browser (electron or otherwise).

I think the most important thing that most people maybe forgetting is, GitHub maybe announcing these features, but these features were the results of acquiring companies that were solely focused on these features for years.

So if you take this into consideration, GitHub's feature has not only been in works for a while, but they have been refined to a point that GitLab will have a hard time catching up to.

There is no way GitLab will be able to compete on the IDE front-end for a while since GitHub's solution is essentially VSCode which they own and is iterated on at an incredible rate. And the one thing Microsoft hasn't made open source, that makes remote work incredibility powerful, is what makes Codespace incredibility difficult for GitLab to compete with.

Their security scan feature is the result of acquiring a leader in the field with expertise that GitLab will have a hard time matching/hiring for. And GitHub's Insights feature is the result of multiple acquisitions with years of previous experience.

These announcements maybe new, but the solutions that GitHub has released are years ahead of GitLab's existing solution.

I think that you are wrong on VS Code Remote not being open source. Here is the relevant repository: https://github.com/microsoft/vscode-remote-release. Corresponding official documentation (https://code.visualstudio.com/docs/remote/remote-overview) states that Visual Studio Codespaces is essentially a managed service of Visual Studio Code Remote Development. BTW, there is also an interesting alternative, the `code-server` project (https://github.com/cdr/code-server).

P.S. FYI: The TLS certificate on https://gitsense.com has expired.

That repo doesn’t have any code in it, it’s used purely for issue tracking and syncing with the VS extension repo, I believe.

My bad. Apparently, you're correct. It seems that relevant code is a part of VS Code codebase. Perhaps, this is it (though, I very well might be wrong on this, too): https://github.com/microsoft/vscode/tree/master/src/vs/workb....

I vaguely remember a post a while back (maybe a year ago) where they said they can't make a part of their remote technology open-source. Maybe things have changed, but I was quite sure it was something they were keeping close to them.

Also thanks for pointing out the certificate issue. I was actually leaving it that way on purpose, but I guess it can reflect poorly on my product, so I should just update the landing page with something non-descriptive.

Perhaps, you're right (or maybe not :-). Frankly, all this stuff, while interesting and eventually useful, is a bit low on my current priority list ... Re: certificate - You're welcome.

Yeah, well good luck with that one.

With this feature, MS just ventured in a space where no-one can compare yet.

If this ever gets popular, that's check mate right here.

Was this reply to the wrong comment? Cause your first line is a total non sequitur to what you're replying to. And this is definitely a space people both a) can compare (compete?) and b) MS is playing catchup to (albeit with a great advantage).

I understand that many companies will be seduced by the offering and what could come next:

* No more source code on developers machine so better for security.

* No more development environment to setup and all the devs sharing the exact same settings: simplified onboarding of devs.

* No need for costly developers machines.

* No more infra to setup to host the source code repository, the CI/CD workflows (even if many companies already moved that to the cloud).

But as a developer I am worried what could also come next:

* dashboards for managers with all sort of stats on developers: code quality with arbitrary rules, productivity (number of lines of codes), number of stars from other developers, etc.

* being locked-in with the Microsoft toolchain all along from source code edition to deployment in Azure. For instance currently I chose to do my NodeJs backend development on vim with coc-vim and found it to be much lighter than Vscode (I have a very old developers machine)

They announced developer productivity analytics in the same keynote as they announced codespaces. It's not just coming, it's here!

Funny enough, after introducing the analytics stuff, they started the next section by showing that the more code you write the more security vulnerabilities you have.

Which is it, Github? Do I want to stay on top of your SLOC leaderboards so my manager doesn't fire me? Or does writing the most lines mean I introduced the most vulnerabilities so my manager should fire me? The answer depends on which product github is trying to sell you at that very moment.

Do I get points for deleting lines of code?

You should get double points!

Do you have link to the developer productivity analytics? Or is it stuck in video form at the moment? Very curious

Here is the HN discussion from the frontpage: https://news.ycombinator.com/item?id=23092966

> dashboards for managers with all sort of stats on developers: code quality with arbitrary rules, productivity (number of lines of codes), number of stars from other developers, etc.

How does GitHub Codespaces allow for any of this? All of this was already possible with plain git, no?

My thoughts:

* Some teams do this already with git data...but if it's free as part of a team's development platform then maybe the less sophisticated managers who don't know how to interpret the data will misuse it?

* If the editor is heavily instrumented then even more granular "productivity" metrics could be extracted, like time spent with the tab active, etc. which aren't available with a vanilla install of other editors. ¯\_(ツ)_/¯

Sounds like a form of (job?) security-through-obscurity, no? The data was always there, but not all managers were savvy enough to process it and weaponize it.

In the end, obscurity is just not a durable defense. Better to earn trust with good managers, and avoid companies that let bad managers flourish. If you don't have the ability to quit a bad manager or bad working environment, then no amount of tooling choices by GitHub/Microsoft was going to save you anyways.

>weaponize it

Oh boy. Had chills from my time as a Jr. Engineer at Accenture. Still remember the day a manager looked at me like I offended his entire family for saying that lines written didn't mean productivity achieved.

It can take years for some to learn that the real metric is how many lines were deleted.

You give managers too much credit.

How does something like this work when you have configurations not in source control? Access keys, passwords, IPs for database connectivity.

It would live in your own personal instance, just like how a lot of company confidential data lives in google docs and gmail today.

You can archive (2) with VS Code by having a development container defined in .devcontainer/devcontainer.json + .devcontainer/Dockerfile + Remote-Containers plugin.

I've been doing that in my company and it's awesome to have a reproducible environment for each project.

> dashboards for managers with all sort of stats on developers: code quality with arbitrary rules, productivity (number of lines of codes)

...down to number of keystrokes. Microsoft has a 25+ years history of spying on users.

> being locked-in with the Microsoft toolchain all along from source code edition to deployment in Azure

That's the real endgame. Lock-in has been Microsoft go-to strategy since the beginning.

This is pretty epic. VS Code has proven itself to be one of the best (if not the best) and feature-complete editor out there. It's basically an IDE of a ton of languages at this point, and it's completely free. Integrating it with GH is a no-brainer move from Microsoft's standpoint, to increase market share even further with more seamless integration.

If they're able to do setup for Python, Go, Ruby, and JavaScript projects, I suspect that'll be > 50% of all professional work (both FOSS and private) done on GH.

While VS Code is definitely good in general, and first choice for languages like JavaScript, I find it really hard to compare it to JetBrains PyCharm and GoLand (understanding GoLand has no free version).

The debugging and refactoring experiences for Go and Python in VSCode feel slow, awkward to set up and configure and just generally tacked-on.

I have gotten the PyCharm professional and GoLand licensed through my employer but I will 100% be paying for them out of my own pocket if I ever lose that.

Yup, VSCode isn't comparable to IntelliJ or the rest at all for anything other than Typescript. IntelliJ offers a bunch of life saving refactorings. Want to extract a new method? Ctrl+Alt+M. The exact same shortcut works in every language, with almost the same semantics as much as possible. Intellij can do context aware autocompletion (Ctrl+Shift+Space).

I use vscode for lightweight file editing. But for any long term project, it doesn't offer anything over Jetbrains products.

I pay for the full JetBrains subscription. While I still use vscode for typescript and rust, I use JetBrains for anything else. It's one of those no brainer purchases that pays for itself within a month.

Programmers create enormous value. If you can get even small single digit percentage improvements by leveraging better tooling, it pays for itself almost right away.

I estimate conservatively I produce $500,000 in value a year. If I can eke out a 1% improvement in productivity that's worth $5000 a year.

I think it's a big blind spot that developers don't invest enough in.

Many vendors do think like this when they start their offer with 'how much is your time worth'? Indeed, your tool might save me 1 hour but it's not necessarily worth the price.

On complex codebases though I mostly need the IDE just to navigate code. Anything released in the past decade knows how to index some classes, jump around and do 'find usage'.

I agree that tooling most definitely helps, starting with your office, your chair, your hardware and your software config. You could also get 1% out of sleeping more I think.

Chair, desk, distraction free environment, fast computer, fast internet, multiple screens, consistently good sleep, diet, and exercise. Stable emotional environment (relationships). You could easily get better than 1% from each of those. I'm ruthless about optimizing these.

Software tools, keyboard shortcuts, libraries, frameworks and saas software are also good targets to optimize that often don't get enough attention.

(Serious question) I'm curious to hear more about "ruthlessly optimizing" your emotional environment and relationships. That is not something heard everyday...

Or if you'd prefer not to personally summarize, are there any books, articles, videos, etc, you can recommend that expand on this overall life philosophy?

It's not the right word for that, but in general just be extremely picky about serious qualities in your partner. Ditch bad relationships and maybes quickly, because there is a high opportunity cost. Value peace in a relationship, and stay away from people who like to fight.

> I estimate conservatively I produce $500,000 in value a year

Do you actually earn this amount per year? Or, is this just a projection of what you think the value of code you write is?

You can never earn the amount of value you produce. Your employer can't survive if they hire you for that amount.

Not sustainably, but they could if they underpay others. Or run a deficit.

I think he was talking about the value he generates, so possibly something like revenue/profit per employee kind of thing. For example, FB and Google make more than $1M revenue per employee. You can go more granular and look at the impact of your team or yourself as well.

But can be his comp as well, these are not unheard[1] of numbers.

[1] https://levels.fyi

Yes, I'm talking about value. My comp is less than that figure. There are some developers with total comp like that though.

I've found I love JetBrains IDEs when I'm operating as a one-language power-user. But the last few years I find myself needing to use 2-3 languages in the same day (several more if you include markup "languages"). VSCode has become my editor of choice for local dev and vim for remote dev/debug.

I use IntelliJ with the various language plugins for this reason. It allows me to use the same setup for all my languages. Granted, I do get the full license through my employer, but I think it's worth it even if my company didn't pay for it.

This is exactly my current situation. In one day I can end up writing in up to 4 languages (Go, Python, C, C++) and having one editor, with one set of settings for editing, and all the customization available in a single settings.json file, is just too good to give up for language-specific IDE's, especially ones that require yearly subscriptions.

I just use intellij for the same purpose. Today alone, I made changes in Kotlin, Typescript, Java, JS, Groovy, and Python. All in a single project, in Intellij. I do use and appreciate vscode, sometimes, but the experience is nowhere near as good as Intellij for me.

That said, being able to change/edit PRs in github with vscode will be awesome. Will negate the need to check out out a branch locally for a ton of cases.

Have you tried the Remote Development VS Code extensions from Microsoft? I find them quite neat.

Even for C# VSCode is way less useful than VisualStudio, which also has a free version (though doesn't run on Linux)

Honestly, unless I'm working on a Windows machine, I find JetBrains Rider to be the best option for C# specifically. This is especially true if you like having your tests easily accessible from your IDE.

That said, VSCode is still very nice for front-end pretty much universally, and it's also great for things like back-end Javascript/Typescript. I think Codespaces is really going to excel when it comes to things like NodeJS -> AWS Lambda. Make code changes, run "sls test", done.

> This is especially true if you like having your tests easily accessible from your IDE.

I haven't used Rider, but I'm curious how it could be easier than the Visual Studio test explorer? It seems pretty convenient, and doesn't lack any obvious features I can think of.

Minor point: the Rider test explorer tells you why your tests aren't appearing. Visual Studio's test explorer will just say "You have no tests, try rebuilding your solution" even if you already rebuilt it.

I assume in part this is because the Rider test explorer is based on the one in Resharper.

Some stuff it does better is things like running 64 bit and 32 bit tests at the same time, supporting both nUnit 2 & 3 without having to disable/enable the plugin. Mind you I spent some time with code in release mode trying to work why I couldn't debug a test last week.

To be fair I hate what Resharper does for Visual Studio performance and a lot of the really useful refactoring in box these days so I no longer use it.

I prefer to stick with Visual Studio but I know lots of folks who are happy with Rider. It's good for all of us when there is competition in paid for developer tools.

I feel with .NET Core migrations the wind is shifting, at least for web development where VSCode is starting to be preferable to Visual Studio. VSCode isn't likely to get the WinForms or XAML visual designers any time soon, so Desktop apps will likely stay a Visual Studio niche, but even then I've found myself increasingly working in VSCode up until the point I need to do a UI tweak even with Desktop apps.

It's no contest, JetBrains Rider provides the best C# development experience on any platform, with smarts well beyond what VS is capable of.

While a commercial product, I've got 9 JetBrains products installed under the same toolbox subscription where it's by far the best value software suite I've ever paid for. Thanks to their Toolbox App you can update all products with a single click, just the productivity saved from not having to endure VS's multi-gigabyte updates & OS restarts pays for itself.

> Even for C#

Weird way to put it, C# is expected to work better in VisualStudio, it's the standard/officially supported .NET IDE. For everything else I prefer VS Code personally.

JetBrains has Rider on Linux for C# and while not free, if you're already paying for other JetBrains IDE's, as many devs do, it's included. I just think there's still not much reason to do C# on Linux over say Kotlin if you want a huge ecosystem.

I'd consider it if they come out with a cross-platform GUI toolkit for .NET Core/

While Visual Studio is powerful, I have ran into wierd behaviors within the IDE that just make it a chore to use. Personally, I've preferred C# on VSCode over Visual Studio so far.

I've been using VS Code's Go and Python plugins for development for the last 2 years and I've never had any major issues. In fact, my experience continues to get better after every release.

With the Go language server kicking off, Go development in VS Code is literally a breeze. Every single thing I'd want to do (format code, imports, run tests, run a particular test, debug a test, breakpoints, on and on) has been integrated into the VS Code plugin and it works pretty much seamlessly. I haven't used Goland since it's early release in 2016 or so, so I might be missing out on something, but it doesn't feel like it.

I've never had a good experience with PyCharm. Again might be because I've using earlier releases and things have gotten better. But I'm at a point where I'm too comfortable with VS Code and have customized it to a point where I don't think it's worth it for me to switch to another editor, especially one that is tied to a particular language.

I made the transition from PyCharm to VSCode a couple of days ago and... it's not been smooth. Virtualenv doesn't automatically activate when I first open the workspace, pylint doesn't work yet VSCode thinks it's working and debugging just doesn't seem to work full stop.

I need to get back to it and try to fix it because I do like VSCode as a whole.

One thing that helps me managing Python environments in VS Code: I start VSCode from the command line with my virtual environment activated ("code -n .").

With this, I rarely have issues with VSCode picking up my environment. Hope that is of some use to you.

I will try it, thanks.

Pro-tip for VSCode: if you have a .venv directory in the root of your project, VSCode will try to activate it when you open the project. A few other tools have adopted that convention, too, and now at my job so have we. Rather than sticking virtualenvs in some odd location, the venv for ~/projects/mystuff is ~/projects/mystuff/.venv, and now it almost always Just Works.

Mine is in the root directory but it's called venv, without the preceeding dot. I'll dig around the settings to see if I can change what it looks for.

Strangely it works if I close the initial termnial it spawns and open a new one.

The issue with PyCharm is that it’s actually quite hard to extend due to lack of proper documentation for their plugins.

I love it but I sometimes think of something that contains less features while is easier to develop for would be a better choice.

I think VSCode sets a really good level across all languages (even more esoteric ones like Idris) however it can't compete with IDEs essentially dedicated to a tech stack like PyCharm or Visual Studio.

Just an anecdote from a sample size of one - I had a recent situation where I had to nagivate and edit a code base that was a mix of Go, C++, and JS. And I had a paid IntelliJ Ultimate license. Long story short, VSCode did the best/fastest go-to-defintion like navigation given the constraints. IntelliJ separating Clion to a separate install is rather unfortunate. I can edit Java and Go together, but not C++

I think it's because CLion is a bit of a separate codebase, integrating with GDB and all that, rather than just a language plugin that's also sold as a separate IDE as is the case for other languages.

This is also why the Rust plugin only has proper debugging capabilities in CLion.

I used to use rubymine a few years ago and maybe I just wasn't using it right but I can do all the stuff in rubymine in vs code. The only thing I'm missing is being able to look through the code for gems.

> if not the best

Them's fightin' words. But on a more serious note, I think 50% is a massive overestimation. We haven't seen pricing. Unless MS is willing to take a huge loss on this there's no way it will be free. We all know the resources required to run a modern web app in development mode. I can certainly see this being useful if you happen to be away from your dev machine, or if you just want to contribute to something without setting up the whole environment, but not as a full-time solution. Especially considering github is known to have outages. You'll really be SOL then.

There is preview pricing available for VS Code Spaces, which is almost the same thing. https://azure.microsoft.com/en-us/pricing/details/visual-stu...

The estimated cost for a full time developer to use the system is $23.30/month or roughly $280 a year. That's quite competitive- my "portable" workstation costs north of $2k and has a 3 year life span, so the "yearly" cost is $666. The benefits of being able to get use cheaper dev terminals in the general case could pay for itself, even before you get to the benefits of having a common environment.

Also, you can self host for free. 50% is an over estimate (I've never seen 50% of developers agree to ANYTHING), but broad adoption looks highly likely.

I use my workstation for lots more than typing into vscode. If that’s all I do, then I could just use a chromebook.

I think my $2k laptop uses its local storage for evaluating software, working with large data in memory, lots of other stuff.

So that’s not going away. This would be a cost on top of my hardware $666/year.

I'll admit I've got a particularly killer use case. My daily project has an enterprise system for its backend. Its obnoxiously complex software, so devs generally only run part of it locally and part of it off of shared infrastructure in Azure. Because we are distributed team, cross-country network latency really hurts application performance under "local" dev conditions.

Running in a codespace, the entire codebase runs in Azure. The application performs almost as fast while debugging as it does in production deployment. It's awesome for where we've been able to convert to it.

MS may indeed be willing to take a "huge loss" on this. It may dwarf the added revenue from other sources.

So like I don't know your particular context but I imagine MS's moves would seem surprising for developers, say, at startups. Whereas if you work at an IT adjoint to a mechanical contractor it might make more sense. What's at stake is that MS might be ramping up to some bigger announcement, "GitHub Cloud" or so, where you pay some fee for the cloud hosting and the sales pitch is, "imagine that you can fix a bug from a bug report in a non-crappy editor like VS Code, do a quick code review and push a button which will run your tests, canary deploy, then version it and push it live -- we take care of all that infra, you just pay for the Azure hosting." If you give half of that for free to everybody, you nominally "lose" but you increase the adoption rate of a separate revenue machine, which makes up for it.

A similar strategy was used by Microsoft to make their initial profits with Windows. There it was "you don't have to worry about the hardware specs -- we have already worked all of those out and all of them work with Windows." The key point in both is to say, "what are people seeking out, at the same time as they are seeking out my product?" and then to either give people a lot of freedom or a really easy option. You would rather take one pill that is carefully engineered to have the right omega-3 balance to stave off depression AND is a good probiotic AND has all of your daily vitamins, than to have to bother with a separate fish oil pill and probiotic and multivitamin. Focusing on product "complements" is often a really good strategy.

I don't think anyone would suggest this a full time replacement for your dev environment and IDE

Let's just hope they don't only maintain this online editor and deprecate the desktop install.

That sounds quite unlikely.

Doesn't to me (they might not deprecate it but they will simply stop putting resources into it at which point it turns into maintenance mode). As another posted pointed out the Facebook links, companies would love remote IDE tooling hosted on their premise so it can be an easy way to remove overhead on onboarding and tighten security more.

For monorepos, it might work pretty well.

> would love remote IDE tooling hosted on their premise so

sounds exactly like what Gitpod self-hosted is for: https://www.gitpod.io/blog/gitpod-self-hosted-0.4.0/

Yeah but does it come with github or azure enterprise package?


This sounds like good feedback. What do you mean by "github or azure enterprise package"?

I think Gitpod Self-Hosted was successfully installed on GCP, AWS, and Azure, and we're working on documenting the process.

It also works with self-managed GitHub and GitLab installations (with Bitbucket coming soon).

Considering the desktop install is an Electron app I wouldn't think the two would diverge that much.

If they don't release the code for the cloud implementation, it could diverge.

Free is a huge minus in my book. If I'm not the customer, then I'm the product. I'll happily keep paying for my JetBrains all-product license: https://www.jetbrains.com/all/

> If I'm not the customer, then I'm the product.

This is not necessarily always the case, for example the free thing might be a loss leader, exist to boost secondary or tertiary effects or otherwise exist for non-profit motivated reasons.

Sure, it's a generalization, not an absolute. But for me there's not a big difference between "I'm the end product" and "I'm an intermediate product used to increase sales of the end product". Microsoft isn't a charity; they're an oligopoly pushing hard to keep their stock price up.

I think your characterization of being an "intermediate product" is also dubious since you aren't being sold in any reasonable sense ala the way you are with ad tech. And whilst MS are obviously in the business of making money that doesn't mean it's the only thing they'll do.

If you'd like to argue that MS is giving this away just to be nice, instead of as a calculated move toward sustaining or increasing revenue, I'd be interested to see that. But for now let's assume they're doing what their shareholders expect: making money.

We can't know whether I'm an intermediate product without knowing their goals, which they're unlikely to be transparent about. But lets suppose one of their goals is usage and market share statistics that they use as proof to convince paying customers. In that case, my usage is very much an intermediate product.

Or let's imagine that one of their goals is restored market dominance in developer tools. To that end, they would like their competitors to receive less money, leading to their collapse. If they paid somebody else to give away developer tools for that purpose, I'd obviously be the product. That they're paying for that internally obscures it, but fundamentally doesn't change the exploitative nature of the relationship.

If all this is really what you believe rather than just being argumentative then how can you use any product. Usage and market share statistics are just as useful to JetBrains in that regard and you pay them for the privilege of being an “intermediate product”.

Jetbrains shows no signs of wanting to be a monopoly player in development tools. I've been a customer a long time, and I think they've done a great job of balancing making money with doing solid work and serving their customers. Microsoft, on the other hand, has a long history of willful domination and exploitation, and they've specifically done that with free products to kneecap competitors.

Ahh, so we get to it. You just don’t like MS. I think that’s a valid reason not to use their products.

No, I like competitive marketplaces, as they're one of the core engines of capitalism. I deeply dislike willful monopolies and oligopolies in general, because their goal is to break that engine in ways that harm consumers and often society. Microsoft themselves I can take or leave now that they've been mostly defanged.

I also really like having good developer tools. Many of them come out of community-driven open source. But some of them cost money. And for those, I very much want there to be a competitive marketplace, so there are strong incentives for all players to keep improving.

> If I'm not the customer, then I'm the product.

I'm not sure what you mean by this, care to expand? Aren't you also the product for JetBrains, since you're one of the customers that's keeping them afloat?

Sure. The foundation of commerce is sustained relationships where value is mutually exchanged. I give you a few bucks, you give me a cheeseburger. If fix somebody's problem with a computer, they give me cash. Product for payment; value for value.

When some commercial effort departs from that, it's good to be suspicious. The bills are getting paid somehow. E.g., look at network television from 1960-2000 or so. The viewers were not customers. The viewers were the product being sold to people who wanted to manipulate them. Advertisers were the customers, so the programs were generally about getting maximum influenceable wallet-connected eyeballs; quality was at best secondary.

In contrast, look at what's happened to TV since then. We're in a golden age. [1] Why? Many reasons, but a key one is that people are now paying for TV directly. To Netflix and Hulu and HBO and all the other paid streaming efforts, you're the customer, not the product being sold to somebody else. Now they have a strong incentive to make things that you don't just tolerate but love.

Microsoft in particular has a history of monopolistic behavior that has been harmful to the industry (e.g., [2], [3]). Are these developer tools awesome just because Microsoft is run by nice, generous people? I'd say instead they correctly recognize that if they want to regain some of their lost market power, they're going to have to compete with the existing tools, many of which are quite good. Why are they good? I'd say it's partly because smart people have built a strong business [4] making those tools. If Microsoft manages to eliminate the competition, they'll lose the incentive to build good stuff, just like they have in the past.

[1] https://en.wikipedia.org/wiki/Golden_Age_of_Television_(2000...

[2] https://eev.ee/blog/2020/02/01/old-css-new-css/

[3] http://www.ecis.eu/documents/Finalversion_Consumerchoicepape...

[4] https://news.ycombinator.com/item?id=21796793

> Many reasons, but a key one is that people are now paying for TV directly

This is an insignificant reason. People paid for cable TV and were soon shown ads. Even people who pay to see movies are shown ads before the movie and during movies via product placement. Hulu makes great shows but sells ads more highly targeted than any broadcast channels.

The biggest reason for the current golden age is that streaming services don't have to try to create the most broadly appealing content to fill the most valuable timeslots and can instead cater to each viewer's tastes directly. Breaking Bad was a great show before it got on Netflix, but it wasn't a hit until wide on-demand streaming availability helped it find its audience. Tiger King is the kind of hot garbage that would normally get an afternoon time slot on a second tier cable channel, but making it available on demand turned it into a megahit.

The explosion in channels was definitely another factor. But being paid matters. HBO punched above its weight for years, for example. WHy? Because they had to.

I agree with you that oligopolies like big movie-theater chains will try to exploit that power by doing anti-consumer things like showing ads. But that's just more proof we should be suspicious of free products that may increase oligopoly power.

Thanks for the detailed response.

I can definitely see where you're coming from. In fact, for VS Code, I believe they collect quite a bit of metrics on your usage of the product through telemetry, so it's definitely not "free" in the sense of "nothing given" - essentially, your programming and usage habits of the program are being sent to MS every second.

Re: the case of VS Code eliminating competition and MS losing the inventive to build good stuff, I think the core editor engine being open source gives me hope that this won't happen like in the olden days of MS. But of course, still a risk.

Facebook (and Cambridge Analytica) is another example.

> If Microsoft manages to eliminate the competition, they'll lose the incentive to build good stuff, just like they have in the past.

Typical strategy. You provide a good and cheap product until you reach a relative majority of a market and customer lock-in, then quietly slow down on the free improvements and start extracting money from the users.

No the JetBrains IDE is the product. This phrase generally refers to things like Facebook or Google. They offer tons of free services in order to gather data about you and sell it to advertisers.

Thanks. VS Code is actually no saint in this regard. MS collects metrics through VS Code's "telemetry" option (I think toggle-able to off, not sure) and this data has no doubt been used to improve VS Code and help MS build better product offerings and hence more rake in more revenue.

> If I'm not the customer, then I'm the product.

This isn't always true, so it's best to look at it on a case by case basis. One wouldn't suggest that Typescript coders are a product of MS.

So far, they don't seem to be treating vscode users like the product. I think they're are building out great free tooling to entice users to use their other paid services like Azure.

Github has made their pricing model and the motivations for it pretty clear. They subsidize their hosted service with enterprise self-hosted pricing to justify expanding their feature set. This has been true for a long time, well before the MS acquisition. The things that have changed are:

- Developments that were in place were released.

- The subsidization model made pricing structure changes possible.

None of this has to be a big conspiracy or a big change from Microsoft's acquisition. It's possible they just have a business model that's less nefarious than you're able or willing to understand.

That's an adequate slam at the end there, but I'm more interested in your claim about "to justify expanding their feature set." How about you give me the elevator pitch on that. Because the obvious alternative explanation is that Github was doing what a lot of companies have done: use a loss-leader pricing scheme to establish market dominance, allowing them to charge more to customers for whom that dominance is a feature.

Well, you must then love Oracle. I mean, what you are saying is just silly. Of course the producers of FOSS want something in return, but sometimes it's not nefarious as you might imagine it to be.

It could be a strategical investment to create an ecosystem out of technology that you know the best and can influence its direction, to then sell customizations and develop services on top of it. Like MS is doing here. Or RedHat. Or Google with Kubernetes. Or Canonical with Ubuntu. And so on.

It could be a lot of things. Would you like to argue that it is some specific thing that couldn't possibly lead to the sort of oligopoly or monopoly position that Microsoft has eagerly sought and maintained in the past? If so, which exact thing?

I'm arguing that the premise of non-free software and services being somehow better because there must be a catch is just ludicrous. So no, I don't want to argue "it is some specific thing".

I don't think MS is very charitable company and dislike many things about them, but sometimes a deal is just mutually beneficial. Better at times than with paid products.

And if Microsoft has something terrible planned, the community would just fork the project and go in a different direction.

Moreover I want to add that people, and companies, change. Just like a nation isn't the same it was 100 years ago, Microsoft too might have toned down its malicious practises. Just as a thought to you. We don't anymore blame Germans for being Nazis either.

I'm not saying paid IDEs are necessarily better. But I am saying that in practice, commercial IDE vendors have been making superior products to the free-as-in-speech ones, and have been for 20 years at least.

You blow a lot of smoke here, with "sometimes" and "might". Sure, Microsoft could have been taken over by angels straight from heaven, and is now only intent on doing charitable works until the money runs out. Many things are possible. But possible doesn't mean true. If you'd like to argue something's true, by all means do it.

I think the only substance is "the community would just fork". One, there's no particular proof that a bunch of volunteers can make something like that. Two, that's an enormous effort. Look at how much work and time it took between MS using a free IE to kill Netscape and the emergence of Firefox. And that only worked because Mozilla found a revenue model that let it afford the large number of full-time engineers needed to produce a browser.

So if you're serious about your argument, why don't you explain exactly how "the community" will afford to do that fork. And why your imagined destruction of paid developer tool vendors like JetBrains and handing MS a monopoly in the market is ok as long as you're getting something free right now.

I doubt codespaces will be free- this is how VS Code starts seeing increased monetization. It'll be interesting to see if the self hosted codespace options are no-cost as well.

Even if you're the customer, 99.9% of the time, you're also the product.

Not in the sense which that is meant. The foundation of commerce is long-term, positive-sum relationships between people. The people at my corner grocery are looking out for the needs of me and my neighbors; we look out for them in return. That relationship is fundamentally different than the one between cow and meatpacker.

Yes, you are the product in the sense that this is meant. The people at my grocery store track my purchases using my loyalty card, use that data to influence their ads, and sell that data to others.

Jetbrains might not do this, but if they can make money from this, they would be just as incentivized to do this as GitHub.

Good thing my grocery store doesn't have a loyalty program or track purchases then. Maybe you should use a different one?

I agree the lets-exploit-the-customers behavior you're talking about is currently common, but it's far from universal. And regardless, in a value-for-money relationship one has power that just isn't there when one is purely being sold.

Your grocery store probably charges slotting fees for shelf space, making you the product.

You have the same power when not paying because there are other providers whose free services you could use instead.

My grocery store definitely does not charge slotting fees. Which is part of why I use them. They're a small, family-run market.

Do you avoid public drinking fountains? (Covid-19 aside)

Huh. Do you really not see any difference between a publicly funded accommodation and attempts to dominate a market by a company with a long history of abusing a monopoly?

I do see some differences. I was attempting to use those differences to illustrate one of the ways that this maxim about consumers and products is overly broad.

It's interesting that this is the moment at which you chose to do that.

Exactly. All generalizations are broad. But nobody goes around objecting to generalizations every time they see one; they'd get nothing else done. So the pattern in which they do that is always informative.

I aspire to contribute intrigue to the world.

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