www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - [RFC] IDE starter kit

reply rjframe <dlang ryanjframe.com> writes:
As a followup to [0], I want to take a look at packaging DlangIDE with a 
DMD compiler and tools, so we have an out-of-the box IDE for people giving 
D a try. This would be independent of the rest of the system, so moving on 
(either to Visual Studio, ldc, gdc, or whatever the programmer's preferred 
IDE/tooling might be) would require re-installing the compiler.

Most of this post will be Windows-centric, but if this is popular/useful/
successful I'd also manage macOS and Linux kits.


Basically, in the two years or so I've been here, newcomers have 
consistently had IDE problems. visual-d is perfect if you've got Visual 
Studio (especially with recent improvements), but otherwise you have to 
spend a bunch of time getting something set up just to try a language 
you're not yet sure about.

Some sort of learner's or starter's IDE makes sense to me.

My hypothetical programmer follows the path:

1) Discovers website. Runs some examples.
2) Plays with the online compiler in the tour.
3) Wants to download a compiler to work with. Wants an IDE, but does not
   have Visual Studio installed (or maybe doesn't want to install an
   extension yet).
4) Downloads the starter pack and starts learning.
5) Falls in love and takes the time to set up D with his/her preferred
   toolset.


This somewhat mimics my own entry into D; we didn't have runnable 
examples, but my IDE is Vim, so it did work out of the box (I think I'm 
still just using the C syntax stuff). If I had to spend an hour and a half 
just to get things ready, I don't know that I'd have stayed -- it wouldn't 
have been a good sign for future productivity.

PROS:
- A simple, pre-configured IDE that doesn't require a major time
  investment to set up and learn.
- An IDE written in D helps showcase what D can do.
- DlangUI works with Dub out of the box, making it easy to get started
  adding dependencies.

CONS:
- Working outside the IDE requires installing D again, from the official
  installer. If this pack isn't immediately abandoned, multiple D versions
  are in use that could cause headaches or confusion if the programmer
  doesn't pay attention.
- DlangUI isn't as polished or stable as Visual Studio.
- It's yet one more decision someone has to make just to get started.
- Tooling to automate the testing of DlangUI's compatibility with the
  integrated tools needs to be developed; we don't want to provide
  buggy/unstable tooling to newcomers.
- There are some bugs that I'll need to fix in DlangUI first (mostly
  stability I think). We don't want to provide buggy/unstable tooling to
  newcomers.


Do you have any thoughts, ideas, foresee any problems, have a better way 
to do this? I especially don't want to do something that is actively 
harmful - if the self-contained package makes things confusing to someone 
trying to work with globally-installed tools too, that could potentially 
be worse than what we have now.

I'm not asking for specific problems that may crop up (the need for VSC++ 
compiler tools, etc.) unless they have non-obvious solutions. I'm looking 
for a higher-level "is this a good idea?" discussion.

Thank you for your time, and your thoughts
--Ryan


[0]: https://forum.dlang.org/post/p4sba9$1bga$1 digitalmars.com
Feb 01 2018
next sibling parent reply Jacob Carlborg <doob me.com> writes:
On 2018-02-01 13:21, rjframe wrote:

 CONS:
 - Working outside the IDE requires installing D again, from the official
    installer. If this pack isn't immediately abandoned, multiple D versions
    are in use that could cause headaches or confusion if the programmer
    doesn't pay attention.
With Xcode the compiler is included. It also possible to install the command line tools using Xcode to get access to the compiler on the command line. -- /Jacob Carlborg
Feb 01 2018
parent reply rjframe <dlang ryanjframe.com> writes:
On Thu, 01 Feb 2018 22:38:51 +0100, Jacob Carlborg wrote:

 On 2018-02-01 13:21, rjframe wrote:
 
 CONS:
 - Working outside the IDE requires installing D again, from the
 official
    installer. If this pack isn't immediately abandoned, multiple D
    versions are in use that could cause headaches or confusion if the
    programmer doesn't pay attention.
