The Future of SuperCollider Development Efforts

There is a fundamental difference in how US and EU institutions work. All of this work has happened in the UK or EU because there are grants that are (were) available to cover this. It will never happen in a funded manner in the US. The system doesn’t work that way.

Sam

It’s unfortunate, because many educational institutions (with relatively solid funding backends) are using SuperCollider to teach classrooms of students, but seem to treat it as a free no-strings-attached resource.

Yes, that’s really unfortunate. The IEM in Graz has been supporting Pd for decades: they host our website, our mailing list, our package manager and let one of their staff members work on Pd during office hours. They have also funded my work on VSTPlugin. Universities do have the financial resources, it just needs the right people to make a move.

In general I think you’re point is ofc true (MUCH more funding like this in the EU) - but I know of at least 5 or 6 very important maintainers / contributors in the last 10 years that have done so under the umbrella of a US educational institutions, and some more from non-European (central / south america, east asia, at least speaking to things I’m familiar with) institutions. This isn’t really speaking to the general point (and def not trying to be argumentative about this, lol, I know the evil blackened void that is US university system), but rather that - all it takes is one or institutions with one or two people to make a major difference in a project like SC.

1 Like

I think it’s not as bad as that tbh. We hosted the mailing lists at Bham for a long long time. I always considered my contributions as part of my job, and partly in payback. Many long-term folks like Julian, Alberto, Ron and many others would probably say something similar. The SC Book came into being substantially because of support from academic institutions. I’d imagine Eli’s videos and book are probably also supported by his job.

And tbf just because someone uses it for teaching doesn’t mean they are in a position or have the skills to contribute. And there are many ways to contribute to the community besides developing.

There is also a crisis in the academic world, and it is being discussed in several other fields, like physics: https://www.youtube.com/watch?v=mExlPihH3jk

I’m not sure if it was a rhetorical “you”, but doesn’t seem to be. Can you try to get to specifics about the technical debt and how I’m misunderstanding it?

While it’s reasonable to value the expertise of those directly involved with the codebase, it should be done concretely, and not using vague and obscure terms. Especially when directly calling people out, and citing others in your message.

“Technical debt” means the accumulation of many ad-hoc small fixes over time, while never touching the core design, or doing the change with a broader context in mind. If that’s the case, what substantial software redesign was done exactly? And why do you think I would be against it?

If you have a part of the code that one should never touch, and no architecture discussion is done, which can’t be the work of one individual, the “technical debt” will always be inevitable. Lack of comments and documentation is also another ingredient that adds to the problem (a lot). It is not a problem one single person can “fix”, it’s a collective problem.

In another thread, I mentioned the complete lack of comments throughout the entire codebase. Changing that is something that would practically reduce technical debt over time. Also, improving testing would be the first step before any redesign. Any of those things are priorities presently. Although, they would prepare the ground for the future in that respect you mentioned.

At least as far as documentation development is concerned:

Some questions on the forum, including the previous mailing list, are duplicated or varied, and I think this is due to the nature of the documentation, which is difficult for newcomers to understand. The strange thing is that many of the forum users are kind enough to answer the questions, but few of them are documented.

I think it would be great if this could be bridged, but it seems to be due to the fact that answering is a spoken style, but documentation is a written style.

  • If these QAs were well summarised and linked to the relevant class help document and re-formed as guides or tutorials, or
  • if future answerers would create a PR and link to it as an answer,

documentation would be greatly improved.

2 Likes

@Smoge:
There are lots of ways that you can contribute to the SuperCollider project. My experience has been in the past that the team are extremely helpful and welcoming to anyone who is willing to pitch in. I’ve identified above some ways in which anyone could contribute to the project if they want to, and you have identified a couple of other things that you think would be helpful. I agree.

So why don’t you either:

  • Document the code.
  • Write some tests to help.

If something is preventing you from doing those things (e.g. lack of technical skill), then either you could try to gain that skill (C++ isn’t that hard), or contribute in some other way (write documentation, triage bugs, help with build deployment).

Developers in the past have dropped out of this project because they got fed up with the criticism they received from the SuperCollider community. Fewer developers willing to work on the project isn’t going to help anybody.

1 Like

Sure, I wrote some tests and started a thread here, but no interest. I was told it would make CI more difficult, that was the one feedback I got. (And I didn’t make much sense of it)

You know, I have some thoughts and aspirations about the CI. I don’t blame a dev for complaining about CI, it’s a hassle and a pain. I’m glad you brought this up.

