CaptainSifff / paper_teaching-learning-RSE

The teachingRSE project: "Teaching and Learning Research Software Engineering"
Creative Commons Attribution 4.0 International
23 stars 20 forks source link

Add frameworks as opposed to libraries #270

Open jpthiele opened 1 week ago

jpthiele commented 1 week ago

After discussions at Dagstuhl with Heidi Seibold and Bernhard Rumpe I read the LIBS skill again and we should discuss reworking it in some sense.

First a quick differentiation:

Especially when designing tools and methods with a specific purpose that require very little programming knowledge from a user frameworks should play an important role and RSEs should at least know the distinction.

jpthiele commented 1 week ago

I think with a little rephrasing it still fits very well into the LIBS skill.

MakisH commented 1 week ago

In my mind, a library is always something reusable that you load into your program, but in the end you write your program in any way you want, and end up with a binary that you control how it is produced.

In a framework (again according to my understanding), you always end up fitting some of your code inside someone else's code, ending up with an executable binary that is produced as the framework defines.

This distinction between the "who controls how the entry-point executable is produced" could help formalize the definition, right?

jpthiele commented 1 week ago

Both library and framework have very clear as distinguished definitions in SE already and we should not try to define our own as that only adds confusion. But the definition fits very well with your understanding :)

Yes the entry-point might be a good way to explain it. The question is how we want to distinguish between the two and if they fit into one skill.

mhagdorn commented 1 week ago

Do we need this much detail? Couldn't we just say

encompasses handling/documenting dependencies with other packages. libraries or frameworks.

jpthiele commented 1 week ago

Do we need this much detail? Couldn't we just say

encompasses handling/documenting dependencies with other packages. libraries or frameworks.

A framework is difficult to integrate as it is not aimed at that, so I would leave that sentence as is.

jpthiele commented 1 week ago

After reading it again, the main goal of the skill was to build something that can be distributed, which would also include packages (so something a package manager like apt, yum, dnf, pip, etc.) could consume. Interestingly, we only mention packages in the 'what do people need to know' part.

I added a first draft but I would also add a sentence about knowing how to package software (if needed in the community).

All in all I think we should maybe rename the skill to `Building distributable software (DIST)'?