D needs to get its shit together!
Mike B Johnson via Digitalmars-d
digitalmars-d at puremagic.com
Fri Jun 16 23:06:53 PDT 2017
On Friday, 16 June 2017 at 17:10:41 UTC, Jacob Carlborg wrote:
> On 2017-06-16 09:53, Mike B Johnson wrote:
>>> DVM [1] is doing some of this.
>>
>> Cool, does it keep things well organized
>
> It depends on what you definition of organized. DVM is a tool
> that allows you to easily install D compilers. It also allows
> to easily switch between multiple versions of the compiler.
> That is, you can have one window (terminal) with one version
> and another window with another version.
>
> On Posix it installs everything ~/.dvm. Each compiler is placed
> in its own directory, it's mostly the zip archives available on
> dlang.org unpacked. Here's an example of how the directory
> structure looks like on Posix:
>
> $ tree -L 2 .dvm
> .dvm
> ├── archives
> │ ├── dmd.2.073.0.osx.zip
> │ ├── dmd.2.074.0-b1.osx.zip
> │ └── dmd.2.074.0.osx.zip
> ├── bin
> │ ├── dmd-2.073.0
> │ ├── dmd-2.074.0
> │ ├── dmd-2.074.0-b1
> │ ├── dvm
> │ ├── dvm-current-dc
> │ ├── dvm-default-dc
> ├── compilers
> │ ├── dmd-2.073.0
> │ ├── dmd-2.074.0
> │ ├── dmd-2.074.0-b1
> ├── env
> │ ├── default
> │ ├── dmd-2.073.0
> │ ├── dmd-2.074.0
> │ ├── dmd-2.074.0-b1
> └── scripts
> └── dvm
>
>> and deals with windows issues(link.exe., dlls, etc) or just
>> uses the "D way" which is a hairball?
>
> I'm not that familiar with Windows (the Windows support was
> contributed by another developer) so I'm not sure which issues
> you refer to.
Thanks. At least D has something going on correctly here.
My feeling is, unless DVM works well with windows, that it
probably currently doesn't offer much help. If it does manage the
versioning well and can deal with the environmental issues well
then it is close to what I am asking. If that's the case, it
should be polished off and used as the main front end and hosted
by D.
You didn't state if it works congruently with all the major
compilers.
The issues in windows are:
1. coff/omf. Requires use of windows and visual studio/C stuff
who's locations and versions change over the years. This can be a
major headache finding the right version. Mainly because the
error messages, when using the wrong version, do not suggest that
it is a versioning error.
dvm could have the option to search the entire system for the
files it needs(e.g., link.exe, various dlls that are generally
used, etc) and attempt get things to work.
2. Managing different compilers: Not too bad but if you end up
with some problems here, then it gets multiplied by the factor of
the number of issues with each compiler. if LDC has an issue with
the x64 dlls and dmd with the x32 and they are always looking in
the same place because the versions are different and wrong, then
it becomes a issue with a "factor of 4" problem. This can become
even worse when you try cross compiling and such.
3. Re-installation can be problematic. sci.ini is overwritten. If
you hand coded the paths to get everything to work, guess what?
Well, who cares? You have plenty of time to waste, right?
4. Reinstalling one thing can break something else. This depends
on how fragile the setup was at the start.
5. People that don't have problems with their setup generally
think everything "just works" and bitch at others for
complaining. Ignorance is bliss, but it's still ignorance. Life
is more complicated and everything just doesn't work for everyone
because everyone system is different. I don't use standard paths
to install things and when an installer hard codes paths that
don't exist, it breaks on my system. That is not my fault. The
installer shouldn't be so ignorant and do it's job properly.
Usually it was written by someone who thinks that when other
people have problems on their system, it is due to their
ignorance rather than the ignorance of the installer
writer(Because they think: Hey, it worked on my system and my
system is the same as everyone elses). Same goes for utilities.
I have over 1 billion files on my system, I use it for around 20
different non-complementary subjects(graphics, music,
programming, etc). When everything is "competing for space" and
things are not set up to work together, one seemingly unrelated
program and effect every other one. (e.g., simply by adding to
the path variable and break things with error messages that are
meaningless to the real problem)
Most ignorant people do not take those things in to account
because they oversimplify... and that usually causes problems
down the road for the rest of us.
As D becomes increasing popular, there are going to be more
variation in the system and the flaws in it will become larger
and larger. It's best to start working on fixing those flaws
before they become too large to manage and weaken the whole
structure. We all know this to be true on some level, but it is
actually fact. It is the way of life, everything breaks down. The
more flaws it has at the start, the faster it will break down...
unless they are fixed at the start. Fixing them near the end just
results in a huge waste of time and resources. e.g., same problem
with a human being. If a kid doesn't take care of themselves,
they will have many problems when they get old... then tons of
money will be wasted on trying to "fix" them. If the kid took
care of himself when he was young, those problems would be
minimized. Same with a utility, app, or installer. But most
humans treat their work like their life... they don't do the
right thing until they are forced too, and by then it's too late.
The point with all this is that D needs to start doing the right
things that now rather than wait until it's too late. I'm not
saying it is not doing anything right, but it is obvious by some
of the comments that some people just don't get it and think it's
everyone else's problem(and these people are generally the one
that fucks it up for the rest of us, just look at the world today
for the constant reminder). D and be the shining city on the hill
or it can just be another New York or Dallas. Sure, they are big,
but full of problems. Some people are happy and some are not. The
goal is to make everyone happy. That starts by, first, by having
a good foundation.
More information about the Digitalmars-d
mailing list