Best practices for creating OH2 version of an OH1 binding

Are there some best practices (do’s & don’ts) when you want to migrate an existing binding to OH2? With migrate I mean adding Thing support etc, using new ESH features. Not just making them installable and using the compatability layer. As an example, I might one day want to turn the Plugwise Binding into a real OH2 binding. Maybe there is a topic/page that already covers this subject, though I could not find it.

Typically you can reuse a lot of code from the existing binding. For the Plugwise Binding all the protocol related objects can probably reused. Should I just copy/paste them into the new OH2 project? As a result the history of the code would get lost and fixing issues in both projects is of course a burden. That could be resolved for instance by extracting most of the binding logic from OH1 into some kind of reusable library (that can even be used outside of OH). This would turn the OH binding just into a wrapper of the library. If I recall correctly, such bindings already exist (Logitech Harmony). Working as one community and applying standards on such a library may become difficult though.

Some of the features/bindings are developed as a WIP PR. I.e. they are unfinished and may not be mergable soon. Does that have added value besides the discoverability that someone is already working on something? I can also imagine that when this grows out of proportion the whole PR page becomes unusable. Though this can also be made workable again by using tags and filters.