I have found that the interface of the OSL nodes has certain limitations. I think some of them could have a relatively easy solution. For example, change how vectors are displayed in the node. This simple change will improve the appearance of the larger nodes. Another aspect to improve is the interface for image files. Using a 'string' field allow to introducing typographical errors by the user. I think a PointerProperty to bpy.types.Image would be more convenient.
I hope these proposals make sense.
Main task list:
- Add code to processing the parameter metadata if exist.
- Define the correct node socket for a boolean case.
- Expand the code to processing the boolean socket value.
- Add the properly metadata for booleans and maybe also for labels, into the OSL shaders included with Cycles.