With Xcode the compiler is included. It also possible to install the command line tools using Xcode to get access to the compiler on the command line.
Yeah, packaging for macOS and Linux is likely to be incredibly easy (the install.sh script means a global install doesn't get in the way of anything). The problem with a global installation on Windows would be conflicts with the official installer -- unless that installer just packages DlangIDE, which then comes with assumptions of official support. Scratch that -- embedding the official installer and silently running it solves all these problems -- basically this whole idea is solved by an installer for DlangIDE that includes the DMD installer in case it's needed.
Feb 01 2018
parent Jacob Carlborg <doob me.com> writes:
On 2018-02-01 23:42, rjframe wrote:

 basically this whole idea is solved by an installer for
 DlangIDE that includes the DMD installer in case it's needed.
Exactly. -- /Jacob Carlborg
Feb 02 2018
prev sibling next sibling parent reply Seb <seb wilzba.ch> writes:
On Thursday, 1 February 2018 at 12:21:24 UTC, rjframe wrote:
 As a followup to [0], I want to take a look at packaging 
 DlangIDE with a DMD compiler and tools, so we have an 
 out-of-the box IDE for people giving D a try. This would be 
 independent of the rest of the system, so moving on (either to 
 Visual Studio, ldc, gdc, or whatever the programmer's preferred 
 IDE/tooling might be) would require re-installing the compiler.

 [...]
I wouldn't worry about the compiler being duplicated as (1) it's pretty small (~30 MB with docs and all) and (2) I have seen so many NodeJS projects doing simple things with multiple gigabytes of dependencies. And if that really turns out to be bothering people which I highly doubt, you can worry about this then. In my experience, people using Windows are all about convenience / laziness and don't care about the underlying details. Also you might want to monitor the installer repo: https://github.com/dlang/installer/pulls Rainer is currently working on a light DMD installer which bundles LLD instead of the DigitalMars linker or requiring VS.
Feb 01 2018
parent rjframe <dlang ryanjframe.com> writes:
On Fri, 02 Feb 2018 01:23:46 +0000, Seb wrote:

 I wouldn't worry about the compiler being duplicated as (1) it's pretty
 small (~30 MB with docs and all) and (2) I have seen so many NodeJS
 projects doing simple things with multiple gigabytes of dependencies.
 And if that really turns out to be bothering people which I highly
 doubt, you can worry about this then.
I was thinking of potential path problems; especially if one version of DMD is updated but another isn't. I should have been more clear about my concern. It shouldn't be an issue, but if it were, it would be annoying.
 In my experience, people using Windows are all about convenience /
 laziness and don't care about the underlying details.
This seems to be a common theme. Honestly, I'm beginning to wonder how many Windows people leave before learning the language (or just stay off the NG) because of these kinds of comments. Windows people do often come with different expectations due to different experiences. Microsoft pampers developers, so yes, expectations from newcomers are probably too high, but there's surely a nicer way to let them down. Some people may (not unreasonably) expect a mature language to also have a mature ecosystem; on Linux things work pretty well out of the box, but on Windows it can take some work to get your setup to a useful state. If without an IDE, so you're not likely to feel comfortable without one (the for D would just get in my way).
 Also you might want to monitor the installer repo:
 https://github.com/dlang/installer/pulls

 Rainer is currently working on a light DMD installer which bundles LLD
 instead of the DigitalMars linker or requiring VS.
Niceness! Thanks; that's good to know.
Feb 01 2018
prev sibling next sibling parent reply b4s1L3 b. <b3.temp gmx.com> writes:
On Thursday, 1 February 2018 at 12:21:24 UTC, rjframe wrote:
 As a followup to [0], I want to take a look at packaging 
 DlangIDE with a DMD compiler and tools, so we have an 
 out-of-the box IDE for people giving D a try. This would be 
 independent of the rest of the system, so moving on (either to 
 Visual Studio, ldc, gdc, or whatever the programmer's preferred 
 IDE/tooling might be) would require re-installing the compiler.

 Most of this post will be Windows-centric, but if this is 
 popular/useful/ successful I'd also manage macOS and Linux kits.


 Basically, in the two years or so I've been here, newcomers 
 have consistently had IDE problems. visual-d is perfect if 
 you've got Visual Studio (especially with recent improvements), 
 but otherwise you have to spend a bunch of time getting 
 something set up just to try a language you're not yet sure 
 about.

 Some sort of learner's or starter's IDE makes sense to me.

 My hypothetical programmer follows the path:

 1) Discovers website. Runs some examples.
 2) Plays with the online compiler in the tour.
 3) Wants to download a compiler to work with. Wants an IDE, but 
 does not
    have Visual Studio installed (or maybe doesn't want to 
 install an
    extension yet).
 4) Downloads the starter pack and starts learning.
 5) Falls in love and takes the time to set up D with his/her 
 preferred
    toolset.
