Hi Evgeny,

I guess it's not as much about the size of the community as it is about its composition. COS is not necessarily the kind of programming language/stack a start up is going to choose over JS/Ruby/Python/whatever is hip today. I assume (and it really is just an assumption) many companies are featuring business oriented development focusing on effecient database access and maintaining pretty old systems. Leaving little time/opportunity to try out new things and therefore contribute to the open source community.

I think if Intersystems wants to maintain COS as a viable language and not have every developer rather focus on Node and using Caché solely as a database system they are better off supporting open source efforts and making the language more appealing to younger developers.

Regarding your bullet points

1. Seeing how much of a difference even small contributions make in the COS world (vscode integration, json-output way before itw as implemented in the core language) I think many developers would benefit from even small tools/routines being open sourced.

2. github makes it incredibly easy. Convincing your boss that spending time on something someone else might get for free eventually is not that easy in a corporate environment.

3. As long as it is not using external functionality a simple xml import or install script should be viable.

Personally I really am looking forward to some new features and would like to contribute to projects.

Cheers!

A class method is what other languages usually call a static method. One that can be called even without an instance of that class existing.

Let's imagine you have a class Circle. It may have its own radius in a property

set myCircle = ##class(Circle).%New(25)

write myCircle.radius // 25

write myCircle.getArea() // the calculated area based on its own radius

But now you want to quickly calculate the area of a circle with radius 5, but you don't want to instantiate a new Circle object just for that. So you could have a ClassMethod inside the Circle Class that does that for you

write Circle.calcRadius(5)

You could also smash lots of utility functions as ClassMethods into a Utils class.