Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I have no context but I'm going to tell you what I think anyway.

I think this is Conways law in action: See W3C, Whatwg and C++ standards committees. The work of specification difficult and the work is complicated and hard. I've never written a standard but I imagine it's very difficult.

I've thought how we can use Conway's law directly to engineer technical and social systems that are robust and meet people's needs.

One of my ideas is that for a group of different individuals and differing interests and priorities to collaborate, you need to recursively define collaborations and treat them as portfolios where the traversal of those collaborations/interactions is a standard, like Git.

What do I mean?

I want X, so I announce I'm doing X and how I'm going to do it and I do X. Then I publish X. Then someone says I want that, can I import it. X isn't to their tastes, so they announce they're going to change it to do Y. Or they negotiate with the author of X to change it to do Y. This is a collaboration between those two entities, it's a portfolio of collaborations. That's a standard right there.

The doing X is the important part.

In other words, the collaboration between parties is reified communication and agreement that is actually imported and used.

Otherwise you get this https://xkcd.com/927/

Attempting to do the thing and doing the thing (implementation) are inseparable from standard work I think.



In my mind the complication in this is: given you did X, and is using X to do A, when Y is proposed and is not compatible with how X works to do A then you have the cost of migration/adaptation of whatever is using X to converge to Y while still being able to do A, otherwise you end up in the same issue with competing standards.

This can be much, much worse if it involves anything that is not purely software, you can't adapt older hardware using a standard (let's call it notUSB) to iterate over an improved notUSB-with-appendages, and if notUSB-with-appendages required modifications incompatible with notUSB you just created 2 standards that don't solve a general problem.

Standards is something that a lot of people have thought about over centuries, any improvement on the process has probably already been considered by many smart folks so I don't think there's a simple coordination solution to it.


Thanks for your reply and thoughts.

I've tried thinking about the interactions of features and permutations from a programming language perspective.

For example, targeting windows, mac, linux with the same code or the interactions between garbage collection, async, multithreading.

If I import a library in a package manager and the library is updated, my code breaks. Or if there's a dependency to a dependency.

Or if someone does an exception in a loop or switch statement and uses "break".

It reminds me of the expression problem.

How do you prevent all these cases leading to spaghetti code?


I think you are right. All the most successful standards have described existing implementations. They didn't describe the universes they hoped it would be in the future, they described the situation on the ground now, perhaps with some compromises in place to try to get everybody on the same page. Look at Common Lisp, SQL, POSIX.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: