Live data from Hacker News

What I wish systems researchers would work on

matt-welsh.blogspot.com

41–50 of 60 posts

Re: What I wish systems researchers would work on

#41
post #32

I think people replying here aren't quite appreciating the complexity of configuration properly here. One might think that configuration doesn't get harder with scale, but it does. Suggesting that the solution is simply using a general purpose language for configuration or storing configs in a key-value db or in a version control system is almost adorable. It's basically completely missing where the pain points are.…

The properties that you listed reminded me of the Nix package manager http://nixos.org/nix/ and NixOS that uses it. I came across it originally while looking into package managers that would allow rollbacks or at least make it easy for multiple installed versions of a package.

Re: What I wish systems researchers would work on

#42
All the three points in the "wishlist" are real-world problems, something which academic conferences will shun straight-away. All work in areas like configuration management must be either a)Evolutionary work based off existing tools. This unfortunately doesn't qualify as good-enough research OR b)A radically new approach, which is almost useless unless a robust enough solution is developed, deployed, and tested. Researchers prefer multiple papers over perfecting the engineering of software tools.

Hence there is no incentive for academic systems researchers to focus on these (it's no fun having paper after paper shot down).

Re: What I wish systems researchers would work on

#43
post #41
post #32

I think people replying here aren't quite appreciating the complexity of configuration properly here. One might think that configuration doesn't get harder with scale, but it does. Suggesting that the solution is simply using a general purpose language for configuration or storing configs in a key-value db or in a version control system is almost adorable. It's basically completely missing where the pain points are.…

The properties that you listed reminded me of the Nix package manager http://nixos.org/nix/ and NixOS that uses it. I came across it originally while looking into package managers that would allow rollbacks or at least make it easy for multiple installed versions of a package.

I had the same thought. (I haven't used Nix, only read about it.)

Re: What I wish systems researchers would work on

#44
post #16

Earlier quoted context omitted.

See https://news.ycombinator.com/item?id=5717481 in this thread.

It's a great comment, graycat, and I couldn't agree more. Where we might differ is that I think the future of computing is in Computer Science -- but where it will lead to an extension of mathematics (specifically Set Theory). But we're essentially saying the same thing.

For where computing will be based, currently there are big cultural issues:

With one paper I published, in a computer science journal for a problem in computer science but basically some applied math, I had to discover that, really, it was tough for the computer science community to review the paper. I sent an 'informal' submission to a nice list of the top journals appropriate for the paper. From one Editor in Chief of one of the best journals and a chaired professor of computer science at one of the best universities I got back "Neither I nor anyone on my board of editors has the mathematical background to review your paper." Then I got a similar statement from another such person. For one at MIT, I wrote him background tutorials for two weeks before he gave up. Finally I found a journal that really wanted the paper, but apparently in the end only the editor in chief reviewed the paper and did so likely by walking it around his campus to the math department to check the math and then to the computer science department to check the relevance for computer science.

I had to conclude: For the good future of computer science via math, the current crop of CS profs just didn't take the right courses in college and graduate school.

That's one side of the cultural divide. For the other side, (1) the math departments always want to be as pure as possible and f'get about applied math and (2) in applied math really don't like doing computer science. Some obscure math of relativity theory, maybe, but mostly nothing as practical as computer science.

Of course, the big 'cross cutting' exception is the problem P versus NP, apparently first discovered in operations research (integer linear programming, yes, in NP-complete), later in computer science with SAT, and now at times taken seriously in math, e.g., at Clay Math.

Here's a 'reason' for the math: When we write software, we need something prior to the software as, say, a 'specification', that is, saying what the software is to do. Now, where is computer science going to get that specification? A big source has been just to program what we know how to do at least in principle just manually. After that, computer science starts to lose it and drift into 'expert systems' (program, with 'rules' and Forgy's RETE algorithm what an expert says), intuitive heuristics, and various kinds of brute-force fitting, machine learning, neural networks, where basically where we fit to the 'training' data, test the fit with the rest of the data, and stop when get a good fit. So we throw fitting methods at the data until something appears to stick.

We need more powerful means of getting that prior specification. The advantage of math is that it can start with a real problem, formulate it as a math problem, solve the math problem, and then let the math solution and what is says we needed to do in manipulating the data be the specification for the core software. E.g., if want to design an airplane on a computer, then start with the applied math of structural engineering, mechanical engineering, and aeronautical engineering, program that applied math, and then design the plane. For software to navigate a spacecraft to the outer planets, start with Newton's second law and law of gravity, get the differential equations of motion, get some numerical means of solution, and then program what the numerical analysis says to do.

We need things solid and prior to the software to know what software to write, and basically that is we need a math solution first.

For computing itself, as in monitoring, we can call that a problem in statistics -- more applied math.

A lot in computer load balancing is some serious applied math. Actually optimal job scheduling is awash in NP-complete optimization problems.

Or, we used to have 'metaphysics'. Then physics became mathematical and made real progress. Basically the solid logical chain of correctness given by math theorems and proofs is just too darned hard to compete with or, thus, ignore.

Re: What I wish systems researchers would work on

#45

Computer systems, which are deterministic , have long since passed out of the realm of being understandable . They're chaotic systems[1]. Parameters which are below the threshold of detection can drastically affect their trajectory in phase space. Accidental complexity has zoomed off to live a life all its own, and that takeoff has been continuous for decades [2]. Everything we build around software that's not direct…

This is a great topic, the idea that contemporary computer systems are not atomically understandable or model-able. And it's a topic that's almost entirely absent from computer science discourse.

We passed the point quite a while back where "applied CS" -- what it's like to build and maintain scalable systems in the real world -- looks a lot more like anthropology than like mathematics.

We have tools like sampling profilers, loggers that do stateful packet inspection on a small percentage of traffic, and sophisticated A/B testing frameworks that reason about user populations rather than individuals. But I think we could probably build a whole 'nother generation of these tools by thinking about this problem of understanding complex systems from some new perspectives. I nominate anthropology as a discipline that has many years under its belt wrestling with the impossibility of complete description. (And wrestling with other tough issues, sometimes not well, but that's another conversation.)

