📜 ⬆️ ⬇️

Developers and Microsoft: Views for the Future

It is pretty obvious that Windows is used by a large number of people, and that all of them need the system to perform various tasks: from creating a corporate server and installing on POS terminals to using it on a home computer, and not only for that. Many people understand that when Microsoft updates Windows, it has to make many compromise decisions to ensure the correct operation of its operating system. There is, however, another type of compromise, the existence of which many people, even if they call themselves advanced users or administrators, do not even realize. This is a conflict between developers / programmers and Microsoft itself.


Developers usually call people who write applications for users, and Microsoft develops an operating system on which these applications will later work. The point of contact is the desire to ensure the stable operation of the applications written earlier on the new OS. Users use Windows not for the sake of Windows itself, but for the sake of the applications they need for it. Developers are often limited in the amount of working time and resources, and the need to constantly change something in their program due to the constantly changing API / ABI will cause them only irritation. Worse, if any APIs are completely excluded from the OS, the developer will have to almost completely rewrite his application. However, it should be said that in the Windows world such things occur less frequently than in the open source world, but even there it is an extremely rare event, because in this case there is a risk that people developing this platform can simply turn away from it. In addition, the developers want the software platform used by them to be constantly updated, new features added and errors removed, which undoubtedly aims at simplifying both work with it and programming for it. Contrary to what many users might think, software platform developers want to continue supporting their customers and users and want to add new features while maintaining the functionality of existing ones. This is a rather difficult task, however, once the framework or platform becomes obsolete, it can be quite difficult to use it without updating it, since it simply will not be able to perform some new tasks.


')
However, sometimes there is a need to make fundamental changes to the platform, since so many crutches and architectural problems accumulate in it that its support and improvement will be given to its developers by an exorbitantly high price. Windows developers know this very well, since the win32 API was created many years ago. Initially, the win32 API was 16-bit, and was later expanded to support 64-bit platforms. In many places, it is rather cumbersome and inefficient, and often simply extremely, extremely redundant, and with an increased emphasis on using C ++ for development, the C-oriented win32 API is becoming more and more obsolete every year. The Microsoft Foundation Classes library was an attempt by Microsoft to provide an API for C ++ for the underlying win32 platform, but it also fell victim to the redundancy problem and gained notoriety due to lack of flexibility in cases where someone tried to do something that was clearly she is not supported. There were a lot of people among the Windows developers who were dissatisfied with the current state of affairs and spoke of the need to get out of this situation, however painful it would be. Microsoft decided to use the .NET environment for this and updated the WinForms platform to facilitate the work of the developers. However, the .NET platform is a runtime environment, and although it has gained widespread popularity, it is still not suitable for use by developers writing native Windows applications. Some time later, Microsoft releases a library called the Windows Template Library, designed to abstract from some of the most annoying aspects of the Win32 API, while far more lightweight and flexible than MFC. Many people fell in love with WTL and it became clear to them that this is exactly the approach to programming that should be used in Windows as a de facto standard, but another prospect emerged, which eventually killed this opportunity.

The problem that Microsoft faced is not only connected with the cumbersome and awkwardness of the win32 API. Low-level systems have also been designed for a very, very long time and practically do not meet modern requirements. The Windows graphics engine was written back in the days when the main processor for graphics rendering was the central processing unit. However, over the past few years, graphics processors have become much more powerful and it has become much more convenient to interact with them, but the Windows graphics engine simply did not know how to work with them. The choice was obvious, but not as simple as it seems at first glance. Microsoft can develop a completely new graphics engine and create a new API on top of it, which will undoubtedly make programming and using the system more convenient. At the same time, they definitely need to maintain compatibility with existing frameworks and applications, otherwise users simply will not see the point in buying a new version of Windows. The first step in this direction was Windows Vista, which is rightly or unfairly many people remember as a fierce resource eater, and even suffering from incompatibility with many applications. These changes, however, were necessary because Microsoft needed some foundation that would give developers easy access to the ever-growing power of graphics processors. Forcing developers to write applications using Direct3D would be superfluous, especially when it comes to trying to use Direct3D to write 2D applications, as this will make it necessary for them to write a large amount of redundant code.



