Hello,
We are doing a research about how to help new developers understanding configurable/variable features in OSS developed with C-preprocessor (i.e. ifdef blocks).
Many researches proved that some features are scattered through many files and this situation hinders feature comprehension because is difficult to developers to know from where they should start.
We plan to mitigate this problem adapting the concept of key classes: “Usually, the most important concepts of a system are implemented by very few key classes which can be characterized by the specific properties. These classes, which we refer to as key classes, manage many other classes or use them in order to implement their functionality. The key classes are tightly coupled with other parts of the system”. We think we can move this concept to “key ifdef blocks”. Our theory is that the most important concepts of a feature are implemented by few ifdef blocks. Therefore, if we can give developers a good starting point (i.e. a key ifdef block) for understanding a concrete feature, (s)he would be able to comprehend the feature faster. So, we aim at identifying those ifdef blocks that are central for understanding the feature using different kind of measurements.
In order to validate this theory, first, we need to identify those blocks with expert-base opinion to then, compare these blocks with those obtained from the results of our measurements. However, we are not expert on Marlin so we are not able to identify which would be the key ifdef blocks for some features. We would be very grateful if the community can tell us which are the most important ifdef blocks (if they exists) for the following features:
• ADVANCED_PAUSE_FEATURE
• NOZZLE_PARK_FEATURE
• NOZZLE_CLEAN_FEATURE
• HOST_KEEPALIVE_FEATURE
• HAS_TEMP_SENSOR
• HAS_BED_PROBE
With a couple of blocks per feature would be enough.
Thank you in advance!
Raul Medeiros
We are doing a research about how to help new developers understanding configurable/variable features in OSS developed with C-preprocessor (i.e. ifdef blocks).
Many researches proved that some features are scattered through many files and this situation hinders feature comprehension because is difficult to developers to know from where they should start.
We plan to mitigate this problem adapting the concept of key classes: “Usually, the most important concepts of a system are implemented by very few key classes which can be characterized by the specific properties. These classes, which we refer to as key classes, manage many other classes or use them in order to implement their functionality. The key classes are tightly coupled with other parts of the system”. We think we can move this concept to “key ifdef blocks”. Our theory is that the most important concepts of a feature are implemented by few ifdef blocks. Therefore, if we can give developers a good starting point (i.e. a key ifdef block) for understanding a concrete feature, (s)he would be able to comprehend the feature faster. So, we aim at identifying those ifdef blocks that are central for understanding the feature using different kind of measurements.
In order to validate this theory, first, we need to identify those blocks with expert-base opinion to then, compare these blocks with those obtained from the results of our measurements. However, we are not expert on Marlin so we are not able to identify which would be the key ifdef blocks for some features. We would be very grateful if the community can tell us which are the most important ifdef blocks (if they exists) for the following features:
• ADVANCED_PAUSE_FEATURE
• NOZZLE_PARK_FEATURE
• NOZZLE_CLEAN_FEATURE
• HOST_KEEPALIVE_FEATURE
• HAS_TEMP_SENSOR
• HAS_BED_PROBE
With a couple of blocks per feature would be enough.
Thank you in advance!
Raul Medeiros