Some background: Professionally, I came into dev (software development) via operations/tech support, which I was able to break into without a degree based on knowledge from a history of trying to get Linux to be an art workstation. I was always a coder. I hated ops and worked my butt off to break into dev. I worked so hard that I burned out of corporate shortly thereafter. I was never cut out for that corporate enterprise life in the first place.

But since I started freelancing as a dev (also pretty much a failed enterprise at this point lol), I also dogfooded a lot of my own ops/“devops”/CI, and have been playing around with a bunch of those technologies a ton over the past 7 years. And it’s, yeah, not glamorous. There’s no intellectual payoff or creative reward. It’s just a chore. I wanna play with DSP and make lights go blinky with beautiful soundscape, not automate the build on every platform we can emulate. What a boring time-suck with no personal creative payoff! Ugh!

So yeah, developers are fussy about CI and ops if they’re not being paid. Myself included, and you probably won’t find any joy in it either. And I guess my aspiration is to help, here. I have written few notes about it in my work on HID over the past month which I intend to share on github soon. I have a bit of executive dysfunction, which is part of my struggle surviving in enterprise settings. I always go breadth-first – results-oriented middle managers hate it; I have a hard time controlling it. But given time and space to work, I have good things to contribute.

A lot of us are like that, and this work is not directly funded. As others have pointed out, we’re all working at our own expense based on passion. I’d love to see this work feed me – if I had a choice this is all I would spend my time on. But as it is, I have to get my power turned back on, and I don’t really have a budget to work out of a coffee shop. I have family providing my shelter, and I turn to my community for most of my daily needs. My access to food/medicine are spotty, the free healthcare isn’t that great, and life just takes a lot of work. I get maybe 3 good workdays a week for this kinda stuff, just due that overhead and the general state of my health at this point in my life.

On top of that, one of the reasons my freelance practice has struggled is that my main business partner’s grandparents fled the place where they’re using drones with recordings of women and children in distress to lure innocent civilians out into the open to be murdered, and we’ve been playing protest music about it in New Orleans. He’s a talented engineer and musician (and one of my favorite people) and he wants to join us here, but between the activism and just the time he needs to process his grief and horror, we haven’t had any viable work/play time since last summer.

Most others in our community who are not in my situation are probably trading a significant amount of their time and energy avoiding it, because safety/focus/security are super expensive in many parts of the world right now. Some powerful cultural forces are even directly antagonistic to many basic aspects of what we’re trying to do here. War cultures don’t want open, accessible technology.

So don’t take it personal. Just keep putting yourself out there. Keep sharing, learning, growing, and creating with us, and be understanding if you get friction. We’re the same type of person, or we wouldn’t even have met here. We’re all very interested in this work and in connecting with each other. The constraints we face are much bigger than the scope of our work, which is why I was soapboxing earlier in the thread about lightening up and just getting back to the play.

Learn about the CI, ask some questions, be patient and playful. I’ve been at this since 2015. Long games beat short ones. I hope that that feedback you got makes more sense now. I’m sure we’ll get to geek out on GitHub soon. Looking forward to it!

2 Likes

I can imagine compiling and compile time can be a hurdle to contribute.

I wonder if compiling with Zig can lighten the burden and make contributing more fun:

Zig still uses LLVM under the hood to compile C/C++ code, so no.

1 Like

You jump to conclusions a bit to soon I think. The advantages of Zig build system are elsewhere, all though they also plan to replace LLVM IIRC.

It might also solve the ‘supercollider standalone’ problems / requests. If the README just contained:

zig build run

to be able to (cross) compile it.

Ah, sorry, I misread, I thought you were only talking about compile times.

IME the hard part is getting all the dependencies. How would zig help you with that? The actual build process is pretty straightforward:

mkdir build
cd build
cmake ..
cmake --build .

But if you think that CMake could be reasonably replaced by zig, feel free to make a PoC :slight_smile:

It contains a package manager.

Nice! Now give it a shot :slight_smile:

Might try it with a more simple project (first).

That’s what I would recommend as well :smile:

It can cross compile to any supported platform (everything SuperCollider works on), and has it’s own simpler build system (but you need to know zig in order to make use of that).

I like Zig a lot, but it’s still in active development and a 1.0 is a long way off. Might be a dangerous dependency at this point.

3 Likes

I heard great things about zig, but yeah, that would have been my concern as well.

Generally, CMake is still the industry standard for C++, like it or not. Using zig to compile a C++ codebase would be quite a novelty. “When in Rome, do as the Romans do.”