Advertisement
If you have a new account but are having problems posting or verifying your account, please email us on hello@boards.ie for help. Thanks :)
Hello all! Please ensure that you are posting a new thread or question in the appropriate forum. The Feedback forum is overwhelmed with questions that are having to be moved elsewhere. If you need help to verify your account contact hello@boards.ie
Hi there,
There is an issue with role permissions that is being worked on at the moment.
If you are having trouble with access or permissions on regional forums please post here to get access: https://www.boards.ie/discussion/2058365403/you-do-not-have-permission-for-that#latest

Decompiling .exe file

  • 15-01-2020 10:45pm
    #1
    Moderators, Computer Games Moderators, Social & Fun Moderators Posts: 81,083 Mod ✭✭✭✭


    Is there anyway to do this? I have a .exe file and I want to view the source code, its a console program, a theatre booking system, want to see the code, anyway to get at it?


Comments

  • Posts: 5,917 ✭✭✭ [Deleted User]


    Is there anyway to do this? I have a .exe file and I want to view the source code, its a console program, a theatre booking system, want to see the code, anyway to get at it?

    Might help, btw not a developer, just starting to look into reverse engineering from a security point of view.

    https://stackoverflow.com/questions/273145/is-it-possible-to-decompile-a-windows-exe-or-at-least-view-the-assembly


  • Registered Users, Registered Users 2 Posts: 1,681 ✭✭✭Apiarist


    Is there anyway to do this? I have a .exe file and I want to view the source code, its a console program, a theatre booking system, want to see the code, anyway to get at it?

    https://reverseengineering.stackexchange.com/questions/3748/converting-assembly-code-to-c

    Note:
    1) Normally, when the .exe is built, symbols are removed, so you won't see any function/variable names
    2) .exe can be dis-assembled, i.e. shown in the assembly code. A "decompiler" program can reconstruct the C code (or some other language) which provides same functionality.


  • Registered Users, Registered Users 2 Posts: 10,906 ✭✭✭✭28064212


    Is there anyway to do this? I have a .exe file and I want to view the source code, its a console program, a theatre booking system, want to see the code, anyway to get at it?
    You can't* go back to what the original source code was. Compilation doesn't work that way. You can possibly go back to a rough approximation, but it depends on how low-level the original language was. The first answer here gives some approaches: https://stackoverflow.com/questions/273145/is-it-possible-to-decompile-a-windows-exe-or-at-least-view-the-assembly

    * or at least it's very unlikely

    Boardsie Enhancement Suite - a browser extension to make using Boards on desktop a better experience (includes full-width display, keyboard shortcuts, dark mode, and more). Now available through your browser's extension store.

    Firefox: https://addons.mozilla.org/addon/boardsie-enhancement-suite/

    Chrome/Edge/Opera: https://chromewebstore.google.com/detail/boardsie-enhancement-suit/bbgnmnfagihoohjkofdnofcfmkpdmmce



  • Registered Users, Registered Users 2 Posts: 991 ✭✭✭TuringBot47


    Is there anyway to do this? I have a .exe file and I want to view the source code, its a console program, a theatre booking system, want to see the code, anyway to get at it?

    It's typically illegal to reverse engineer software.
    What are you trying to achieve ?

    I'm shocked that any booking system is a Windows EXE.
    They're typically web based and on Linux for stability/security.
    So that's a red flag already.

    If it's the client part of the system you could run a web proxy server to watch the http requests going to their server to get an idea of their web api.


  • Registered Users, Registered Users 2 Posts: 1,681 ✭✭✭Apiarist


    It's typically illegal to reverse engineer software.

    It is absolutely legal to dis-assemble software in a general case. If you rip the code and use it in your programs, then yes, that can be illegal.


  • Advertisement
  • Moderators, Business & Finance Moderators Posts: 10,611 Mod ✭✭✭✭Jim2007


    I'm shocked that any booking system is a Windows EXE.
    They're typically web based and on Linux for stability/security.
    So that's a red flag already.

    Apart from perhaps a lacking experience, why would you be shocked that booking systems are being run stably on Windows environments. There are plenty of books systems, airline booking systems, dealer trading systems, plant control systems etc running on Windows.

    This idea that any os is stable and secure just because of it's name is nonsense. It entirely depends on how it is configured and managed. Over 25 years working on trading systems I've had as much instability on Linux as Windows and if fact if you really want to do stability, then go for a mainframe, their up time usually beats both Windows and Linux.


  • Registered Users, Registered Users 2 Posts: 1,681 ✭✭✭Apiarist


    ...a theatre booking system....

    Just to preempt your next possible question. Check what data your application sends/receives over the network, for example
    https://www.jucktion.com/tech/windows-network-traffic-analysis-single-app/


  • Registered Users, Registered Users 2 Posts: 68 ✭✭Bigdig69


    You will not be able to extract the full source code from an exe file.

    Are you by any chance a student trying to get the solution to a class assignment?


  • Moderators, Computer Games Moderators, Social & Fun Moderators Posts: 81,083 Mod ✭✭✭✭Sephiroth_dude


    It's typically illegal to reverse engineer software.
    What are you trying to achieve ?

    I'm shocked that any booking system is a Windows EXE.
    They're typically web based and on Linux for stability/security.
    So that's a red flag already.

    If it's the client part of the system you could run a web proxy server to watch the http requests going to their server to get an idea of their web api.

    Not to be rude to you or anything but did you read my first post? I want to view the source to see how it works, It's a Console program, its not a real theatre booking program, it was something our lecturer made for us to test, we had to come up test cases and test the program, I'm interested in viewing the code that's all, nothing sinister going on here at all.


  • Registered Users, Registered Users 2 Posts: 991 ✭✭✭TuringBot47


    Not to be rude to you or anything but did you read my first post?

    Yep... nothing in it said it was written by a lecturer or that it was a college exercise. That would've completely framed the question.
    Jim2007 wrote: »
    Apart from perhaps a lacking experience, why would you be shocked that booking systems are being run stably on Windows environments.

    I'm basing it on 25+ years of enterprise level software development in a variety of sectors. Writing 80x86 assembly, C, C++ and writing my own Java disassembler from scratch just from reading the JVM specification.
    Jim2007 wrote: »
    This idea that any os is stable and secure just because of it's name is nonsense.

    I agree, Windows NT stood for "new technology" and was an incremental improvement on a badly designed single user operating system.
    Can't remember who said Windows was a collection of badly debugged drivers.
    It's been an incremental improvement in versions since.
    When a security issue comes out you often see that it applies all the way back to Windows versions 10 years ago or more.

    Unix/Linux was designed from the ground up as multi-user and multi-threaded.


  • Advertisement
  • Registered Users, Registered Users 2 Posts: 7,501 ✭✭✭BrokenArrows


    Is there anyway to do this? I have a .exe file and I want to view the source code, its a console program, a theatre booking system, want to see the code, anyway to get at it?

    The answer is....it depends.

    Some languages can be easily decompiled such as C#. Try https://www.jetbrains.com/decompiler/
    This will turn your program back to code, however it's rarely 100% perfect.

    Stuff like c++ is not easily decompiled and postless to attempt to bring it back to readable code.


  • Registered Users, Registered Users 2 Posts: 10,906 ✭✭✭✭28064212


    Not to be rude to you or anything but did you read my first post? I want to view the source to see how it works, It's a Console program, its not a real theatre booking program, it was something our lecturer made for us to test, we had to come up test cases and test the program, I'm interested in viewing the code that's all, nothing sinister going on here at all.
    The obvious answer then would be to ask your lecturer for the source code. But they're unlikely to give it to you until you've completed the assignment - testing something that you have the source code for is substantially different to something you don't.

    Say you know a given input is declared as a byte in the source code (assuming C# in this example). Obviously the first test case you're going to write is where that input is >255. You may not have thought of that if you don't have the source code. If the purpose of the assignment is to treat the program as a "black-box" then decompilation is against the spirit of the assignment

    Boardsie Enhancement Suite - a browser extension to make using Boards on desktop a better experience (includes full-width display, keyboard shortcuts, dark mode, and more). Now available through your browser's extension store.

    Firefox: https://addons.mozilla.org/addon/boardsie-enhancement-suite/

    Chrome/Edge/Opera: https://chromewebstore.google.com/detail/boardsie-enhancement-suit/bbgnmnfagihoohjkofdnofcfmkpdmmce



  • Moderators, Computer Games Moderators, Social & Fun Moderators Posts: 81,083 Mod ✭✭✭✭Sephiroth_dude


    28064212 wrote: »
    The obvious answer then would be to ask your lecturer for the source code. But they're unlikely to give it to you until you've completed the assignment - testing something that you have the source code for is substantially different to something you don't.

    Say you know a given input is declared as a byte in the source code (assuming C# in this example). Obviously the first test case you're going to write is where that input is >255. You may not have thought of that if you don't have the source code. If the purpose of the assignment is to treat the program as a "black-box" then decompilation is against the spirit of the assignment

    Ah I'm no longer on the course, this was given to us in 2018, I asked him but he wouldn't give me the code and I still have the program and came across it the other day and I'm still interested in seeing the source code, for a long time I assumed it was written in java as he thought us java but I think it may be written in c# or c++.


  • Registered Users, Registered Users 2 Posts: 9,560 ✭✭✭DublinWriter


    Any Wintel EXE/COM can be disassembled into assembly language...and best of Royal Irish luck with that!


  • Registered Users, Registered Users 2 Posts: 768 ✭✭✭14ned


    Is there anyway to do this? I have a .exe file and I want to view the source code, its a console program, a theatre booking system, want to see the code, anyway to get at it?

    If the original was C code, you can get a high quality reverse compilation using even open source tools such as http://boomerang.sourceforge.net/.

    If the original was C++ code, the industry standard tool is https://www.hex-rays.com/products/ida/. It is not cheap.

    If the original was .NET code or Java code, I'm not as familiar. But in general, both provide lots more metadata and a bytecode from which more can be inferred. There will be tooling which can produce reasonable quality decompilation.

    Also, I must reply to this other comment:
    I agree, Windows NT stood for "new technology" and was an incremental improvement on a badly designed single user operating system.
    Can't remember who said Windows was a collection of badly debugged drivers.
    It's been an incremental improvement in versions since.
    When a security issue comes out you often see that it applies all the way back to Windows versions 10 years ago or more.

    Unix/Linux was designed from the ground up as multi-user and multi-threaded.

    This is so badly untrue I felt an obligation to correct it. NT is in many ways a reboot of VMS, which itself was a reboot of Unix, which in the 1970s was considered too toy and immature for serious use, and indeed still was right up to the 2000s. VMS was always a multi-user, multi-process design, with a very very strong emphasis on security, far more than Unix ever attempted. NT was ground up built around threads, which was very novel at the time. Unix only gained partial and incomplete support for threads in the 2000s, and that support remains partial and incomplete.

    NT was designed and implemented by VMS engineers, and the NT kernel API and filesystem has much of the look and feel of the VMS kernel API and filesystem e.g. built-in file versioning, encryption and compression. NT implements everything VMS did, and then some again, in terms of built in security, multi user, multi process and multi thread. NT implements POSIX, and can emulate Unix. You can run unmodified Linux binaries today on Windows without issue, and that support for legacy Unix applications was designed into NT from the very beginning.

    NT is in almost all ways an intentional and deliberate improvement over Unix. It corrects all of the the-then known flaws in Unix in 1990-1995. Since then there has been divergence, and Linux/BSD/Mac OS have evolved faster than Windows, which has very significant legacy compatibility requirements. The same code base generally nowadays runs fastest on Linux, then Mac OS or BSD, then Windows.

    However Microsoft are not standing still. Where they don't have to worry about backwards compatibility, they usually have best in class performance. Their DAX implementation blows Linux's out of the water, for example. They're late to the party, but they do get there eventually. I'm currently discussing modernising their VM implementation with them to make it competitive, and they're very open to studying how Linux and BSD do things, and continuously improving Windows when they are allowed to do so.

    In terms of security history, it is the Win32 and OS/2 legacy stuff which has had by far the most problems. And unsurprisingly, most of that code was written quickly by inexperienced developers lacking much oversight.

    Not NT, whose security record I believe beats both Linux and Mac OS for kernel exploits, and has done so now for at least a decade according to the annual rankings. Good programmers, unsurprisingly, write good code, and most of NT was written by world famous engineers at the time.

    Niall


  • Registered Users, Registered Users 2 Posts: 991 ✭✭✭TuringBot47


    14ned wrote: »
    They're late to the party, but they do get there eventually.

    And after a lot of bad attempts and failures in every area.
    Vista, Internet Explorer....
    Sure one of the early versions of Windows didn't even come with a firewall, everything was exposed to the net. Steve Gibson from the Security Now podcast was able to browse peoples C$ drives.
    14ned wrote: »
    In terms of security history, it is the Win32 and OS/2 legacy stuff which has had by far the most problems. And unsurprisingly, most of that code was written quickly by inexperienced developers lacking much oversight.

    And that code is still there for backward compatibility.
    14ned wrote: »
    Not NT, whose security record I believe beats both Linux and Mac OS for kernel exploits, and has done so now for at least a decade according to the annual rankings. Good programmers, unsurprisingly, write good code, and most of NT was written by world famous engineers at the time.

    Well which one of those geniuses moved the GDI into the kernel ?
    Choosing video performance over security ?

    End result: Someone with a carefully crafted font file could exploit the O/S.

    And don't forget the Universal Plug and Play feature rolled out into Windows, they opened everyones machine wide open to the net with 3 exploits.

    https://www.grc.com/unpnp/unpnp.htm

    https://www.computerworld.com/article/3252823/why-linux-is-better-than-windows-or-macos-for-security.html

    https://www.itpro.co.uk/operating-systems/24841/windows-vs-linux-whats-the-best-operating-system/page/0/1

    Windows isn't open source either.
    Security by obscurity.

    While opening the Linux source code for security audits catches issues earlier with thousands of developers scanning the code.

    Also, Windows is bloated.
    Every single extra piece of code not required to run your application is an extra security vulnerability.

    While Linux can be configured to run headless with minimal extra applications or libraries.
    The Linux kernel is and always was better protected from rogue apps.

    Windows was always playing catch up to Unix/Linux.
    Whether it was networking, internet browsers, security, phone OS, etc.

    I've worked in the enterprise/Fintech industry for 20+ years, you just don't get serious companies running servers on Windows unless they have some horrible legacy app running on Sql Server or the like. They're so much of an exception they don't make Tier 1 support and have to pay for extra for their poor choices.


  • Registered Users, Registered Users 2 Posts: 768 ✭✭✭14ned


    Sure one of the early versions of Windows didn't even come with a firewall, everything was exposed to the net. Steve Gibson from the Security Now podcast was able to browse peoples C$ drives.

    You're conflating multiple things here: consumer vs server editions, DOS-Windows with NT-Windows.

    Windows Server has come with a firewall as long as I can remember. It wasn't turned on by default in the 3.5 and 4.0 days, but back then you didn't bind services to run on the public interface anyway, so little was exposed.

    In this Linux was and is no different. RHEL, which is the closest equivalent to Windows Server, roughly evolved at the same pace in terms of changing the defaults wrt firewalls and services. It was, and still is, assumed that if you place a server public on the internet, you know what you're doing.

    Consumer Windows is a whole different kettle of fish. They took a while to catch up with how people were connecting their PCs to the internet. Windows XP in its later service packs wasn't awful. Windows 8 onwards is best in class, even for very naive users.
    Well which one of those geniuses moved the GDI into the kernel ?
    Choosing video performance over security ?

    End result: Someone with a carefully crafted font file could exploit the O/S.

    That happened in NT 4, reputedly to get Doom to run well from within its 16 bit subsystem, which BillG had set as a requirement before release.

    From Windows 7 onwards, kernel GDI drivers were blacklisted. Graphics drivers run inside a sandbox, mainly because they are buggy. Windows 10 consumer retains some kernel GDI, again to make graphics go fast.

    You can also do headless Windows server installs.

    I'm not sure if I'm correct on this, but I believe they removed kernel GDI in Windows Server 2016 onwards. It was always an optional build configuration in Windows kernel whether to run graphics outside or inside the kernel. That's actually markedly better than the situation on Linux, and is more similar to FreeBSD where they also run the graphics drivers inside a sandbox within the kernel.
    While opening the Linux source code for security audits catches issues earlier with thousands of developers scanning the code.

    Also, Windows is bloated.
    Every single extra piece of code not required to run your application is an extra security vulnerability.

    While Linux can be configured to run headless with minimal extra applications or libraries.
    The Linux kernel is and always was better protected from rogue apps.

    Windows was always playing catch up to Unix/Linux.
    Whether it was networking, internet browsers, security, phone OS, etc.

    I think you're out of date here. They packed the kernel memory structures to fit NT onto a phone, and since then you can happily run Windows on a 256Mb RAM device. There are plenty of low end PC-in-a-stick with identical hardware running your choice of Windows or Linux. The belief that Windows consumes more resources than Linux hasn't been true in many years now.

    As I already mentioned, Linux and Mac OS regularly come far below Windows in annual kernel exploit rankings. That's been the case for a decade now. So you're out of date on that too.

    https://betanews.com/2015/02/22/os-x-ios-and-linux-have-more-vulnerabilities-than-windows/

    https://www.cybrnow.com/10-most-vulnerable-os-of-2017/
    I've worked in the enterprise/Fintech industry for 20+ years, you just don't get serious companies running servers on Windows unless they have some horrible legacy app running on Sql Server or the like. They're so much of an exception they don't make Tier 1 support and have to pay for extra for their poor choices.

    I too work in fintech, but directly for Wall Street. Most of the front line servers are on Linux. But that's much more about inspection and control than preference - you can tightly control and inspect the source code for schedulers and so on.

    A ton load of dev work still happens on Windows, and then testing and deployment is on Linux. There are plenty of back end servers running Windows, some of which is due to not being bothered to upgrade something working fine.

    Next edition of Windows they're shipping a copy of the Linux kernel inside the Windows kernel. That'll transform much. Lots of people will now do all the dev and testing on Windows, and only deploy onto real Linux.

    Niall


  • Registered Users, Registered Users 2 Posts: 991 ✭✭✭TuringBot47


    14ned wrote: »
    I think you're out of date here. They packed the kernel memory structures to fit NT onto a phone, and since then you can happily run Windows on a 256Mb RAM device.

    And it's been a complete failure.
    Windows phone market share is utterly dwarfed by Android and Apple.
    Why would people pay to use Windows when Linux is free.
    14ned wrote: »
    As I already mentioned, Linux and Mac OS regularly come far below Windows in annual kernel exploit rankings. That's been the case for a decade now. So you're out of date on that too.

    And as the comments on that article say, which version of the Linux kernel?
    Why split all the Windows versions apart?
    A lot of Windows vulnerabilities affect the entire lineage of versions, so which version of Windows is it reported against if it was introduced in an earlier version ?
    Why post something 5 years old ?

    https://www.cybrnow.com/10-most-vulnerable-os-of-2017/

    Here's a more recent article, still from Feb 2018.

    https://www.computerworld.com/article/3252823/why-linux-is-better-than-windows-or-macos-for-security.html
    14ned wrote: »
    A ton load of dev work still happens on Windows, and then testing and deployment is on Linux.

    Yep, you're making the point for me.
    Windows is consumer/office friendly, but not production friendly.
    14ned wrote: »
    There are plenty of back end servers running Windows, some of which is due to not being bothered to upgrade something working fine.

    Yep, I've heard of ATM machines and electronic billboards running Windows, and people taking photos of the BSOD on them.
    The fact that most people know what the blue screen of death is, is a testament to Windows fragility.
    14ned wrote: »
    Next edition of Windows they're shipping a copy of the Linux kernel inside the Windows kernel.

    Which screams of "If you can't beat them, join them".

    Some of the more progressive software development houses were issuing Apple Macs to developers. That must've spooked Microsoft.
    And you need Windows 10 professional edition to run Docker natively on Windows... not in Linux.

    Aside from all of that, Microsoft is a US company.
    It's hard to trust that the US government won't/hasn't compelled Microsoft to add backdoors, targeted poisoned Windows updates and tricks to infiltrate it's enemies.

    As Steve Gibson from the Security podcast said, he doesn't understand why foreign governments actually use Microsoft products.
    Much in the same way the US has blacklisted Huewei.
    Can't remember if it's China or Russia that has plans in progress to write their own OS.

    Closed source, old codebase, backward compatibility, US based and constantly adding new functionality is a recipe for a security disaster.

    If Windows was that secure why is there always a rake of bugs to fix every patch Tuesday ?


  • Registered Users, Registered Users 2 Posts: 9,560 ✭✭✭DublinWriter


    Microsoft has totally busted a nut in the server game. Even Novel had AD in the mid-90's, something Microsoft would take almost ten years to introduce.

    Microsoft are well on-target to become the modern equivalent of the Computer Associates or Oracle of the modern IT business. They've never innovated and have always had to buy in expertise from outside (Dave Cutler -> NT, Plato -> BI, Visio, FoxPro, Lead Architect of Borland Delphi -> C#, to name just a handful.

    And the architecture's horrible. ASP.Net is a mess, basic out-of-the-box transactioning in SQL Server knocks the whole database off-line, they've now got three self-competing products in their BI portfolio with Biztalk, SS*S and Power BI, Sharepoint is an almost un-upgradable pig of a system...and so it goes, not to mention the bloatware that is the current version of Visual Studio.

    I still think Microsoft will dominate the desktop, but with typical Microsoft forethought, this is the market that they've declared that the are abandoning with no new versions of Windows post V.10.


  • Registered Users, Registered Users 2 Posts: 768 ✭✭✭14ned


    And it's been a complete failure.
    Windows phone market share is utterly dwarfed by Android and Apple.
    Why would people pay to use Windows when Linux is free.

    The final generation of Windows Phone was pretty good. Funnily enough, I was literally the guy who wrote up the competitive analysis report for BlackBerry when WinPhone8 launched. Did a ton of statistical and reverse engineering analyses. I came away impressed with the engineering. I also enjoyed using the phone as my main driver for a few months, it was world's better than WinPhone7.

    Windows Phone and BB10 failure had nothing to do with cost. It's an open secret that both Microsoft and BlackBerry were paying manufacturers to install it, and paying app developers to write apps for the phone. It cost both companies billions of dollars.

    The failure was due to mobile phones being a natural duopoly: the premium and the budget spaces. There was only ever space for two, and two alone.
    Which screams of "If you can't beat them, join them".

    Both yes and no. By some measures, Linux now is a Microsoft product. They've been one of its biggest contributors for some years. This year they'll ship more Linux installs than anybody but Google in the form of Android (and Google intend to abandon Linux based Android in favour of Fuscia). Most new Microsoft software runs on both Linux and Windows now. Internally all their teams are being trained up on Linux. Very clearly, in the near future Microsoft will equal Linux, and Linux will equal Microsoft.

    I totally agree with the later point that Microsoft doesn't really innovate, it buys in innovation from outside. They identify what they want, and throw money at bringing it in house. They literally have done that with GitHub so they can see most open source being developed (and watch all the developers), and are bringing Linux in house as well. And that's a good thing, Linux is having money sprayed all over it as a result.

    Niall


  • Advertisement
  • Registered Users, Registered Users 2 Posts: 991 ✭✭✭TuringBot47


    14ned wrote: »
    By some measures, Linux now is a Microsoft product. They've been one of its biggest contributors for some years.

    Red Hat, Intel, Novel and IBM would beg to differ.
    They are much larger contributers.
    Microsoft only became the 5th biggest contributor last year.

    https://www.theinquirer.net/inquirer/news/2166123/microsoft-contributed-code-canonical-linux-2632

    So I can't believe the credit stealing statement above.
    You must have a fair few shares in Microsoft.


  • Registered Users, Registered Users 2 Posts: 768 ✭✭✭14ned


    Red Hat, Intel, Novel and IBM would beg to differ.
    They are much larger contributers.
    Microsoft only became the 5th biggest contributor last year.

    https://www.theinquirer.net/inquirer/news/2166123/microsoft-contributed-code-canonical-linux-2632

    That link of yours is very out of date, 2012. Microsoft are widely recognised as probably the current biggest single contributor to open source (https://www.techrepublic.com/article/microsoft-may-be-the-worlds-largest-open-source-contributor-but-developers-dont-yet-care/), much of which impacts Linux. Many of their contributions to open source projects, including the Linux kernel, are done using a gmail email address. Microsoft induce that practice to avoid patent grant IP issues which are required for contributions by corporations to some software licenced open source software. If people don't use a Microsoft email address, then it is hard to prove that the open source contributions legally involve Microsoft.

    Just to be clear, I am not suggesting that Microsoft condone that behaviour. But, equally, it is very hard to believe that hundreds of thousand of commits were written entirely on personal time outside of work.
    So I can't believe the credit stealing statement above.
    You must have a fair few shares in Microsoft.

    I divested all my shares in Microsoft in 2005. I divested all my investments in the tech industry Christmas 2018, as I mentioned on these very boards. I currently hold no investments whatsoever in the tech industry, nor plan to until after the current bubble bursts.

    I do however work closely with many Microsoft engineers in the kernel and C++ teams, and with some in senior Microsoft management. This is why I would be more up to date than most.

    For the record I also work closely with many Google, Apple, and Facebook engineers, and with some in their senior management as well. I've no special interest in Microsoft. They're just the ten tonne gorilla here, especially in C++.

    Niall


  • Registered Users, Registered Users 2 Posts: 991 ✭✭✭TuringBot47


    14ned wrote: »
    That link of yours is very out of date, 2012. Microsoft are widely recognised as probably the current biggest single contributor to open source

    Yeah, wrong link.
    I had two links open, this one is from July last year.

    https://www.ukfast.co.uk/microsoft-news/impressive-microsoft-contribution-to-linux-development.html

    Where Microsoft was only the fifth largest contributor last July.
    Even then, it only started contributing code because it was using GPL code for its Hyper-V driver. So it was caught ripping off code / violating licences.
    14ned wrote: »
    But, equally, it is very hard to believe that hundreds of thousand of commits were written entirely on personal time outside of work.

    Why not?
    That's what open source is.
    It certainly helps developers CV's and careers to be involved in such projects.
    Linux is seen as a fine example of a community project, while Microsoft is considered to have rather aggressive anti-competitive practices. It's nearly good vs evil.


  • Moderators, Technology & Internet Moderators Posts: 1,336 Mod ✭✭✭✭croo


    I always enjoy what you have to say Niall and usually find it very informative but like you I felt I had to comment
    14ned wrote: »
    This is so badly untrue I felt an obligation to correct it. NT is in many ways a reboot of VMS, which itself was a reboot of Unix, which in the 1970s was considered too toy and immature for serious useand, and indeed still was right up to the 2000s
    In the 80s & 90s I was developing business apps on mainframes and UNIX boxes. I used VMS rather developed on it. UNIX was far from being a toy then! I worked for numerous big computer manufacturers all across Euroope in that period and many (if not most) were using UNIX for the CAD/CAM & MRP applications.
    14ned wrote: »
    Unix only gained partial and incomplete support for threads in the 2000s, and that support remains partial and incomplete
    While it was not something I required in my line of work, I was developing on SOLARIS boxes for a while in the 90s and I'm pretty certain it had threading in then!? When you write of UNIX are you meaning Linux perhaps?

    I have heard that NT was based on VMS before - and I was only a really a user of VMS and Windows but as such I never really saw any real similiarities ... as a "user"! But you're probably speaking of deep in the kernel?

    To be honest, I never really took to windows myself, more because of the interface than anything else I guess... I always felt they tried so hard to make it easy to admin that those tasks outside of the most simple daily tasks were always hidden deep were they were hard to find. Or, maybe, I was just too set in my ways with SYS V UNIX. I do know that admins of Windows boxes regularly had scheduled Window server restarts - while I never heard of the same for UNIX boxes (or VMS... or obviously Mainframes).

    Finally, I can't help but think that these old OS arguments of Widows vs UNIX are of little relevance these days and the OS is of less importance now than ever before. Containers seems to be the way most business apps are being developed now... headless with a Web UI!

    ps.
    Linux now is a Microsoft product
    :D ah come on ... be serious! I have to agree with TuringBot47 on this point. And if MS are "doing good" now, it's only so they can screw us later. They must be neck and neck with Oracle for the company least likely to work in their customers interests!


  • Registered Users, Registered Users 2 Posts: 3,945 ✭✭✭Anima


    Interesting last few posts, well worth the read.

    On the surface it seems like MS has changed in the last few years. They've open sourced a lot of code and are contributing a lot to open source in general. Hard to imagine the old MS doing that.

    They have a lot of good products in fairness. C# is a much better language and framework than Java. I'd like to see it do better as time goes by. Windows 10 is pretty solid. Haven't had any issues in years and using the default firewall which seems to work no problems. I've recently started using Mac OS Catalina. It's a POS. Crashes and issues to no end. Plus any useful app costs money in the app store. Pass.

    They're all companies at the end of the day. None of them are working out of the goodness of their heart. I guess there is a long held dislike for MS though.


  • Registered Users, Registered Users 2 Posts: 768 ✭✭✭14ned


    croo wrote: »
    I always enjoy what you have to say Niall and usually find it very informative but like you I felt I had to comment

    In the 80s & 90s I was developing business apps on mainframes and UNIX boxes. I used VMS rather developed on it. UNIX was far from being a toy then! I worked for numerous big computer manufacturers all across Euroope in that period and many (if not most) were using UNIX for the CAD/CAM & MRP applications.

    It would depend on the customer. For many big orgs, Unix was considered too unserious compared to VMS, AS/400 and the like. NT was designed from the beginning to be considered a serious contender in that kind of market, and by some measures, they were successful. It didn't help that BSD, and all its derivatives, were caught up in legal problems.

    However once into the 2000s, the landscape changed. We were beginning to see the cloud appear in its modern form, and it became empirically proven that you could build ultra reliable infrastructure with Unix. Absolutely did Solaris and HPUX help with that, but to be honest Linux really proved it at scale: you could deploy millions of Linux servers, and the whole thing kept running reliably. As millions of Linux servers was an awful lot cheaper than a single VAX installation, the market began to shift.

    It helped greatly that the BSD legal issues got cleared up, and that the independent Austin Working Group had taken over driving forth Unix via POSIX, and thus creating a stable portable abstraction against which mainframe applications could be based. The AWG released its first POSIX edition in 1997, if I remember. It totally changed the debate, and that took effect entering the 2000s.
    croo wrote: »
    While it was not something I required in my line of work, I was developing on SOLARIS boxes for a while in the 90s and I'm pretty certain it had threading in then!? When you write of UNIX are you meaning Linux perhaps?

    You are correct that Solaris had, and still does, a much superior threading implementation to Linux. But all Unix has partial and incomplete support for threads - see https://wg21.link/P2069 which hopes to close one large gap.
    croo wrote: »
    I have heard that NT was based on VMS before - and I was only a really a user of VMS and Windows but as such I never really saw any real similiarities ... as a "user"! But you're probably speaking of deep in the kernel?

    It's more the design philosophy, the strong forward progress guarantees, the emphasis on reliability and security in API design. The featureset has much in common obviously, as does the scheduler. But really it's more about "feel".

    It's like how FreeBSD feels quite different to Linux. Linux cares about average performance above corner case performance, whereas FreeBSD like Windows cares much more about corner case performances, and will impair average performance to improve worst case scenarios. For example, file close performance is super quick on Linux, it does almost no work. But on Windows and BSD they barrier on the journal entry for the closed file's metadata to ensure the file can be wholly retrieved if sudden power loss occurs. That makes file close far slower.

    If I were building a reliable system which must not surprise anyone no matter the unexpected, I would choose Windows or BSD. But if I were building a system which must be maintained by an average sysadmin, I'd choose Linux.
    croo wrote: »
    To be honest, I never really took to windows myself, more because of the interface than anything else I guess... I always felt they tried so hard to make it easy to admin that those tasks outside of the most simple daily tasks were always hidden deep were they were hard to find. Or, maybe, I was just too set in my ways with SYS V UNIX. I do know that admins of Windows boxes regularly had scheduled Window server restarts - while I never heard of the same for UNIX boxes (or VMS... or obviously Mainframes).

    All that would have been true of the Windows from about ten years ago and older. Not so much recently. I was recently using a public facing Windows Server which had uptime exceeding five years, and I'm very sure it is actively maintained.
    croo wrote: »
    :D ah come on ... be serious! I have to agree with TuringBot47 on this point. And if MS are "doing good" now, it's only so they can screw us later. They must be neck and neck with Oracle for the company least likely to work in their customers interests!

    Microsoft are now an open source company, and because Linux is a major part of open source, that makes Linux very important to them. Important enough that they will shortly be the second largest and possibly the most important Linux vendor in the world, far larger than RedHat. This is why Canonical are being funded so lavishly by Microsoft, Ubuntu is the default distro they'll be shipping with all Windows, and Debian is thus getting sprinkled with cash. One would wonder if that is why RedHat felt a strong need to find a big sponsor in IBM, lest it get outfunded by Debian/Ubuntu/Microsoft.

    In terms of getting screwed, they will always act in their own interests, and if those suits yours, you'll be fine. Same as it always was. I personally speaking find it very poor that they appear to release so much open source by pretending to not come from Microsoft - I think it is against the spirit of open source, where if the license says you need to patent grant, then you should abide by those terms, not circumvent them with trickery.

    But sure, it could also be a lot worse. And I will say it's had great effects on internal morale in Microsoft. Those there are a bunch of happy workers nowadays, freely able to push commits where they see fit to github projects, and obviously enough with the metrics they glean from github commit patterns, they can hire some really great engineers which nobody else can spot easily.

    I just wish they're hire more folk remote, and I'd seriously consider joining them. I very nearly did last year, in fact, as one of their very few remote roles came up. I was unfortunately on the contract in Dublin at the time, so I missed it :(

    As for Oracle, they're an awful company to work for. Everyone I know working there hates the place, the culture, the codebase and their colleagues. It feels very similar to the Microsoft work culture from about 2010, when they were implementing rank-and-yank because that had just great effects on Enron after all.

    Niall


  • Moderators, Technology & Internet Moderators Posts: 1,336 Mod ✭✭✭✭croo


    14ned wrote: »
    For many big orgs, Unix was considered too unserious compared to VMS, AS/400 and the like. NT was designed from the beginning to be considered a serious contender in that kind of market
    And I always thought of AS/400 was for 'medium business' not the big players! The big companies were running VM (as in VM/CMS) & MVS on System/390 and it's like!
    14ned wrote: »
    It would depend on the customer.
    In '91 I was working at AT&T when they began migrating their production planning systems from an MVS based mainframe system to UNIX boxes. They were already using a combination of UNIX & VMS to develop & run their CAD/CAM systems. I was writing business apps and I didn't (still don't) consider myself a "software engineer" but their engineers developing the CAD systems all loved VMS!

    This is obviously long before NT, so I'm not saying they wouldn't have chosen that ... but UNIX was not, and was not considered, a toy prior to the 2000s! Perhaps in the 70s & early 80s. Other companies/sites I was at using UNIX in the 90s... Siemens, NEC, Intergraph, NCR, Mannesman Tally, DuPont... and many more. So not small players by any means.

    thanks for the link! I've not even seen any c/c++ work since the late 90s so I'll have to take some time as it will require some study on my part. :)


  • Registered Users, Registered Users 2 Posts: 991 ✭✭✭TuringBot47


    14ned wrote: »
    Important enough that they will shortly be the second largest and possibly the most important Linux vendor in the world, far larger than RedHat.

    You really have to qualify that statement.

    What do you mean by vendor?
    That they run Linux on Azure ?

    They would still be dwarfed by Amazon for linux use.

    This link shows that Microsoft deceptively bundles all their figures into one big "cloud" segment.

    https://www.parkmycloud.com/blog/aws-vs-azure-vs-google-cloud-market-share/
    While Amazon breaks out revenue from AWS separately, Microsoft has a more nebulous “commercial cloud business” – which includes not only Azure, but Office 365, Dynamics 365, and other segments of the Productivity and Business Processes Division. This fact frustrates many pundits as it simply can’t be compared directly to AWS, and inevitably raises eyebrows about how Azure is really doing

    So I think you're falling for misleading marketing.


    Either way, you were originally arguing that Windows is better and more secure than Linux and are now trying to prove that Microsoft are abandoning it's own software in favour of Linux. A sign even they admit it's superior.


  • Registered Users, Registered Users 2 Posts: 768 ✭✭✭14ned


    croo wrote: »
    And I always thought of AS/400 was for 'medium business' not the big players! The big companies were running VM (as in VM/CMS) & MVS on System/390 and it's like!

    When I wrote AS/400, I really meant to write System/390. Sorry.
    croo wrote: »
    In '91 I was working at AT&T when they began migrating their production planning systems from an MVS based mainframe system to UNIX boxes. They were already using a combination of UNIX & VMS to develop & run their CAD/CAM systems. I was writing business apps and I didn't (still don't) consider myself a "software engineer" but their engineers developing the CAD systems all loved VMS!

    AT&T were always ahead of the curve, in their own way. They were also the cause of the legal problems for BSD and Unix, so they were uniquely friendly to Unix, compared to other big orgs.
    croo wrote: »
    This is obviously long before NT, so I'm not saying they wouldn't have chosen that ... but UNIX was not, and was not considered, a toy prior to the 2000s! Perhaps in the 70s & early 80s. Other companies/sites I was at using UNIX in the 90s... Siemens, NEC, Intergraph, NCR, Mannesman Tally, DuPont... and many more. So not small players by any means.

    It really does depend on the customer. For the EuroFighter project back in late 90s and 2000s, Unix and any implementation of it was explicitly barred. There was a whitelist of operating systems, and none of them bar one even supported ANSI C, they were all still on K&R! As the i/o interface came with a binary blob of a C API, this was rather limiting.

    The one whitelisted ANSI C supporting platform was Windows NT, specifically NT 3.5. So we chose that. We were allowed to move to NT 4.0 during my time there, and that was what was shipped, to my knowledge.

    We used Linux for various support stuff, stuff away from the core system where the whitelist didn't apply. At lots of stuff Linux was just better, but also it was much more convenient because we didn't have to go through procurement to get copies.
    croo wrote: »
    thanks for the link! I've not even seen any c/c++ work since the late 90s so I'll have to take some time as it will require some study on my part. :)

    That paper has been sent to ISO WG21, ISO WG14 (C), the Austin Working Group (POSIX), and Microsoft. It is hopefully therefore very portable to everybody. It's been two years in the making, and it is believed that all four parties can cooperate to deliver actually useful threadsafe portable signals after a mere forty years of the current state of things!

    Niall


  • Advertisement
  • Moderators, Technology & Internet Moderators Posts: 1,336 Mod ✭✭✭✭croo


    ...Microsoft are abandoning it's own software in favour of Linux. A sign even they admit it's superior.
    I don't think @14ned is saying they'll replace the windows kernel but rather is refering to the news that furture windows releases will include its own Linux kernel.
    May 6th, 2019

    Beginning with Windows Insiders builds this Summer, we will include an in-house custom-built Linux kernel to underpin the newest version of the Windows Subsystem for Linux (WSL). This marks the first time that the Linux kernel will be included as a component in Windows. This is an exciting day for all of us on the Linux team at Microsoft and we are thrilled to be able to tell you a little bit about it.
    Since every windows install will also be a Linux install they will/may become the biggest Linux distributor. Of course these will not be distributions of a typical GNU/Linux so it will make a nonsense of the numbers - that might be part of the business strategy nehind the decision!? ;)


  • Registered Users, Registered Users 2 Posts: 768 ✭✭✭14ned


    croo wrote: »
    Since every windows install will also be a Linux install they will/may become the biggest Linux distributor. Of course these will not be distributions of a typical GNU/Linux so it will make a nonsense of the numbers - that might be part of the business strategy nehind the decision!? ;)

    It's more like a hypervisor running many, arbitrary, VM containers.

    The default distro will be Ubuntu, and Microsoft pay Canonical specifically for Linux-on-Windows support. But you can install any other distro you like such as CentOS or RHEL, it's just a plain Linux kernel, indeed you can go build it yourself using https://github.com/microsoft/WSL2-Linux-Kernel.

    Windows and Linux talk to one another via https://en.wikipedia.org/wiki/9P_(protocol), so Windows can see all the files in your Linux, and vice versa. Different Linux distros can also see one another, so your Ubuntu-on-Windows can also see your RHEL-on-Windows.

    Something perhaps not widely appreciately is just how deep this integration is. This brings goodies such as ZFS to Windows, because you can load in the ZFS modules into your Linux kernel, and then now you have ZFS on Windows. Same goes for everything else on Linux e.g. you can now do Linux device driver development on Windows, and indeed from Microsoft Visual Studio which can already directly use cmake, make, GCC and GDB. They intend that Visual Studio will become the only IDE that you ever need to use.

    Where they are heading is that the single best place to do anything on Linux will be on Windows. They have publicly stated that they intend for people to put Linux servers into production which are running Windows, so anywhere where you might have a Linux hypervisor serving out many Linux VMs, you might instead have a Windows hypervisor serving out many Linux or Windows VMs. All running at full, native, speed.

    One can have whatever feelings you like about Microsoft, but everybody would have to admit that the engineering, and chutzpah, is impressive.

    Niall


Advertisement