In the last two days I've been attending the community open day at Microsoft. One of the sessions was about cross-platform (I just abbreviate it x-plat) development. The session itself was fairly broad and only provided common knowledge. Nevertheless, the talk actually resulted in an interesting discussion. In this post I want to present the major views and my opinion related to the topic.
First of all we should distinguish between kinds of x-plat strategies. Do we want to program for a single form factor across platforms, or across form factors within the same platform? Or do we even want to go x-plat without obeying to the same form factor? For simplicity (and to stay coherent with the discussion after the formerly mentioned session) I will limit myself to the first scenario: Same form factor, but x-plat. The second scenario is conquered, e.g., via universal apps (in the Windows world; other platforms may offer other solutions). I am not aware of any available solution for the third scenario. I would argue that a combination of Apache Cordova together with nw.js would be the way to go here. At least this comes close to a proper solution.
Adjusting the look and feel is actually crucial. One of the most important aspects in going x-plat is the separation between layout and logic. The logic should be independent of the platform. The layout could be shared depending on the scenario, however, in general we have to respect the uniqueness of the platform. This comes with certain responsibilities. We should follow the design guide of a particular platform. We also should place animations and behaviors as usually used within a given system.
Should we worry about different layouts for different platforms? No, not at all. It will show our customers that we care. We care a lot. We respect every system, where we roll out our software. Is it always required to have different layouts? No, there are cases where a unified layout is sufficient or makes even more sense (e.g. games, which come with their own kind of behavior and layout anyway).
Choosing the right tool for the task is not trivial and highly project dependent. There is no absolute solution. The only thing we can do is discuss possible solutions and work out their advantages and disadvantages.