Hi, what is the advantage of using Builder over VSCode when working with gtk?
There are many advantages in my opinion. But the biggest advantage: containerized development model. You can work directly with flatpaks without installing needed libraries. You have less configuration overhead to make auto-completion work in C. It has good templates and snippets for GNOME related development.
You get an profiler and DBus analyzer and hopefully in the future a UI design tool (https://gitlab.gnome.org/chergert/drafting) but this is ofc still many work.
Hi and thank you for your answer.
I definitely am excited about:
That would be pretty awesome and if not for anything else I’d use builder for that functionality only. Let’s hope it will happen.
As for the other “items” you’ve listed, especially:
Would that be specific to actually working on gtk but not with gtk, that is, during development of gtk library it would be for sure useful, but as a user of gtk library who doesn’t plan to develop it just use it, would I still have reason for using this particular functionality?
Hey! Depends on what exactly you want to develop. If you only want to use Gtk in a cross-platform manner (without platform integration) you will probably not have a use for a DBus analyzer. If you want to provide endpoints for other applications or you want to bind your application to other endpoints it is often helpful to use it.
If you don’t plan to use flatpak as your development environment i think then vs code is also fine. Builder tries to target GNOME application development and helps in making all GNOME apps easily compilable (and beyond that it has nice integration for many additional things if a contributor pops up and helps with developing these kind of things. For example we got an easy access to deploy mobile application thanks to james Finishing GNOME Builder's Mobile Device Support)
Hi there! Thanks for the clarifications.
So basically to me the main reason for using Builder is when you are actually actively working on gtk development, which is fine.
I just wonder if the resources that go into, let’s be honest, massive project that the Builder is, would be better used to for a fraction of a time and effort develop actual extension for VSCode to actually have all the functionality required to work on gtk?
Massive plus is that the entire work on IDE and maintenance is shifted on people working on VSCode (huuuge save) and the little resources that gtk has as I hear all the time could concentrate on just the features users need now, by simply working on extension(s)?
What do you think?
Another point in favor of using VSCode vs Builder is that VSCode is really popular and most likely much wider audience is already using it, which in turn means that users don’t have to learn yet another IDE, simply install required extension and they are ready to go, so the learning curve of new IDE is reduced to zero.
There are valid reason to develop an IDE. First and foremost it uses technology which will be improved during the development. For example is a central component of Builder the textview. The undo/redo functionality is now upstreamed into GtkSourceView which made this library better. And beside of that many many more implementations/libraries got expanded which is a good thing. At the end of the day it should be possible to write an IDE with the GNOME platform.
Besides of that ofc it is important to let Newcomers directly dive in. In the past we had many problems in compiling specific projects on different platforms as they all had a different meaning of installing needed libraries. All of this is gone thanks to Builder. Today you clone, hit run and you get a running application. Then you can start tinkering with that. Doing this with installing extensions and making sure that you have the needed libraries is more hard for a newcomer.
Besides of that there are the implications VS Code has as its not entirely free software.
Builder is not meant to working on gtk. Its meant to work on GNOME software, applications as well as libraries, in the supported languages with the supported buildsystems and containers ootb.
Is Builder multiplatform, that is does it work on Windows as well as on Linux?
AFAIK it is entirely free. Could you point out to source of such information?
That could be easier achieved by providing appropriate extension to VSCode. Chances are that the newcomer is already familiar with VSCode and all he would have to do is to simply install said extension. Much easier, much simpler, much more user friendly from the point of view that all the user has to do is to install extension, not learn completely new IDE.
Your making some fairly big assumptions here, unfortunately…
- Working on Gtk
- Using Gtk
- Working on vscode
…are three rather different disciplines and, even if they can, people may not want to move between them
Plus, GTK is not a company, with resources allocated from management. You don’t get to tell to volunteers what they should be working on—or with.
I am aware of that. Was rather thinking about some community (informal) agreement that people would/should take up issues that are of highest priorities (if there is such list).
From where I stand, developing separate IDE just to work on very specific let’s call it framework, I have gnome in mind here is unnecessary, because perfectly good and usable (VSCode) already exists so what’s the reason of actually repeating that whole (huge) work? And just to have a separate IDE to work on one specific “framework” (gnome). Seems like completely unnecessary, rather pointless (from the community benefit point of view), as it will never become a mainstream (the Builder IDE). Plus, on top of that it puts the burden on new users that they have to learn yet another IDE…
I mean, I do understand the idea, similarly to Qt where they have they own IDE just to work with Qt. But hey, they have resources, money behind it, they can afford it. Can gnome community afford such a distribution of resources that huge chunk of it goes to duplicate already perfectly usable IDE (VSCode)?
I didn’t say that people should work on VSCode. I suggested that it would be easier and more beneficial to the entire community if instead of separate IDE which main purpose is to work on gtk/gnome, create an extension to already very, very popular VSCode. The amount of work is a fraction when compared to building IDE, newcomers that are not familiar with gtk/gnome would get very easy start, just install extension and start using the framework. Instead, with Builder they need to decide if they wanna spend their time to learn yet another IDE with very limited scope (just gtk/gnome).
It does not matter one bit: people that don’t want to use VSCode and want to work on an IDE targeted at GNOME already exist, and they already work on it. They are not going to magically go work on something else, and they are not going to drop what they are doing because you showed up and told them: “hey, there’s VSCode!”.
Plus, VSCode is a generic IDE/text editor combination; it does not target GNOME or any other platform, so there’s still a niche for a GNOME-oriented IDE.
That’s fine, however wasteful and unproductive from the community point of view it is.
I genuinely hope that they will manage to make Builder great IDE. Although looking at the timescale and the speed they are progressing with features…
But I understand, free community, everyone does what they want. Sure.
But tbh I would really like Builder to become mainstream as VSCode build in nodejs is rather sluggish. Lets hope they will manage.
As a language server and extension maintainer for VSCode, here’s my POV:
I don’t think you will ever manage to do that. Installing an extension in vscode, is one thing. Actually using it another, most need additional setup.
And the usecase that’s been outlined here mention containerization. Which you could do with devcontainers, but as those are docker based, I’m not sure if you’ll be able to get them to show a GUI.
I’m not aware of other container solutions in vscode, that wouldn’t need to be written from scratch.
So it probably won’t be seamless at anypoint in vscode. Builder is seamless, as far as I’ve tested it with normal applications. (buliding gnome-shell is a unfair benchmark)
Others actually did what you think it is impossible (I’m aware that this is Visual Studio, not VSCode but if they can do it in VS VSCode can do it too):
Here is one for VSCode:
So it is possible. All one needs to do is simply want to make it.
But I’ve met that attitude (like yours) many a time, impossible, too much work, not worth it etc etc.
And as for extensions, most of them DO NOT require any configuration after installing (at least the one I use, mostly concerned with developing with c/c++), most of them are properly configured and are ready to use after being installed.
So again, if somebody wants to do something they can, if not, they won’t and they will find tens of arguments to not do it…
So will the extension install C/C++ for you?
It’s not about not being able to code an extension, you can certainly throw something barely working together. Then it’s about missing APIs for your usecase, if you want it improved. You can bother microsoft for those and hope they add them. So you might get lucky at some point in time.
Still, I thought we’re talking about something decent, which you could have today. I haven’t seen a VSCode extension that can automatically checkout into a devcontainer, install dependencies and run it. It might be possible, but I suspect, that the needed APIs just don’t exist. Would be nice to prove me wrong.
The point is that it is possible to do it, as others proved it.
I still don’t get your point. Nobody has to “learn an IDE” as it should work ootb. At the end of the day its a Text Editor with enhancements. And nobody said its impossible to do. You can spin up a Broadway server and show that in a custom view in VS Code. If you want to do that its okay nobody forces you to use Builder.
To counter your argument about configuration: its not even possible to just use IntelliSense - because there is no support for meson in VS Code (as is) which most GNOME projects rely upon. So VS Code can’t resolve dependencies for your C/C++ project (if any). Sure you can write a hello world without configuration, but i don’t think this is what you want to do.