Actually nowadays if DMD is already setup, Coedit doesn't require more configuration. Completion, all DCD features, and D-Scanner warnings just work out of the box since the tools are distributed with the IDE. In a way Coedit is already a "starter pack" and since a while. I don't know why but in this kind of topics it's never mentioned, however since version 2 i can find testimonials showing that it works out of the box: https://forum.dlang.org/post/tiyuogdlwwoqpckvkdpn forum.dlang.org
Feb 01 2018
next sibling parent aberba <karabutaworld gmail.com> writes:
On Friday, 2 February 2018 at 06:14:03 UTC, b4s1L3 b. wrote:
 On Thursday, 1 February 2018 at 12:21:24 UTC, rjframe wrote:
 As a followup to [0], I want to take a look at packaging 
 DlangIDE with a DMD compiler and tools, so we have an 
 out-of-the box IDE for people giving D a try. This would be 
 independent of the rest of the system, so moving on (either to 
 Visual Studio, ldc, gdc, or whatever the programmer's 
 preferred IDE/tooling might be) would require re-installing 
 the compiler.

 Most of this post will be Windows-centric, but if this is 
 popular/useful/ successful I'd also manage macOS and Linux 
 kits.


 Basically, in the two years or so I've been here, newcomers 
 have consistently had IDE problems. visual-d is perfect if 
 you've got Visual Studio (especially with recent 
 improvements), but otherwise you have to spend a bunch of time 
 getting something set up just to try a language you're not yet 
 sure about.

 Some sort of learner's or starter's IDE makes sense to me.

 My hypothetical programmer follows the path:

 1) Discovers website. Runs some examples.
 2) Plays with the online compiler in the tour.
 3) Wants to download a compiler to work with. Wants an IDE, 
 but does not
    have Visual Studio installed (or maybe doesn't want to 
 install an
    extension yet).
 4) Downloads the starter pack and starts learning.
 5) Falls in love and takes the time to set up D with his/her 
 preferred
    toolset.
Actually nowadays if DMD is already setup, Coedit doesn't require more configuration. Completion, all DCD features, and D-Scanner warnings just work out of the box since the tools are distributed with the IDE. In a way Coedit is already a "starter pack" and since a while. I don't know why but in this kind of topics it's never mentioned, however since version 2 i can find testimonials showing that it works out of the box: https://forum.dlang.org/post/tiyuogdlwwoqpckvkdpn forum.dlang.org
Coedit is also a great alternative of zero configuration IDE for D beginners. I have a 2018 goal to finish my mini book I started last year for complete beginners to computer programming like I was when I started computer programming from scratch through self-directed learning. I recommend Sublime text editor in the introduction but I think one of these IDEs with a click to compile and run button will help me further simplify the instructions for setting up a development environment. The book is about beginning computer programming using D where I try to make the explanations less technical as possible and not overwhelming reader with too much details. Its gets more technical as student learn more stuff. I still have some typos and corrections to do though... You can find it at https://github.com/aberba/learn-coding
Feb 02 2018
prev sibling parent rjframe <dlang ryanjframe.com> writes:
On Fri, 02 Feb 2018 06:14:03 +0000, b4s1L3 b. wrote:

 Actually nowadays if DMD is already setup, Coedit doesn't require more
 configuration. Completion, all DCD features, and D-Scanner warnings just
 work out of the box since the tools are distributed with the IDE. In a
 way Coedit is already a "starter pack" and since a while.
 
 I don't know why but in this kind of topics it's never mentioned,
 however since version 2 i can find testimonials showing that it works
 out of the box:
 https://forum.dlang.org/post/tiyuogdlwwoqpckvkdpn forum.dlang.org