Microsoft is not yet ready to create a new API, and instead it blamed on the developers of Windows Presentation Foundation, Silverlight, and XNA. The .NET Framework users were delighted, because all these three tools were pretty good. Although WPF suffered from some serious performance issues due to architectural design flaws, Microsoft gradually improved the underlying system. Silverlight has gained quite a lot of popularity among corporate intranet applications, thus creating an entire mini-industry in the IT world. All of this, together, probably helped to increase the attractiveness of Windows-based servers, and this is exactly what Microsoft has always wanted to achieve in its attempts to press Linux in server environments. Previously, many companies used Windows-based servers primarily for Active Directory; at the present time, they have more reason to take web hosting running Windows Server more seriously. On the other hand, XNA offers a very good level of abstraction from the rather complex and redundant Direct3D API, thereby allowing the developers of the application being created to tap into the power of the graphics processors without undue difficulty. Microsoft also offers some concessions aimed at attracting independent game developers to the Xbox Live Arcade service, but in order to set up the game on the Marketplace, the developer still needs a privileged account. All this was done to create a community of XNA-developers who could later fill the store created and controlled by Microsoft. It seems that this was the biggest mistake Microsoft ever made, but we'll talk about that a little later.



Again, all of these improvements were designed for .NET application developers, causing discontent and frustration for native application developers. They also wanted to be able to effortlessly use all the advantages of more powerful equipment, and this concerns not only the use of a graphics processor, but also work with an increased number of processor cores, but none of the existing options provided such simplicity and friendliness to the developer as tools .NET developers. It is worth saying, however, that along with the release of Windows 7, Microsoft released Direct2D, which is a new system API, which added new features to the OS to render 2D graphics, which are fully implemented by means of a graphics processor, but do not require direct interaction with the GPU itself. ; In addition, Microsoft has offered developers tools designed to facilitate the work with multi-threaded applications. The potential of Direct2D was obvious to many, including game developers, especially given the fact that in the future its functions will only improve. For the first time after all the disappointments that third-party developers had to experience in the time elapsed from the release of Windows XP to the release of Vista, and then from Vista itself, the future began to look promising. And then things took a rather strange turn.



Many people remember that this happened at a time when Apple, with their combination of iPad / iPhone and AppStore, gained immense popularity. Microsoft executives probably noticed this popularity, as well as Apple’s related revenues, and wanted to repeat this success. In preparation for the conquest of the market, however, they made some rather strange decisions. First of all, you should always keep in mind that the success of the AppStore or any other application store depends primarily on the number of developers creating applications for it. Both Google and Microsoft understood this perfectly, and both of these companies tried to lure developers by offering them easy-to-use, but powerful and flexible APIs and good support for software tools. Microsoft, as well as always, is strong in supporting development tools, this will confirm anyone who had to use Visual Studio. Microsoft has even made some strides in order to make the XNA platform suitable for developing applications for its phones. And then, by introducing the Metro / Modern API to the public, Microsoft actually showed the middle finger of most of its developer community.



The biggest losses were the Silverlight and XNA platforms, which Microsoft actually donated to developers using the Modern API for Windows 8. The problem here, however, is that the scope of Silverlight does not match the scope of Modern. Silverlight is essentially a browser plugin designed to run web applications, while Modern is designed for OS applications. In addition, they do not correspond to the deployment scenarios. Silverlight is mainly located on the web server, and Modern applications are available for download only from Microsoft’s own digital store. Corporate clients, as well as the developers of their applications, certainly did not get excited about this decision. With just one blow, Microsoft managed to not only reduce the value of Windows-based servers as Web sites, but also almost completely discourage the desire to switch to Windows 8 from its corporate users. The strangest thing about this is that the Silverlight developers are clearly not the kind of people who can just pick up and start writing applications for the digital store. Their use of Silverlight simply does not fit into the development framework for Modern applications. Microsoft’s position on this (apart from, of course, simply ignoring complaints) was simply to suggest these people to use HTML5. Again, this is by no means the smartest answer, because Silverlight developers do not create websites in the conventional sense of the word, but most often create a set of business applications that, as it happens, are deployed on a web server. Often, these business applications are quite complex, and their developers chose Silverlight precisely because it offers many tools to simplify the work of the developer. Despite the promotion of HTML5 in various areas of activity, HTML5 and AJAX are still not as suitable for these purposes as Silverlight, and their use will inevitably lead to an increase in development time and reduced developer productivity. Why all this was needed Microsoft is still not clear. Perhaps this was the decision to unify the development by introducing a single API, but the “all-in-one” paradigm never worked on software development before, and it does not look like it will work in the near future.



