If you want to develop software components targeting other developers and their projects, you should carefully decide what technologies would you develop for and support:
- High level technologies, e.g. .NET (WPF/Windows Forms/ASP .NET) or Angular.
Usually if you choose a low level technology you can always develop extensions for the high level technologies on top of your core components, but the core development will be hard and the target developers that choose high level technologies for their app may feel that you didn’t develop the component natively for their development choice.
If you choose high level technologies, you will need to design the component once but then implement everything in each of the selected technologies (you will also need to know well all of them). And unless you also decide to develop components also for low level technologies, developers that build apps directly using such core frameworks will be left out.
Personally, I now think that to answer correctly these three things matter the most:
- the type of components you want to build (although this doesn’t balance much to one side or the other);
- how much maintenance do you think it would be needed (but this is easily answered in most cases: a lot);
- surprisingly, or not, the development trends: simply determine how many target developers would you have for each selectable low level and/or high level technology you can consider (Google Trends is a service that can help you. Below is a chart with the trends for some of the technologies mentioned in the previous examples).