I know that I tend to forget about it. Unless releases are announced on announce, or I use it, I generally don't pay attention. I just checked the IDE page on the wiki, and we have much more than I'd expected.
Feb 02 2018
prev sibling next sibling parent reply rumbu <rumbu rumbu.ro> writes:
On Thursday, 1 February 2018 at 12:21:24 UTC, rjframe wrote:

 Basically, in the two years or so I've been here, newcomers 
 have consistently had IDE problems. visual-d is perfect if 
 you've got Visual Studio (especially with recent improvements), 
 but otherwise you have to spend a bunch of time getting 
 something set up just to try a language you're not yet sure 
 about.
[snip]
 Thank you for your time, and your thoughts
 --Ryan


 [0]: https://forum.dlang.org/post/p4sba9$1bga$1 digitalmars.com
As a typical very lazy & convenient Windows user, even I don't want to discourage you, let me tell you that every developer from the Windows world will have a copy of Visual Studio installed. New Project -> Console Application -> Hit F5. It just works. Set a breakpoint -> Hit F5. It just works. Every other IDE is not worth the experience. Why in the world a lazy and convenient user should be so masochistic to install debuggers, symbol converters or syntax highlighting and intellisense plugins if he can have all of these plus many more out of the box? I you want my opinion regarding what's bad in the *first* Windows experience, here it is: - poor dub support. Ignoring inherent Windows dub problems, convenient Windows users are too lazy to open the ugly cmd window and run some commands; it will be nice to integrate dub in Visual Studio. Right click, resolve dependencies, you know the rest. - default install directory. In corporate environments, creating folders in the root drive is a no-go. - Intel OMF. My BitDefender installation keeps complaining for every 32 bit executable I make despite of zillion samples I sent to them. If you cannot compile even Hello World, why bother? - there is no official GUI library (remember, we are talking about GUI-centric lazy convenient guys here); - not enough samples in VS. At least an updated GUI app and and a Web server app must be available. Just as a proof of concept.
Feb 02 2018
parent reply aberba <karabutaworld gmail.com> writes:
On Friday, 2 February 2018 at 13:04:19 UTC, rumbu wrote:
 On Thursday, 1 February 2018 at 12:21:24 UTC, rjframe wrote:

 [...]
[snip]
 [...]
As a typical very lazy & convenient Windows user, even I don't want to discourage you, let me tell you that every developer from the Windows world will have a copy of Visual Studio installed. New Project -> Console Application -> Hit F5. It just works. Set a breakpoint -> Hit F5. It just works. [...]
DLangUI has DML which is like QML for QtQuick in Qt. Its possible to create a UI builder for it in Visual Studio or better still an independent tool like Glade for Gtk. Anyways, DLangUI currently stands as the defacto cross-platform GUI library for D. Its keeps getting better in functionality.
 - not enough samples in VS. At least an updated GUI app and and 
 a Web server app must be available. Just as a proof of concept.
Feb 02 2018
parent reply rumbu <rumbu rumbu.ro> writes:
On Friday, 2 February 2018 at 15:13:49 UTC, aberba wrote:

 Anyways,  DLangUI currently stands as the defacto 
 cross-platform GUI library for D. Its keeps getting better in 
 functionality.
In this context, I'm talking about a lazy and convenient Windows user first experience with D. He doesn't know anything about dub, packages or about the excellent work of Vadim. It will be nice for him to type "import std.ui" instead to download dub, install it, launch command prompt, run some mysterious dub command and download 5 dependencies just to display a window. Even the fact that you must use dub to have a GUI project is not understandable for a first time user. The current GUI Sample for D in Visual Studio just throws an exception and the code looks painfully too similar to the one I found in my first Windows programming book from the '90s :)
Feb 02 2018
parent ashit axar <www.ashit.axar gmail.com> writes:
On Friday, 2 February 2018 at 19:41:13 UTC, rumbu wrote:
 In this context, I'm talking about a lazy and convenient 
 Windows user first experience with D. He doesn't know anything 
 about dub, packages or about the excellent work of Vadim. It 
 will be nice for him to type "import std.ui" instead to 
 download dub, install it, launch command prompt, run some 
 mysterious dub command and download 5 dependencies just to 
 display a window. Even the fact that you must use dub to have a 
 GUI project is not understandable for a first time user.

 The current GUI Sample for D in Visual Studio just throws an 
 exception and the code looks painfully too similar to the one I 
 found in my first Windows programming book from the '90s :)