I'm not talking about the kind of "anthropology" work that companies like Intel have done for a long time, which are firmly in the social sciences tradition and are really user studies. (Though that work is valuable.) I'm talking about porting ideas such as "thick description" to our technical toolkit.

  http://en.wikipedia.org/wiki/Thick_description

Re: What I wish systems researchers would work on

#46
post #24
post #6

Dealing with configuration files is a problem that extends well beyond distributed systems, or even systems programming in general. It's certainly a very important issue. One of the fundamental problems with configuration files is that they are written in ad-hoc external DSLs. This means that the config files behave nothing like actual software--instead, they have their own special rules to follow and their own seman…

While reading your comment, I thought of the problems with configuration files I was having in my own project... when I realized, "why not just use python"? The program (written in go) could simply launch a new process on startup, e.g. python -c "import imp; c = imp.load_source('c', 'abc.conf'); print '\n'.join('%s = %s' % (n, repr(getattr(c, n))) for n in ['option1', 'option2', 'option3'])" and read it's output (whi…

[deleted]

Re: What I wish systems researchers would work on

#47
post #29
post #6

Dealing with configuration files is a problem that extends well beyond distributed systems, or even systems programming in general. It's certainly a very important issue. One of the fundamental problems with configuration files is that they are written in ad-hoc external DSLs. This means that the config files behave nothing like actual software--instead, they have their own special rules to follow and their own seman…

You really don't want to use a Turing-complete language for configuration. It makes all sorts of things impossible such as: - Automatically scanning for insecure configurations (eg. OpenSCAP) - Parsing the configuration in other programs. - Modifying the configuration programmatically (cf. Puppet et al) Also, http://augeas.net/

Those are the things that would actually get easier: your configuration would be a data structure in the host language rather than a text file. So you wouldn't have to parse it at all. Other programs would have to either be in the same language or have some way of communicating with the host language, but that isn't too bad a restriction.

Similarly, this would make modifying configuration programmatically better. Instead of dealing with serializing and deserializing to random text formats, you would just provide a Config -> Config function. This would also make tools modifying configuration parameters more composable because they wouldn't be overwriting each other's changes unnecessarily.

Re: What I wish systems researchers would work on

#48
post #6

Dealing with configuration files is a problem that extends well beyond distributed systems, or even systems programming in general. It's certainly a very important issue. One of the fundamental problems with configuration files is that they are written in ad-hoc external DSLs. This means that the config files behave nothing like actual software--instead, they have their own special rules to follow and their own seman…

> This means that the config files behave nothing like actual software--instead, they have their own special rules to follow and their own semantics to understand. These languages also tend to have very little abstractive power, which leads to all sort of incidental complexity and redundancy. Good software engineering and programming language practices are simply thrown away in config files. I have to disagree that t…

It's certainly not the only problem with systems configuration. However, it is a broad problem: it applies to more than just systems. And, as you may have guessed from my examples, I don't really do systems stuff all that much. But I do deal with a bunch of other configuration files and formats!

It's more a comment on config formats in general.

Re: What I wish systems researchers would work on

#49
post #48

Earlier quoted context omitted.

> This means that the config files behave nothing like actual software--instead, they have their own special rules to follow and their own semantics to understand. These languages also tend to have very little abstractive power, which leads to all sort of incidental complexity and redundancy. Good software engineering and programming language practices are simply thrown away in config files. I have to disagree that t…

It's certainly not the only problem with systems configuration. However, it is a broad problem: it applies to more than just systems. And, as you may have guessed from my examples, I don't really do systems stuff all that much. But I do deal with a bunch of other configuration files and formats! It's more a comment on config formats in general.

Well I agree the proliferation of formats is a problem, but I think it's an intractable one. General languages solve the problem of "I can't use config language X because it's missing feature Y", but for every project you bring on board you lose one because they don't want that much power in their config files.

Re: What I wish systems researchers would work on

#50
post #3

Speaking as a student studying systems (particularly security and OS development) . . . the second point sounds really interesting. Recently I've been working on a simple microkernel (called Sydi) that should actually make this possible. It's a distributed system straight down to the kernel: when two instances of the kernel detect each other running on a network, they freely swap processes and resources between each…

This is a nightmare from a security perspective, of course

Well, only because you're trusting your hardware. Most people take that on faith anyway.

If you're willing to trust the hardware, I'm fairly sure software-based isolation and security is relatively doable.

Post reply on HN