I honestly was surprised when I first read that some people wanted to trim the core.
So a few question and remarks about this :
Establishing the reason why we’d like to reduce the core is important. What is it ?
Is is to ease the dev’s work? To get better technical performances? Have a more readable documentation? Dev’s OCD about optimisation ?
EDIT : I’m sorry for this reference to the OCD, and would like to apologize to anyone who might have been hurt by the reference. This wasn’t what I intended. I recognize OCD as a serious condition, and by no mean would I make fun of anybody suffering from this.
How do we include new users perspective in our discussions?
Most of the people I see discussing those issues are ‘power users’. Students I’m occasionally teaching SuperCollider often have trouble getting into it, and they’d never subscribe to this forum. Still, I’d say that changes made to SC should be done in their favor first, not towards people who already know how to hack this or that, but would like an easier way to do something (in case a change would create a conflict between power users and beginners).
Directly related to the previous point : why is it a bad thing to have too many ways to do something?
SC was the first ‘complicated’ language I learnt (compared to Sonic Pi or Processing, which have rather small libraries). So I’ve done things ‘wrong’ because there was a suboptimal way to do what I was doing. Several times, I realised I was going into the wrong direction, had to rewrite everything from scratch. But I’ve done things. The suboptimal approach suited my knowledge at that moment in time, and got me to design what I had in mind. I think this is a good thing.
What does vanilla mean?
At the restaurant, you got a ‘Mc Deluxe Bacon 3000’, but in the kitchen, they prepared a ‘burger’. I think we can split the core with the package manager and have a complicated way to load modules and everything, but that when you download SC for the first time, you don’t have to be aware that you’re in fact downloading a puzzle software. It’s called ‘SuperCollider 3.14’, it contains a lot of modules you’re not going to use, but if you try using them, they’re ready. And if you want to only use this or that, you can later on desinstall them or restrict them. So you download ‘extended’ by default, and if needed, you can get back to ‘vanilla’?
One good practical example : QTCollider
I use this extensively. I love the synthesis part of SC, but when it comes to real time music, my brain is too small and my fingers too big to do proper livecoding. So I click things. I think QTCollider is obviously out of the core (SCLang).
And still, it’s a desirable feature for art students, projects with graphic designers, ‘easy-to-use’ tools creation, etc. I think this is out of the ‘core’, but present in the default install?
Funny enough, QTCollider relies on Primitives. Some pure SCLang classes might be kept in core while ‘lower’ functionalities are kicked out. What a headache!
I’m currently working on a Quark that proposes new Views. Everything inherits from UserView. That means it will take this form : ‘Quark depends on QTCollider depends on Core’. Do we already have multiple ‘layers’ dependency already, or do we only have ‘Quark depends on Core’ for now?