Exaclty ! what about EnticeDesigner and DFL ?! i couldn't run DFL yet (due to deprecated features i couldn't fix as i'm newbie) is there anybody be able to revive that ?
Feb 03 2018
prev sibling next sibling parent reply Ivan Trombley <itrombley dot-borg.org> writes:
Here's how I get started:
- Install DMD.
- Install Visual Studio Code.
- Add Jan Jurzitza's (webfreak) serve-d and Native Debug plugins 
to VSC.
- Get busy.
Feb 02 2018
next sibling parent WebFreak001 <d.forum webfreak.org> writes:
On Friday, 2 February 2018 at 20:42:55 UTC, Ivan Trombley wrote:
 Here's how I get started:
 - Install DMD.
 - Install Visual Studio Code.
 - Add Jan Jurzitza's (webfreak) serve-d and Native Debug 
 plugins to VSC.
 - Get busy.
this entire procedure also works on windows now as you no longer need LDC for serve-d/workspace-d to work :)
Feb 02 2018
prev sibling parent rumbu <rumbu rumbu.ro> writes:
On Friday, 2 February 2018 at 20:42:55 UTC, Ivan Trombley wrote:
 Here's how I get started:
 - Install DMD.
 - Install Visual Studio Code.
 - Add Jan Jurzitza's (webfreak) serve-d and Native Debug 
 plugins to VSC.
C:\D\dmd2\windows\bin\..\..\src\phobos\std\math.d(543,33): Deprecation: integral promotion not done for `-x`, use '-transition=intpromote' switch or `-cast(int)(x)` emsi_containers 0.5.3: building configuration "library"... dsymbol 0.2.8: building configuration "library"... ..\..\..\dub\packages\dsymbol-0.2.8\dsymbol\src\dsymbol\convers on\first.d(189,15): Error: no property 'symbol' for type 'const(Type2)' ..\..\..\dub\packages\dsymbol-0.2.8\dsymbol\src\dsymbol\convers on\first.d(189,42): Error: no property 'symbol' for type 'const(Type2)' ..\..\..\dub\packages\dsymbol-0.2.8\dsymbol\src\dsymbol\convers on\first.d(192,23): Error: no property 'symbol' for type 'const(Type2)' ..\..\..\dub\packages\emsi_containers-0.5.3\emsi_containers\src\containers\unr lledlist.d(504,15): Deprecation: integral promotion not done for `~this.registry`, use '-transition=intpromote' switch or `~cast(int)(this.registry)` ..\..\..\dub\packages\emsi_containers-0.5.3\emsi_containers\src\containers\unr lledlist.d(504,15): Deprecation: integral promotion not done for `~this.registry`, use '-transition=intpromote' switch or `~cast(int)(this.registry)` ..\..\..\dub\packages\emsi_containers-0.5.3\emsi_containers\src\containers\unr lledlist.d(504,15): Deprecation: integral promotion not done for `~this.registry`, use '-transition=intpromote' switch or `~cast(int)(this.registry)` ..\..\..\dub\packages\dsymbol-0.2.8\dsymbol\src\dsymbol\convers on\first.d(248,35): Error: no property 'identifierList' for type 'const(AliasDeclaration)' ..\..\..\dub\packages\emsi_containers-0.5.3\emsi_containers\src\containers\unr lledlist.d(504,15): Deprecation: integral promotion not done for `~this.registry`, use '-transition=intpromote' switch or `~cast(int)(this.registry)` ..\..\..\dub\packages\dsymbol-0.2.8\dsymbol\src\dsymbol\convers on\first.d(938,14): Error: no property 'symbol' for type 'const(Type2)' ..\..\..\dub\packages\dsymbol-0.2.8\dsymbol\src\dsymbol\convers on\first.d(939,18): Error: no property 'symbol' for type 'const(Type2)' ..\..\..\dub\packages\emsi_containers-0.5.3\emsi_containers\src\containers\unr lledlist.d(504,15): Deprecation: integral promotion not done for `~this.registry`, use '-transition=intpromote' switch or `~cast(int)(this.registry)` ..\..\..\dub\packages\emsi_containers-0.5.3\emsi_containers\src\containers\unr lledlist.d(504,15): Deprecation: integral promotion not done for `~this.registry`, use '-transition=intpromote' switch or `~cast(int)(this.registry)` ..\..\..\dub\packages\emsi_containers-0.5.3\emsi_containers\src\containers\unr lledlist.d(504,15): Deprecation: integral promotion not done for `~this.registry`, use '-transition=intpromote' switch or `~cast(int)(this.registry)` ..\..\..\dub\packages\emsi_containers-0.5.3\emsi_containers\src\containers\unr lledlist.d(504,15): Deprecation: integral promotion not done for `~this.registry`, use '-transition=intpromote' switch or `~cast(int)(this.registry)` ..\..\..\dub\packages\emsi_containers-0.5.3\emsi_containers\src\containers\unr lledlist.d(504,15): Deprecation: integral promotion not done for `~this.registry`, use '-transition=intpromote' switch or `~cast(int)(this.registry)` ..\..\..\dub\packages\dsymbol-0.2.8\dsymbol\src\dsymbol\semantic.d(123,21): Error: no property 'symbol' for type 'dparse.ast.Type2' ..\..\..\dub\packages\dsymbol-0.2.8\dsymbol\src\dsymbol\semantic.d(124,21): Error: no property 'symbol' for type 'dparse.ast.Type2' ..\..\..\dub\packages\dsymbol-0.2.8\dsymbol\src\dsymbol\semantic.d(128,21): Error: no property 'symbol' for type 'dparse.ast.Type2' ..\..\..\dub\packages\dsymbol-0.2.8\dsymbol\src\dsymbol\semantic.d(130,21): Error: no property 'symbol' for type 'dparse.ast.Type2' dmd failed with exit code 1. Failed to install serve-d (Error code 2)
 - Get busy.
