What is all this talk about IVY?

Posted 2023-05-29

Mike Parker made an announcement post that mentioned the term "IVY" last week that set off some threads. He followed up in a beerconf call over the weekend and I talked to him myself too.

Core D Development Statistics

In the community

Community announcements

See more at the announce forum.

My impression so far on D management new direction

All this talk about IVY is fundamentally about the upper D team trying find a new direction. I've been quite critical of their current direction for some time and while I'm skeptical there will actually be significant change, I welcome any attempt to improve things.

IVY stands for "ideal vision of yourself", but what it actually means is that a manager would try to identify people's motivations and give them a way to work with you on things that are mutually beneficial. This includes identifying your own goals and motivations which is not always as obvious as you'd think.

For comparison, when people ask me for programming help, I often ask what it is that they are actually trying to do. If someone says "how do I find the length of a string?", the correct answer often depends on what they intend to do with that length. You want to know how much memory it will take? (cast(ubyte[])str).length might be the best answer. Want to know how much space on screen it will take? Maybe something like painter.textWidth(str) is more appropriate, or even text-overflow: ellipsis if the next step is to hide what doesn't fit. Giving one answer to someone with the other goal isn't going to spark the joy that you want. The answer to what they're doing can help design a better library too, by exposing functions and guiding documentation toward these particular use cases.

Similar things can happen in other contexts. At first glance, your goal might be "to get length of a string", but upon reflection, that's just a means to an end. What you actually care about is something else and there might be other ways to get there. If you realize this, you open yourself up to possibly better approaches. In a job, you might say you want a promotion, but maybe what you actually want is more money, more autonomy, less work you dislike, better hours, etc., etc., etc. (and each of these may also probably be a means to another end so you can sometimes productively keep digging) Clever negotiators will identify the key goals of both themselves and the other party so they can get the best deal - give up the least of what they really care about and offer what the other party really wants to make them more likely to take the deal.

Managing an open source project is fundamentally a negotiation: contributors want something and offer some services and maintainers want something and offer something back. Unlike regular jobs, it is rarely cold, hard cash, so you need to consider other options. But when some options align, you can get a mutually beneficial arrangement and good stuff gets done.

This stuff probably sounds obvious to people who are already good at this. Heck, people who are really good are probably laughing at my naive understanding. But to a lot of people, including many involved in D, it is a chain of thought they've never pursued, a skill they've never developed.

That is why I think they're so excited about the IVY thing. It isn't the word itself, but rather that someone is taking the time to tutor them on this new (to them) concept and it has opened their eyes both to useful reflection - what is it you are REALLY trying to do with D - and to potential new skills to work with other people - how can we benefit each other with what we can actually offer each other? D has more resources than it thinks and maybe they'll realize what they have and how to use them.

I'm cautiously optimistic. I'm still skeptical things will actually realize proper change, but at least it shows they're open to some new ideas and a little bit of effort in a new skill with the help of a coach can go a long way for results.