I think that the single USB-C port is going to be pretty annoying for the people who buy one this year, but it is likely to have the same effect as making the iMac USB only: provide a sufficiently large demand for USB-C devices that it makes sense for peripheral manufacturers to produce docking stations, displays that can provide power over USB-C, and so on. In a couple of years, I expect that there will be enough devices on the market handle breakout from a single USB-C connector that people buying laptops won't have a problem with it.
However, just like the original iMac, there's going to be a lead time where the only peripherals that you can connect reliably are (expensive) Apple-branded ones. If you remember the iMac launch, you'll recall that about a year later computer stores were full of USB stuff all in the same sort of translucent coloured plastic as the iMac to encourage iMac users to buy them, but a year after that the vast majority were bought to plug into non-Apple machines.
They tossed a port they really needed to keep: ethernet
Not with the latest version, Ethernet was gone several revisions ago. Most people really don't need it. I generally only use it at work, and leave the dongle connected to the Ethernet cable, so it's no harder to plug in than connecting the cable itself.
you must re-dongle the USB port (and you'd better hope you have some kind of mega-wire-spider so you can feed it power at the same time... and connect your USB stuff... and connect an external HDMI monitor...)
The idea is that you'll just have one cable coming from your monitor, providing power and a USB hub. Currently you can only get that with Thunderbolt from an Apple display, but a number of display manufacturers have signed up to do the same with USB-C. I'd love to be able to have a single cable to connect power, ethernet, display, keyboard and mouse to my laptop. About the only place where I connect more than one cable is at my own desk. I generally have to carry a dongle for projectors, because in most places they're VGA only (if you give a talk at Apple, they have an impressive array of adaptors connected to their projectors, for every display connector that Apple has ever sold. I really wished I'd lugged a G4 PowerMac tower with me to be able to use the ADC adaptor).
That's no different from closed source development. Do you think Microsoft or Apple care about the opinions of people who aren't going to buy their products? There is basically only one way to contribute to a closed source project: pay money to the developers. That works for open source too, but you can also produce code, documentation (please!), artwork, detailed and reproducible bug reports (please!). People who contribute in any of these ways are valuable to the project and their opinions should be considered. People who don't contribute anything are only valuable in the sense that they may eventually become contributors.
The difference between open source and closed development is that open source projects allow non-contributors to use the product for free, whereas most closed projects will use legal means to prevent this.
Where are these people who actually respect the work of Poettering?
As a FreeBSD developer, I have a lot of respect for the work Poettering. Every time he releases a new piece of software, we gain a load more users and developers. I can't wait for his next project.
Those who know c well are unlikely to be the mediocre and bad programmers.
Clearly you have never visited GitHub.
For example "int i; printf( "%d", i );" and you have a code with undefined behavior. At runtime it'll print a random number even though you never called rand() to indicate that's what you wanted.
This is a feature, not a bug. If uninitialised variables were default-initialised to some value, then this code would still be buggy, but now your compiler / static analyser would not be able to tell you that it contained a bug.
if you need that behavior for some reason make it "uninitialized int i; printf( "%d", i );"
If you don't want that behaviour, then initialise the value at the declaration. Coding styles typically discourage initialising with a sentinel though, because you lose the ability for your compiler to check that you've assigned the correct value on every code path.
I've noticed several design suggestions in your code.