GitLab Web IDE(about.gitlab.com) |
GitLab Web IDE(about.gitlab.com) |
... Why?
Also, centralization is against the Unix philosophy.
Is there any way to change the font size in the Web IDE? Is there a dark mode?
Thank you for this!
They should drop everything and focus the most important feature: speed.
It's the fastest single transistor in existence. You could say... it focuses on speed, to the exclusion of all other features!
I set up a simple proof of concept [1]. My goal is to complete the "Your First RPM Package" tutorial [2] using Web IDE from a iPad 6th Gen. [3] is the resulting CI Pipeline. I recognize this is nowhere near a "real" project (and hadn't ever planned to really share or use it). Maybe someone else has a more complete example?
Edit: Since you mentioned Java development, it might be worth reading through the answers to the Stack Overflow question "How to use GitLab CI to build a Java Maven project?" [4].
[1]: https://gitlab.com/mchogan/iPad-experiment/tree/mchogan-mast...
[2]: https://rpm-packaging-guide.github.io/#hello-world "Your First RPM Package"
[3]: https://gitlab.com/mchogan/iPad-experiment/pipelines/2277793...
[4]: https://stackoverflow.com/q/33430487/3877908 "How to use GitLab CI to build a Java Maven project?"
* No terminal
* No development environment to speak of, either (e.g. no libraries or binaries installed)
The post identifies that this was developed as a way to include multiple file edits in one commit. GitHub, by contrast, applies a commit per file edit, so if you want to change three files, you would open each file separately and each edit/save would become a separate commit.
I do think that this nudges GitLab as a platform a little closer to being like Cloud9 though!
I don't necessarily consider this a useless feature. I've edited files live on Github (usually things that are safe to edit, like READMEs) and I wouldn't mind the editor being a bit more feature-rich.
I could write my code and tests in the browser editor, and just have a dashboard with everything I need to know.
Then when I'm at home I can use my editor and still hack the old fashioned way.
I wish Microsoft has bought gitlab instead of github. They could have this new editor tie in with azure or something cool like that. Like websharper, but for everybody else.
I doubt something like what gitlab is building will come to github. Maybe a quick edit editor, but nothing more.
Gitlab is going to integrate this to gitlab's CICD infra.
If github gets one, it'll be a shitty typo fixer, that's it.
In any case, I see a lot of value for the IDE to be integrated into your git host, so I think this is a great step for GitLab.
Cloud9's acquisition really left a big hole in the market. AFAIK there's still nothing out there that gives you a decent code editor (edit multiple files, have multiple tabs open, etc) that also gives you access to a Linux shell and ability to expose ports like Cloud9 did.
Personally I'm most optimistic for https://repl.it. They already have a core userbase in high school classrooms and have been adding a ton of support for serverside applications to make it more appealing outside of the classroom.
I'm not affiliated with them or Amazon in any way other than being a Cloud9/AWS customer. Just wanted to make sure everyone realized that AWS Cloud9 still works.
--edit: to clarify, you can still use Cloud9 through AWS... the old c9.io doesn't allow new signups and is in the process of shutting down, but the service is still available through Amazon.
For example, I myself wouldn't touch any service from Amazon with a ten foot pole. I acknowledge their role in starting the cloud revolution, but every business move of that company down to the design of the last web button is to set itself up as a monopoly in the fields it enters. They are the Apple of everything.
They haven't updated any of the ubuntu images since 14.04, and you cannot update them yourself.
They really want you to move to Amazon's pay as you go scheme instead of one flat rate. (I think).
Web IDEs in general are a great concept though, mostly because developers generally love having their editor customized the way they like it, and from there, having it in the cloud accessible from any computer is a huge win. That being said, it's hard to compete against the plugin model that Sublime/Atom/VSCode have.
My laptop is a tool I use every single day and have with me almost all of the time. I do not need internet connectivity to remain productive, which is a huge boon to me when travelling. An IDE that requires constant, reliable connectivity to work is therefore of little use to me.
Kind of like how you can already edit files and make a pull request in the GitHub web interface, but you can also run the program and check it works!
I've tried Cloud9, and found that the plugin issue was a killer. If a Web-based IDE can't use an existing ecosystem of add-ons then the developers have to implement linters, debuggers etc. for every language, as well as things like build tool support and version control integration. For this reason, Cloud9 doesn't actually have the functionality of an IDE or a programmer text editor, and I could not imagine asking professional developers to adopt it as their primary environment: it is closer to Notepad++ than VS Code.
Xray, GitHub's experimental possible Atom successor, seems to be designed to support this usecase, per https://github.com/atom/xray#web-compatibility . Seems like they want to be able to use the same code to power both a desktop and web IDE, and would support collaborative real-time editing in both.
OT: Its Chinese. It makes me wonder what other tools and technologies exist there and of which 'Western' developers never even have heard of.
Considering Microsoft has VS Code, I think during the following years Atom will be phased out (or, in enterprise terms, "maintained by the community") in favor of that editor and they will focus on improving the Git aspect of the application, perhaps integrating the existing GitHub application into VS Code as a rich extension.
- why can't we schedule manual jobs to be started when dependencies are finished?
- on merge request, Discussions tab, the way one chooses between a comment and discussion is simply awful (talking about a button with a dropdown) - I have yet to meet a developer who immediately understood the difference between the two and could use them as intended
- why can't I limit some type of jobs to the branch AND a tag? (for instance deploy_production should only happen on master and with a version tag)
- ...
It looks like they are neglecting development in the core of the product, which is just sad.People have already created issues for the improvements you've listed. Upvote them to show your support or create new ones if these don't satisfy your needs:
- CI manual jobs ignore dependencies: https://gitlab.com/gitlab-org/gitlab-ce/issues/28396
- Start a discussion from a non-discussion comment: https://gitlab.com/gitlab-org/gitlab-ce/issues/30299
Re: your last point, I've pinged someone from our CI area to see if we already have an issue for that.
[0]: https://github.com/c9/core/blob/master/LICENSE-COMMERCIAL-US...
also, azure notebooks are currently free.
And since Microsoft now own Github this will most likely be VSCode in the browser just like azure already uses. A lot of people will be happy with that
I don't see why anyone needs an online IDE. Much less one interfaced with Gitlab. What next, invent a new cpu too?
This. Please.
I'm playing with a similar concept for GitHub: https://twitter.com/pomber/status/1003416752146075648
Besides having a vision ourselves of that, we also want to encourage and motivate others to contribute.
They have a ton of open positions listed, but none are for Site Reliability Engineer.
Frequent slow requests and 5xx errors keep me from giving GitLab a real try.
This would have been a nice path to bring less technical folks into gitlab, say for writing articles and other copy. But I can already imagine the non-stop complaints about losing work.
I do agree this is something that needs to be solved, but cannot categorically be solved elegantly, so GitLab needs to just get on with just doing what will work.
I'm truly sorry if the above drivel is either impossible or insane; as an embedded guy this is most definitely way outside my wheelhouse. I should get back to repairing my oscilloscope.
WebGL is more or less just a set of standardized (JavaScript) bindings to OpenGL ES... which is actually ran as DirectX I'm sure in some places...
Everything required to draw high-performance hardware accelerated text already exists in most browsers before even getting to these bindings, which would furthermore require accessing a redundant glyph renderer.
That is to say, WebGL wouldn't provide you much gain. Though, I'm sure some very amusing post-processing could then be done to your code.
Perhaps the future of programming is in the web with lens flare.
(1) The zoom animation takes too long, I want to see the screenshot
(2) After zooming, it's still difficult to read to my 33-year-old eyes. I want a fullscreen image.
(3) After finishing squinting at the screenshot, I scroll down to read more text only to have that text MOVE while I'm reading it as the screenshots animate back to their original positions.
That said, I find all JS-based "zooming" of images bad. The simplest behaviour is the best here - just make the thumbnail a link to raw image directly. If you absolutely have to have that JS-based gallery, then for goodness' sake, don't do it with CSS background shenanigans - use the <img> tag, so that "right click + view image" works.
(To be fair to Gitlab, in this article "view image" works, and can be used to see images in full resolution.)
Alas, I'm pretty sure that half of this breakage are designers cargo-culting trends instead of focusing on usability; the other half is user-hostile designs purposefully making it harder for regular users to get to the URL of the actual image.
In fact a Koding acquisition by GitLab seemed like a no brainer.
FWIW ~2012-2013 there was Cloud9, Koding and Nitrous. Now that Nitrous is defunct and Cloud9 was acquired I'm not sure what fills the void.
Put differently is there a void to fill? Is there an actual demand for web IDE's? Or is this just bling?
> And to be honest, it was what we were hoping that Koding would have provided for us, and we have an integration with them, but it hasn’t worked out, really, the way that we had hoped. And so, we’re looking at alternatives, and we think we can probably do this ourselves.
So I don't think we'll be creating a programming language soon. I'm following crystal https://crystal-lang.org/ with interest. And one of our team members is making one in a private capacity https://gitlab.com/yorickpeterse/inko
You would need some sort of code navigation, debug and run capabilities to call it an IDE :) Hope to see more soon?
Redhat's OpenShift.io Eclipse Che integration would be a good example of a cloud IDE where you can could code,build and debug off a web-browser backed by a container-based workspace running on Kubernetes.
Unix philosophy is great for system builders, but system users want the car, not the tools and parts.
This kind of ‘user centric’ justification is rubbish and we all know it.
What this is, pure and simpe, is ‘throw it at a wall and see what sticks’.
Maybe people will like it and they’ll run with it, or maybe people will hate it and it’ll get binned.
Fair enough; but its got zippo to do with user quality of life or what users actually want; its just easier to justify value by adding features than fixing existing ones.
‘Speculative development’
Bitbucket does this all the time as well; its super annoying.
If you want to improve user quality of life, you know what you need to do?
Ask users what they want. ...and listen.
I use codepen everyday for compiling different frontend web components. Its not an IDE, but it has IDE-like features. This way I could build reusable code snippets. Then I port those into my actual project. I wish something like this existed for backend languages, repl.it was the closest thing I found. Although stackblitz is nice too.
What I look for in an web IDE is a simple system that lets me debug small singular components. If they integrated something like pythontutor.com or loupe.com, visual animations for debugging, that would be really nice. A webapp has more potential for these applications than an electron-based app.
Next I always end up with build errors. I'm too lazy to use docker / run VMs so having someone do this for me is a bonus.
Also, online IDE's are used in classroom settings often. I used cloud9 a few times for this reason and its very helpful, minus the fact the git-integration tools the last time I use it weren't there.
To put it in short, I look for webtools that would let me build micro environments to test a small suite of code. Ideally with nice debugging tools. And an easy way to reference those code snippets later (imagine evernote's tagging structure applied to a web IDE).
Web IDE's won't compile as fast as a native desktop application however.
Ironically, once we introduced staging into the Web IDE, usability went down significantly (this is referenced in the blog post), as the core users were people that weren't comfortable with local editing. So we're addressing that next.
That setup doesn't work for everything, but it's great for some use cases.
I've never run into the slightest issue between chromebook html5 browser and Apache Guacamole, which I suppose does not prove no problem could exist for anyone else. Its SSH is really a very nice terminal emulator, and of course there's rdesktop protocol and all that also.
It helps to have an enormous vmware cluster holding the numerous servers such that I'm connecting to a machine that is too beastly powerful to ever consider in a laptop form factor... so my dev box has slightly higher latency but the CPU and memory are immense such that its not all that different than native, some things a little faster, some a little slower.
The biggest problem I have is I can buy a chromebook with a decent screen for roughly the price of a decent windows laptop, but I can't buy a decent keyboard on a chromebook for any price. Model-M keyboard to USB to plug into the chromebook, I've never tried that? On the stereotypical hyper limited chromebook keyboard, emacs is ... difficult but possible, and android studio is OK, or at least as OK as java programming can be. Android studio emulator had some weirdness with it not being amused at attempting virtual machine hardware acceleration on a vmware image of a windows box; probably depends exactly which version of studio you install and when you installed it...
Native chromebook VPN support is "ok" or at least somewhat usable. I don't have the infrastructure bare out on the internet for obvious reasons.
An extremely beefy virtual dev box with 10 hour battery that weighs nothing using a state park as my office is pretty nice, when weather permits that kind of work. The only problem I've found is you can use a lot of mobile data very quickly this way, especially during a nice summer month. Also I can charge my tether phone off the chromebook but then the battery life seems much shorter; AC power is surprisingly not hard to find and picnic shelters are almost always empty during the week (full on weekends). Parks are also empty and quiet during the week. When it rains I'm stuck in the office, what a bummer. Do not be like me and hike out five miles to an observation tower right before a rainstorm begins, I was stuck under the tower for an entire day until it stopped raining.
I'm shocked Google hasn't tripled their efforts to make the chromebook a code editor masterpiece. You'd think they'd have spearheaded it themselves.
Now I'm keeping my eyes on Microsoft bringing arm64 hardware in the game. 20+hr battery life + wifi means I could just work wherever I want during the day and then go home at night and charge. Adventure coding, EVERY DAY! That'd be so awesome.
Ironically, GitLab pages ended up not working very well for me. It was nigh impossible to add a cert to a custom domain. I ended rewriting the CI pipeline to push to Firebase.
In the past, people would request ftp/ssh. Setting up git and auto-deploy with custom scripts didn't scale well. Our clients seem very content with WebIDE. They can do quick edits and barely know they are using git.
The idea is that there's a lot of different users using git and I want to make it accessible for everyone.
I was able to use Web IDE to edit a couple files including a `.gitlab-ci.yml` and kick off a continuous integration job from my iPad 6th Gen. I hit a snag with the Merge Request, but the commit worked okay. For now it would be a little cumbersome to rely on as a primary development workflow, but it's fun as a proof of concept.
Editing multiple files is a pain though, you'd need one per commit, so this seems to solve that for me.
Git has a super high learning curve for simple edits...
See for more information https://gitlab.com/gitlab-org/gitlab-ce/issues/47307 and https://gitlab.com/gitlab-org/gitlab-ce/issues/46122 for example in how we are improving this starting with 11.1
Git, like God, is good :) But even, over time, God has evolved and gotten more accessible.
The Web IDE thing is something more sophisticated.
This will make it easier for non-techies to edit product requirements, without deep knowledge of git.
According to an Xoogler acquaintance, he used a web IDE for all his development; I'm not sure how widespread this is in Google, but the answer to your question could be "lots".
(Any Googlers want to chime in with estimates on % of devs using web IDEs?)
It helps that there's a single source repo to work from, a remote filesystem for all source code whether working remotely or local that syncs immediately, and a single build system.
For me, I do all work from my laptop in the web IDE and save harder or larger things for when I'm at my desk. It's pretty great that I can start a change in one, then switch to the other seamlessly e.g. write the bulk in an IDE, then make changes in response to comments via the web IDE.
Tangentially, Ace[0] appears to be the only editor outside Vim proper that has managed to implement a half decent Vim mode. It's the only such editor I've come across where visual block editing doesn't end in fits of rage.
[0]: https://ace.c9.io/
On a slightly similar vibe... if you're gonna take a picture of your laptop for the banner image on your web page, at least try cleaning the screen first. The dirty spots and greasy finger smudge in the top image make the whole page feel grimy, lol.
The first ticket is a bit different. Starting depending jobs automatically would be great, but I would be satisfied if I could just click a button "Start this job when dependencies finish".
But anyway, those are all quite old tickets and I know from talking with other developers that I am not the only one having a sore point. And I don't see much improvement in the last year or so.
Don't get me wrong - I still love the product and would like to see it get even better.
For my usage, AWS Cloud9 has turned out far cheaper since the EC2 instance shuts down when I'm not using it. I can actually keep it within the free tier, which is a long way from $20/mo I was paying before.
I would think the lowest grade machine is the equivalent of $5/Mo.
In cloud9 I like to have a node machine, a python machine, a rails machine and one to experiment on the front end, one for Data science. Basically I want to muck about on a clean machine.
Developers want their skills to be portable, in order to maximize the market for their labor. Platform vendors want you to stick with their offerings in order to maximize the value of the platform.
Even so, vendors can choose how high to dial up the pain they inflict on developers who dare to wander. Trying to develop websites that worked across multiple browsers a decade ago was incredibly painful because of Microsoft dragging its feet on standards compliance for IE. It was so bad that many developers from that era will bear a grudge towards Microsoft for the rest of their lives.
I always laugh bitterly when I hear from a vendor about how much they care about developers. If you really cared about developers you wouldn't make our lives so damn difficult. A huge chunk of my life has been lost to switching costs.
Probably the best remedy is to use developer-governed FOSS platforms whenever possible. The perverse incentives towards lockin don't go away entirely, but they are much less.
Heroku is a platform as a service. They provide an alternative to EC2 autoscaling. Also available is postgre, Kafka, redis, MongoDB, MySQL, and a few other things I rudely assumed aren't important enough to mention as a service.
Vultr and linode also offer block storage in addition to traditional VPSs.
Ovh has something called object storage.
Auth0 is willing to be your "user authentication as a service" which also includes something like AWS lambda.
Spotinst will help you get cheap "spot instances" for AWS/GCP/Azure. They also have an AWS lambda competitor and an object storage (I think this one is literally a JSON object storage for your FaaS, not actual files). Not much of a primary service provider.
I consider AWS, GCP, and Azure to be megacorporate monopolies and would prefer to support an underdog. But I'm not aware of any 4rth competitor that comes close to what those 3 actually are. The ones I mentioned probably average at 10% and maybe DO or heroku peaks at 40%.
I would love to hear more about cloud providers who are becoming more than just VPSs to take on AWS.
People should stop digging themselves deeper into Apple's and Microsoft's ecosystems that are getting more and more locked down by the year.
If I don't want to keep using Sublime Text, I just do Windows key + R something else.
Moving away from time-sharing platforms is a complete different story.
Why would anyone choose the former in that situation? I thought the whole argument for chromebooks was that they were going to be cheaper than regular laptops. If you need a decent keyboard, buy a ThinkPad. You're not limited to windows, you can run any flavour of Linux and quite a few of them make a decent hackintosh
Also I didn't mention it but its kinda implied that "standard windows laptop" has too little memory to actually work well, a two hour battery, an old fashioned slow spinning disk, and lots of crudware pre-installed and hard to remove, whereas chromebook implies "it just works" seconds out of the box, a ten hour battery and SSD means no moving parts. Also the windows box is inherently insecure.
If all either will ever do is rdesktop / ssh into clustered machines, and I'll never do any local processing other than maybe play games on the windows laptop, its no contest that the chromebook experience is better.
Have you tried remapping the search key to something else?
> Android studio emulator had some weirdness with it not being amused at attempting virtual machine hardware acceleration on a vmware image of a windows box; probably depends exactly which version of studio you install and when you installed it...
Did you expose the CPU virtualization extensions to the outer VM? VMWare has an option per-VM, but it's off by default.
Which could very well be a determining feature in where people host or which Git provider they use.
That may be true in theory. In practice "essentially" is an awfully long way from "absolutely", with offline support in many apps being either choppy or non-existent. Even the venerable Google Docs is something of a ####show when used offline, to the point where I gave up and went back to Office 365.
I didn’t want this before I had kids, though. But now that I do, I greatly value being able to stop work suddenly, even in the middle of a line of code, and then resume what I was doing sometime in the future, somewhere else and on a different device.
So: different people want different things, and the things people want change over time, too.
You might not want a cloud IDE, but based on the many projects and companies in this space, and the many millions of dollars being spent on it, I’m quite sure I am not alone in wanting to be able to code in the cloud.
Years ago, it was equally implausible to do your word-processing and spreadsheets in the cloud. Now it’s routine.
I’m not arguing theres a place for a web ide... sure. That’s a thing.
...but as part of gitlab? really?
...and lets be explicit here; part of gitlab instead of a stand alone product?
What if you want an IDE that uses a different source control?
Whats the benefit to me of having it as part of gitlab?
At work we use GitHub, so to do a code review I have to check out the working branch or PR that I am reviewing, and review it in my local IDE/editor software. I have to do that because the web UI that shows the PR diff generally isn't sufficient to really review the code. I want to quickly jump to related files to follow the code path, keep the subset of files I'm referring to open in new tabs, get a project-level view of how the pieces fit together, and maybe step through some of the code in the debugger.
Now, the first two are possible just using a web UI but it's very unlike a normal code editing experience. Using the GitLab IDE interface makes it easier to do the first three of those things. It still cannot actually run/debug a program, but I presume that their goal is to someday enable that kind of thing, at least for some kinds of projects.
Today, all major git repo hosting services have rudimentary web-based single-file text editors — seems to me that adding IDE-like multi-file project-level editors is a pretty straightforward and logical extension of that.
So yeah, as a GitLab user, I want this. As a GitHub user, I want them to copy this idea and implement something similar. And if I were a BitBucket user...
As for myself, I don't think I could ever get my company to approve (well, setup) a Web IDE, but if it's part of GitLab...
Currently your choices are emacs/vim over SSH or sync from your local machine (where the code intelligence / debugging integration probably doesn't work as desired).
A web IDE allows an arbitrarily powerful cloud instance to do the heavy lifting of build/test/code intelligence while the developer still gets a full-featured GUI IDE. Especially since VS Code and Atom are Electron apps, it's a natural step to use them to edit remote files. Better than VNC, anyway.
VNC isn't the right way to go in these cases. If a company is asking its developers to do remote work over VNC, and they aren't a three-person company struggling with financial and administrative resources, what they need is an IT manager and/or a build system engineer, not a web IDE. We already have plenty of IDEs that can't hold a candle to Visual Studio, the umpteenth one BUT ON THE WEB is pretty much the last thing we need.
Everything old is new again, just with pretty colours.
Docs: https://chromium.googlesource.com/chromiumos/docs/+/master/c...
https://gitlab.com/gitlab-org/gitlab-ee/issues/5981
Once this is completed/implemented, our entire company will be migrating our old school document system to GitLab, using static pages, merge request approvals and this Web IDE.
If push comes to shove, I'll have to fork and do it myself ;)
Edit: relevant repl slug is relevant.
Edit: lol re slug. Sometimes I think the title gen aglo is prescient
Agreed that it's a higher barrier of entry compared to how simple and slick the c9.io interface was.
I've heard this enough times to know that it's widely agreed upon, but I've never understood it personally.
I think the main selling point is that you run the IDE on an EC2 which runs the same OS as your production environment (even Lambda) which allows you to directly compile server code in the IDE and it just works on your server.
It's a bit of a nightmare, as a support engineer, to get access requests for AWS services you've never heard of before. "Need access to AWS services: Cloud9, Memento, Athena, and Pandora Nexus." Each having a completely unique set of granular permissions to fumble over means most users get full permissions to the requested service until the auditors complain.
Semi-related:
I've been wanting to give my customers the ability to write/deploy their own webhook handlers, because that's a big roadblock for those that don't have any web/server experience.
Been thinking it'd be cool to embed a repl for that (with a "starter" handler per-language), to handle editing/deployment, but I haven't dug too much into that to see if it'd be possible.
Been meaning to reach out to your team but I keep putting it off. Like I said, love your platform and been fun watching you grow. :)
Yeah you can embed. It's under the share dialog. More in the docs.