Vibemail - extensions for vibe's Mail class to send multi-part emails with attachments
Sebastiaan Koppe via Digitalmars-d-announce
digitalmars-d-announce at puremagic.com
Sun Oct 4 00:43:08 PDT 2015
Sorry for the late reply. Had some stuff to finish.
On Tuesday, 29 September 2015 at 16:22:43 UTC, Adam D. Ruppe
wrote:
> dub forces me to do it that way. It isn't my preference, but
> reorganizing all my files and creating twenty or thirty
> different github repos to house them is unacceptable.
Well, the current situation is unacceptable either. Imagine
everyone did it like that. It would be a long list of 'misc' on
code.dlang.org. No way to find anything.
> The unit of encapsulation in D is the module. If a module does
> two wildly different and independent things, you would break it
> up. Similarly, and I think this is often neglected, if two
> modules are intertwined and one cannot work without the other,
> they are really one unit and should be merged.
True. What do you think about cases which have a layered
approach? Example:
Layer 1: bindings to some c lib
Layer 2: D wrappers
Layer 3: high-level functions
Now if someone doesn't like my high-level functions, at least
they can just implement something on top of layer 2.
I am wondering because I am considering something like this for
my upcoming upnp library.
> D's modules work! Why does dub reject this model?
Probably because of version control.
> There needs to be a balance struck between "don't repeat
> yourself" and avoiding dependencies.
I am reminded of yosefk's article:
http://yosefk.com/blog/redundancy-vs-dependencies-which-is-worse.html
His attitude is to avoid dependencies as the plaque, sometimes at
the cost of copy-paste.
> It is generally considered a bad idea to do the whole system
> together at once. (though Docker and VMWare appliances and such
> do actually try to do that and have found some success in the
> market) Making changes to that means a lot of extra work that
> is easy to do wrong. (The duplication itself btw isn't a big
> problem to me, computers are good at doing the same thing over
> and over again; it is an easily automated problem, at least
> until something goes wrong.)
Before Docker I would always make readme's describing what
dependencies to install, what versions, etc. Ofcourse I would be
too lazy to write the thing in the first place, or too lazy to
update it. Or I would just forget to do it.
At least with Docker that no longer happens. Everything is right
there, in a standard format.
In my last project we had 4 micro-services supporting our mobile
app, each one only has an `app.d` file with less than 800 loc,
most of which is just copy-pasted between them.
I have to say I really liked the experience compared to having an
monolith app.
And yes, each micro-service has its own repo, and each has 2
dependencies: vibe.d and one specific to the service.
>> I copy/pasted your arsd/dom.d code in a couple of projects.
>> But none of them will receive updates unless I do 'm manually.
>
> That means you don't have to put up with me randomly breaking
> your code!
Sure those are good benefits, but you can't expect a whole
community to work like that.
Besides, what if it was a crypto package and you just fixed some
flaw. Obviously you want to push that change. At least dub will
tell me `there is a newer version`.
>> However, the idea of having a package-manager is a good idea.
>> If only to serve as documentation on the libs you package
>> depends on.
>
> But, how do you express the half-dependency of
> characterencodings in a dub.json dependencies list?
I suppose the answer is: it either depends on it, or it doesn't.
How do other systems handle this?
More information about the Digitalmars-d-announce
mailing list