Members of the XNA community are exactly the people who could easily switch to using the app store, but Microsoft has done them even more damage. Their treatment of developers of independent games on XBLA was truly inhuman, for example, the people who run Xbox Live seemed to be doing everything possible to maximize Microsoft’s revenues, even to the detriment of relations with the developer community. In principle, this may make sense, since the entertainment division of Microsoft has suffered losses for many years, but in the long run they have seriously undermined the early enthusiasm of people about XNA and the entire Microsoft ecosystem. And then Microsoft refuses XNA, again in favor of Modern, and again does not provide any procedures for migration / transition to it. And this whistle takes place on many levels, for example, .NET application developers have suddenly lost direct access to working with the graphics processor. This creates the opposite situation in comparison with previous iterations, when .NET developers were the first to receive many brilliant new toys, while native developers were forced to be content with broken old ones. However, in exactly the same way as developers of native applications often couldn’t or didn’t want to switch to the development of programs for .NET, .NET developers couldn’t or didn’t want to switch to the development of native applications. This new asymmetry may threaten Microsoft even more, since third-party developers were able to implement their own version of Microsoft’s .NET environment and called it Mono. Also, independent developers have announced a project to create a framework that is fully API-compatible with XNA, which allows members of the XNA community simply to completely abandon the use of the Microsoft ecosystem. In addition, Sony has released its own SDK, designed to write applications in C #. With one blow, Microsoft actually killed a significant part of its developer community, and this was the part that was most likely capable and ready to develop for their digital app store.

And what about native developers? As a result, they certainly got a new API, relatively modern and quite powerful, especially when compared to win32. And yet many of us still scratch our heads. Many of us were computer application developers, while we simply enjoyed the flexibility of the operating system. And suddenly, Microsoft introduces restrictions for programs written on the new API, and it becomes quite obvious that they developed this new API not at all for desktop applications, but for tablets and phones. And we just took and sent them to hell.

Microsoft has set a strategic goal: to move to the ecosystem of phones and tablets. They clearly understood that in order to achieve this goal, they need applications, as well as developers, who will write them. As a result, tremendous efforts were spent on creating tools for third-party developers. True, at that time they lost a significant part of these same developers, who either were not satisfied with their decision to refuse further support of the platform they used and the disrespect they actually showed, or were dissatisfied that they were forced to write applications for phones and tablets by displaying artificial constraints. Microsoft seems to have staked on the fact that their ecosystem will attract enough new developers, and they may not notice the inevitable discontent of the "old". Do they lose much at the same time? Maybe not ... On the other hand, the loss of entire communities of developers, such as what they did with XNA, is likely to have long-term strategic implications. These were the people who could possibly lead the Microsoft application store to great success, since they could create high-quality applications and games. They will remember for a long time how Microsoft dealt with them, and of course whisper about it to other independent developers who need Microsoft so much. Whether Microsoft shareholders are wise enough to understand the consequences of all this is a completely different question.



In the end, it all comes down to the fact that Microsoft actually reworked the entire system completely, which is what many developers wanted. But how they did it is more like an attempt to completely abandon the desktop operating system, instead of giving developers new and more advanced tools so that they can continue to develop desktop applications. This was not at all what the developers had requested so much, and now Microsoft is trying to rectify the situation. The question here is whether Microsoft will be willing to go far enough and provide application developers with the tools they need, or are they so determined to develop their store that they are ready to refuse all those who disagree to place their applications in their developer store, or their store will be a huge success in selling “classic” computer applications ... But Microsoft doesn’t really understand that there are not too many programs that ordinary users use They are used in their daily work, which means that the number of applications that are necessary to reach the saturation point of their store is not that large. Much more applications are focused or specialized for a task, the requirements of which are either not compatible with the restrictions of the Modern API, or do not fit into the application store model at all. Based on this, we can conclude that Microsoft is primarily interested in games, but it has already spoiled relations with the community of independent game developers, which, as I said, can have serious consequences for Microsoft in the long run, and the store needs to be filled in anyway . They also did not do very well with the developers of ordinary applications, and these are the very people who made Windows widespread as a platform for workstations, development, and creativity. It will certainly be interesting to see if Microsoft executives can show enough flexibility and realize this, or are they absolutely sure that they will be able to build a successful platform in the long run, breaking everything that is possible and concentrating on short-term revenue growth that so temptingly offers own digital store model.

Translation: © evilslon
UPD Added a thematic picture “DOM, which Bill built.”

Source: https://habr.com/ru/post/183262/


All Articles