It's all in the Infrastructure
There are so many ideas for how to make Ubuntu better, most of them come in the form of extra features, or just making things better in a very generic kind of way. Some are really cool new things that we want to see done and others are tweaks of policy or default settings.
But for programmers, we need to have a plan that’s a little more detailed and a pattern of improvement that we can show produces the best results with the minimum of effort. So pondering this one day over a pot of Yorkshire tea, nibbling on some home made bread made by my wife, I thought: of all the things that makes Ubuntu and all Free Software operating systems stand out, it’s the infrastructure. It’s the ability for one set of highly structured services, libraries or tools to provide leverage to other developers, making development of highly complex programs, possible with small amounts of people and time.
Here are some examples of what I mean:
- Build Tools – Makefiles, debian configs, python distutils, they all may seem like a nuisance; but the power it gives the developer and the distributor to not have to worry about building the build tools from scratch, or having to make her own set of scripts, all of which would be hackish, then add the power to roll one build system into another and we’ve got a powerful set of tools to make sure project developers don’t get distracted.
- Repositories – These systems, specifically debian apt/deb system, is an amazingly powerful infrastrucrual component. So many features can and are being built upon this system. Package signing, fine control of upgrades for internal lan computers, multiple version management and even source access.
- Mount and Filesystems – An often overlooked component, it’s been here for so long. But our ability to mount devices and vertual drives (i.e fusefs) is another example of powerful infrastructure that we leverage every day to bring features and security.
- Device Management – Services like HAL or DeviceKit are an excellent way of organising our complex set of hardware connected to our computers. Proving hooks and labels, ways to auto mount and add in features. No software needs to probe the hardware of a computer when you have powerful user space device management.
- Network Manager – Yes it’s buggy, yes it’s young and immature. But the work going on in that area will provide a very strong networking api for our systems. It’s not quite as good as I would like, it doesn’t support online status levels and mucks up static settings more often than helping them. But It’s got great potential.
- Launchpad – I know plenty of people will give me flak for suggesting that a currently closed source tool is a good example. But Launchpad is developed by people who understand the importance of infrastructure, and bringing that power of the tools we have available, right up to normal users. The bzr branch management, the translation tools, are all heading in the right direction. I just hope that it’s opening will finally add decent project and event management to it’s existing strengths.
So, why bother mentioning these things? Surely a lot of these things are well known to be strenths of Free Software systems. Well as I said, I think there is a pattern here, I think we can do more by putting down our petty egos sometimes and thinking about the best way to write software which enables the widest possible set of developers and users to take advantage of our hard work.
When Mark Shuttleworth says that he wants to improve the Notifications, indicators and alerts, he’s not just talking about a fancy way to show notifications. But a better way of providing a clean and useful API, that does not promote confusing interface design to the user. He’s thinking about one section of the foundation infrastructure, and it’s great to see that mentality happening.
This is why most of the serious project I work on, and the serious ideas as try and talk to people at UDS are all about improvements to the platform infrastructure. The work I do on Coisas, I knew would be a difficult and large project, but I decided that if I didn’t do it, no one would. The work I did on Dohickey with hardware databases and information systems was the same kind of idea (now put aside so DeviceKit can be finished).
These are the other things I would like to see:
- Hardware information – I still believe that being able to download information about hardware that is detected and have links to online resources and help specifically for that device, is an important idea for hardware compatibility.
- Configuration Management - We have so many varied formats and styles of configuration file. We don’t even have a way of validating them against the current installed version of their owning package. More should be done to provide the tools that enable configuration files to be validated, tested and if powerful enough, transitioned (upgraded) instead of requiring that each package have it’s own validation and management.
- User Trust Management - The tools we currently have available, gpg and so on are great. But we’re not taking advantage of them. We’re not encouraged to set up keys for email, or match keys up with our contacts. We’re not warned about unsafe transmition of unencrypted messages. And the least said about apt’s trusting key process the better. Improving this system though would improve our user’s data security.
- Networked Computers – When you have computers on a network, at home or a small office. You don’t generally want to have to configure each machine to talk to each other in certain ways to share files, printers and so on. Avahi is a great tool for sharing things. But we’re not able to create networks based on human concepts of trust and ownership. If I own 3 computers on the same LAN, then those computers should configure themselves so that my logging on one will be as if I was logging on either of the other two, the same files should be present and the same authentication should be used. If it’s some I know who is connecting to my network, then trusted permitions and data sharing rules should come into play. It’s amazing how hard it is to set up a network of computers if your having to translate human concepts to sharply logical networking tools.
[...] you go back to my post ‘It’s the Infrastructure Stupid‘ I use the new nofications system as an example of good thinking when it comes to building [...]
Much of what you’re talking about is way above my head, but what I understand makes me glad I joined that Linux mob. Please keep on working. It won’t be wasted on hundreds of thousands to millions of us even though when we see it we don’t recognize it as anything remarkable.
Still, in all, whether we recognize the deep understandings of the Linux system or not we will be doing better, safer, more productive computing because of all so many of you have done even when only a few will be able to appreciate it fully.
Thank you, and thank all of the Linux/Ubuntu/etc. developers. Your work will, one day, fill the computers not only of enthusiasts, not only early adopters. Soon the ease of use and power will hit a tipping point. Then you’ll be able to take a week off. But, remember, there will be millions where there are now thousands and the needs will be all the bigger.
But, do remember, take that week off, you’ll have earned it, I mean really earned it.
Thanks,
~weatherguy