Yes. Now I'm busy cleaning my C:\Users\***\AppData\Roaming\ folder.
Feb 02 2018
prev sibling parent reply Andrzej =?UTF-8?B?S2lsaWphxYRza2k=?= <and3md gmail.com> writes:
On Thursday, 1 February 2018 at 12:21:24 UTC, rjframe wrote:

 Do you have any thoughts, ideas, foresee any problems, have a 
 better way to do this? I especially don't want to do something 
 that is actively harmful - if the self-contained package makes 
 things confusing to someone trying to work with 
 globally-installed tools too, that could potentially be worse 
 than what we have now.
I think that many people looking for a new language first check the possibilities of creating a GUI. At least it was with me. If I did not found DlangUI by accident, I would not be interested in D. Maybe on the main page should be a GUI tab with recommended packages with screenshots? Personally, I am surprised by the constant struggle with the garbage collector. For most common applications, this is not a problem. And the lack of cross-platform GUI creation is a big problem. D can win against Rust or Nimlang in this field. When I was choosing the new language for me, I tested Rust, Nim, D and many more. Only D had enough mature GUI to write IDE (DlangIDE). And now, after a year, I created my first commercial application using DlangUI, and the whole code was written in DlangIDE. When I wrote it 50% of the time it was fixing errors in DlangUI. So DlangUI and DlangIDE need more programmers and can easily become a big competitor for eg QT. Especially that it is released under the Boost license. For me it does not have to be one package, but the possibility of creating applications with GUI should be more exposed on D main web page. Although it might be fun to create GUIAppDeveloperStarterPack with ready to run examples. Or maybe we just need a package of examples in download page.
Feb 03 2018
parent reply aberba <karabutaworld gmail.com> writes:
On Saturday, 3 February 2018 at 10:44:58 UTC, Andrzej KilijaƄski 
wrote:
 On Thursday, 1 February 2018 at 12:21:24 UTC, rjframe wrote:

[...]
I think that many people looking for a new language first check the possibilities of creating a GUI. At least it was with me. If I did not found DlangUI by accident, I would not be interested in D. Maybe on the main page should be a GUI tab with recommended packages with screenshots? [...]
 When I was choosing the new language for me, I tested Rust, 
 Nim, D and many more. Only D had enough mature GUI to write IDE 
 (DlangIDE). And now, after a year, I created my first 
 commercial application using DlangUI, and the whole code was 
 written in DlangIDE.

 [...]
That much practical now
 [...]
Feb 03 2018
parent Eliatto <arietto86 gmail.com> writes:
What about IDE sponsorship? I think that we should vote for the 
best D IDE of the year and some money should be given as a prize 
to the IDE maintainer.
Feb 03 2018