Postfix has no public version control
groups.google.com
groups.google.com
So, now I'm a "kid" (with the obvious insinuation that I'm dumb and inexperienced) if I think maybe perhaps version control is a good idea, especially for open source projects that actually want contributions? Neat.
And git is "bloatware"? Is that guy running on a Commodore 64 or something? Bizarre.
Some projects do not want contributors. It belongs to the maintainer. Knowing what not to put in is sometimes the best way to keep good code.
What does that have to do with exposing a read only versioned history? Nobody is asking him to give the whole world commit privileges.
ftp://ftp.porcupine.org/mirrors/postfix-release/index.html
It's tarballs for each release, with associated patches for each release. That's a pretty complete read only versioned history.
Why does it have to be a VCS?
And because they already have a VCS, and are just stubbornly unwilling to share all that useful information with the wider community.
I get that this clashes with the culture you're used to working in, but I don't see where it's actually impactful in a real world sense.
edit: a slight rewording
Giving Weitse the benefit of the doubt, his commit logs are probably very useful indeed, and not sharing them makes the codebase that much less useful to everyone else.
Edit to add: the canonical example is bisection. When something breaks, it is awesome to bisect it down to the precise change that broke it. Bisection lets you narrow the scope down to a vastly smaller problem space than a whole release would.
(*) Which is awesome for many/most projects. But there a valid reasons not to want it.
You're misreading the thread. The specific comment was:
> kids these days see every software development/maintenance task as something that must get crushed under a git-shaped sledgehammer regardless of whether that's the reasonable or sensible thing to do.
which is seems more like a knock against git and possibly the culture around sites like github, than against version control per se. One person in the thread does say that the author uses VCS, but doesn't make it public.
The contributors to the project seem happy with the current setup and workflow, and frankly the guy who was looking for a public repository was kind of a dick about it.
Funny you should criticize the postfix community for this. Did you see what they are responding to?
Source control (SCM/VCS) is a MUST have. It's unbelievable that people just work with tarballs without proper source control. It doesn't matter which you use, but it must be available. Sending patches over email is what people did last century...
I think the "kids these days" comment was in reference to someone waltzing in, contributing nothing, and demanding everything immediately be done their way.
"i would suggest that you ask questions first or be quiet the postfix author is using a VCS but he do not need to provide access to you or me "
Anyone can criticise anything for any reason.
Criticism is so easy to generate that it is worth absolutely nothing.
The process they use works for them.
I guarantee that I could come into your place of work and criticise pretty much everything you do, pointing out that there is a better way of doing it (because there will be, from some angle).
This is not useful, and whether or not I am correct on any specific point it is unlikely to be well received.
Rejecting widely accepted good/necessary practice like that for no apparent reason other than "it's working for us so far" is stupid, arrogant, irresponsible, and wrong.
In this case, however, the criticism is unfounded because Postfix is using source control internally. Whether the system is exposed to the public is inconsequential as long as it's being used.
There is no way you can spin it as anything even remotely close to okay if there was no change tracking in the Postfix project at all.
That was never appropriate.
In the era before social coding (when postfix originated), this wasn't uncommon for open source projects. qmail and sendmail didn't have public VCS either.
Not everything has to be like everything else. Wietse is a dedicated, responsive, talented steward of his project. We don't need to see his WIP commits, and he might not have the inclination to accept patches from unvetted strangers.
I'm ok with letting him run it the way he thinks works best.
I keep seeing this implication, but it simply doesn't follow at all. Nobody said anything about letting everyone commit changes in a free-for-all.
Having a relatively high bar for participation (email Wietse, courteously, and suggest some useful modifications, and offer to work on them) seems like a completely valid filter process to me.
It takes a special kind of personality to be the public facing patch czar of a hugely popular open source project that runs everywhere with elevated privileges and firewall rules set to allow direct connections from anywhere.
Perhaps Wietse has decided that's not the life he wants to live.
People seem to be equating "expose some VCS" with "run a github-style repo where anybody can stick pull requests into your queue". The two are not the same.
It is entirely reasonable to ask an open source project to stop hiding useful information that they already have and could share at zero cost.
Why would Wietse want to have a public conversation about unfinished work? He's not looking for help.
But they're much bigger than the individual commits, and so if something breaks in release X, I can ponder the whole diff or I can bisect the history and ponder a handful of lines.
Postgres is a different project and they no doubt see a different cost/benefit ratio for public VCS, probably because they have many more core developers and contributors than Postfix.
I've actually had a patch accepted to Postfix and while I found it inconvenient not to use my usual VCS-based workflow, I also realized that the Postfix world revolves around Wietse, not me, and as a user of Postfix I benefit most when the project is optimized for him and not other people.
"The point is that public VCS doesn't benefit Wietse, and by extension Postfix, so why should he have one? A public VCS only benefits other people, most of whom aren't even contributing to Postfix development."
Like this:
"The point is that publishing source tarballs doesn't benefit Wietse, and by extension Postfix, so why should he? Publishing the source only benefits other people, most of whom aren't even contributing to Postfix development."
The answer to both question is "he doesn't have to, but if he takes seriously the goals of open source it would be silly not to." It's not unlike choosing to withhold your Makefiles, or documentation.
Until pretty recently tools like git, hg, bzr didn't exist. Now one of those is looking abandoned in its own right.
Switching repos and tools isn't trivial, and really if the tool is free software and works across common OSs, I really don't see the problem. DVCS doesn't have to work for everyone.
1) If you don't like how postfix is run then feel free to use other tools, fork it, or start your own project. This is open source and you have the power to do it better. If you are indeed right then your project will be successful. Put the money (effort) where you mouth is.
2) You can politely suggest something but you will get a much better traction if you first establish your reputation among people who work on this project by contributing code, documentation, whatever or even simply answering the questions in the mailing list (after about a year it gets really boring since questions are always the same).
3) (IMHO) There is no silver bullet. Git (or any other tool) will not make your code/project better. Moreover you might find that Git (or any other tool) is not perfect and there are problems with it in a particular environment (hint: there is no free lunch). Recognizing the tradeoffs is a very important skill for a software developer. Learn it early and you'll make less mistakes.
Git is a tool, and it's certainly not going to be a 'flip a switch and everything is better'. It does require that you define how you're going to use it in your particular context, but the only tradeoff I can see with git is learning it. It's interface and naming is an absolute horror show of usability, but its no worse that something like regular expressions or vim/emacs. But once it's in place, you have change management calculus, and everything else was algebra at best.
I understand the frustration of people who are used to having the benefits of open history in addition to open source. And who don't want to step back 10 years and learn dead end technologies, and who aren't used to being confronted with ivory towerism or gatekeeperism.
Otoh, I also understand why a maintainer would want to keep their codebases close to their chest, when they've achieved expert level finesse in a project/codebase, and the noob hordes with their ill-conceived ideas demand responses to their pull requests because they spent their free time writing some crap, and demand you spend your free time educating them on why their patch is a tub full of fail.
Said that I am using Git for pretty much everything right now simply because it is "good enough" and I am lazy to switch between tools.
I don't want to get into an emacs/vi style flamewar but other VCSs have their own advantages, and are better in some situations:
- I prefer SVNs handling of trees/subtrees. I can checkout and work on one small part of a large project.
- Fossil has ticketing and wiki out of the box. It is easier to set up a server and enables true distributed offline working.
- Mercurial is easier to use for the most frequent use cases.
Ticket handling/wiki aren't really version control features. Decoupling those features from your VCS allows you to select the one that works best for your situation.
Mercurial is easier to learn for the most frequent use cases, and its interface make a lot more sense. No argument there. But like I said earlier, once you do learn it, its no more difficult to use, follows the same paradigms, but really allows for the edge cases to shine.
That's a clear misunderstanding of how to use git. The whole idea of having a single source tree is unnecessarily limiting - everybody works in their own branches, pushes to a origin/github remote, and when their work is gtg for the trunk, they, in their branch do a git pull --rebase, or alternately do a `git fetch; git rebase origin/master`. If they haven't touched any files that other people have touched, it just moves their branch point off of the current tip of origin/master, and they can merge their changes into master and push.
The only time it should be hard to push code is if both people made changes to the same file, and realistically, the same lines of a file. Then you get a merge conflict which is awesome, because it's made you aware that what you're working on and what somebody else is working on may be overlapping.
They quite literally throw away (or keep locked up, which is the same for us non-insiders) information that is relevant to understanding and debugging the project.
The only reason for that is misplaced vanity.
Note that nobody is asking to see your code before you're ready. You still get to choose when to push that fancy new release to the public repository. And nobody is asking you for write access.
If you want to work on a new feature that'll take a long time and require several people, grab the code, stick it in git, and work on it with your team. Once the work is done, send a patch to the postfix maintainer, and he'll merge it if it's worthwhile.
Linus created git because the above workflow was killing him trying to handle the patches for the Linux kernel. He was doing it almost exactly as described above for a long time. I suspect postfix sees a far lower volume, and the above workflow probably works just fine.
Their worklflow seems to be:
* Make a change
* Write the meaning of the change in the HISTORY file
* Release a tarball of the source with the change
Here is the HISTORY file: https://github.com/vdukhovni/postfix/blob/master/postfix/HIS...edit: fixed 2 pretty big typos.
The need/usefulness of version control was orthogonal to (and preceded) the decision to write his own (d)vcs.
(Edit: misrememebred the actual vcs, originally posted Mercurial instead od Bitkeeper - http://en.wikipedia.org/wiki/BitKeeper#History )
Here's the link to "A short History of Git": http://git-scm.com/book/en/Getting-Started-A-Short-History-o...
Rebel Code (http://books.google.com/books/about/Rebel_Code.html?id=kIU1s...) does a pretty good job summing up how Linux migrated from tarball source releases to BitKeeper (and eventually, of course, git). It appears that Steve Weber also writes on this, in a format that may be easier to read. (http://books.google.com/books?id=78SLSiWqy14C&pg=PA117&lpg=P...). The e-mails sent at the time around this make this thread seem, well, pretty friendly, actually. (http://lkml.iu.edu/hypermail/linux/kernel/9809.3/0493.html)
To the Postfix maintainers' point, Linus appears to have had quite reasonable reasons for maintaining the changes himself in the years up to then. Only when the number of active contributors got large (I suspect significantly larger than Postfix's) did this model break down. It's not the best for everyone, but I'm really glad they're maintaining a great open source product. The early 2000s in particular were not an easy time for MTAs.
I have been working with software for over 20 years and I still think git is the coolest thing to hit development teams since dynamic languages.
These days I think of free software to have a public version control as a given. So coming across this was a shocker for me. I think Wietse is free to do whatever he wants but it's just sad that we have to depend on this software so much :(
ftp://ftp.reverse.net/pub/postfix/official/
Additionally, the history is mirrored on all the continents except Australia, http://www.postfix.org/download.html
Sure, there's no commit history for every change, but there's release notes for every version. What is the use case for knowing what intermediate things may have been available to some small group prior to release?
It's a use case that actually comes up a lot.
"This line looks funny, why does it do that?"
Go read the commit log and see why it was last touched.
I find and fix bugs in open source things I depend on all the time using this method. Or just as importantly, I realize my own understanding was mistaken and the author had a good reason for what they did, so I don't go asking stupid questions on a mailing list.
Not to say that their process is perfect and I'd chose the same process. But pretending like their process is highly problematic and we should be concerned for the future of the web because you can't run `git log` the moment you have the code seems a little over-dramatic.
There must be some similar projects to Postfix that are written in modern programming languages and do use source control etc.
Postfix's configuration isn't bad compared to Sendmail. You might try exim instead, it's also well regarded.
I'm guessing if you use a distribution package of postfix to get a basic configuration, and follow the TLS documentation [1], you'll end up mail that's encrypted in transit (which I'm guessing is what you mean by encrypted mail). Make sure you have a relatively clean IP (not on any blacklists), and that forward and reverse dns match, setup SPF, DKIM, and DMARC, and you should be good. Do be sure you're not an open relay, cause you'll be found and abused (but I'm pretty sure most distro configs should start you off without being an open relay)