Announcement 1.13, debug symbols and the Titanic

Discussion in 'News' started by dktapps, Sep 4, 2019.

  1. dktapps

    dktapps Administrator Staff Member PMMP Team

    Messages:
    751
    GitHub:
    dktapps
    Recently there's been a lot of drama going around about the removal of debugging symbols from a recent 1.13 beta.

    So what are debugging symbols?
    For the non-technical user, consider these as an essential tool on which every bit of server and mod development has relied on for the last 7 years.

    For the more technical user, debugging symbols are names of artifacts located within an executable or library. Such things enable us to find the names of functions, constants and more within the Minecraft binary. These debugging symbols are not necessary for a binary to be executable, but they are critically useful for reverse engineers.

    Why is it such a big problem that these debugging symbols have been removed?
    The removal of these symbols is a very big problem for server development, because reverse engineering the protocol involves taking apart the Minecraft binary in reverse engineering tools such as IDA, and extracting information about packet structures and functions.
    When debugging symbols are removed, it has the same effect as obfuscation, and makes it very difficult to extract meaningful information. Automated tools of the likes created privately over the last 3 years become useless, and extracting information from the binary by hand also becomes far more difficult.

    The bottom line is that updating for each new Minecraft version is about to get exponentially more difficult and therefore take a lot longer. it is going to be significantly more demanding on my already very constrained resources.

    What implications does this have for servers?
    if anyone continues to maintain PocketMine-MP, updates are going to start taking much longer. Right now updates take a couple of days. Without symbols we are likely talking about weeks or months for a new version to be supported.

    You may have already noticed that updates are taking longer since the 1.9 release. The reason for this is because I have stopped allocating my resources to updating for betas. Chasing betas used to give us a head start on each new version, but the time cost necessary to continue doing this became far to excessive, considering my lack of funding and limited available time.

    What are you planning to do for a future version updates?
    Chasing betas will become necessary in order to keep up with the existing state of affairs after symbols are gone. This means that to continue receiving timely updates I am going to need substantial and sustained extra resources from the community, or there will be significant delays in rolling updates.

    I have also considered simply walking away from PM development and leaving it to rot. The return on investment I currently get is far insignificant to the cost of the time and effort that I put in. With this development, this problem is only going to get worse.

    Closing notes
    This development spells trouble for the third party server ecosystem. We are at a crossroads in the server ecosystem. It's up to the community to decide how they want to react to this.
     
    Last edited: Sep 6, 2019
  2. dktapps

    dktapps Administrator Staff Member PMMP Team

    Messages:
    751
    GitHub:
    dktapps
    Addressing some common questions

    OMG! iS pOcKeTmINe gOiNG tO dIE?
    I think it should be obvious that I wouldn't make so much noise about this if it was guaranteed to die. I could simply walk away without all this nonsense.
    As stated in the original post, I consider quitting as an option if the work becomes too arduous or if it consumes too much of my already limited resources. If you want to alter this, consider contributing code or donating.

    Can't you reverse engineer BDS (Bedrock Dedicated Server) instead? Doesn't that have debugging symbols?

    Several people have suggested using BDS for reverse engineering instead of the Android client. While this suggestion has merit, there are a number of problems:
    1. We have no idea if BDS will continue to have symbols when 1.13 is released. Since there are no BDS releases for betas, we don't know what the state of affairs is there yet.
    2. BDS is a server-only executable. This means that it's not possible to use BDS to reverse-engineer client-only functionality, i.e. it only tells us half of what is going on. The Android binary is both a client and a server, which means it gives us both.
    3. All of our tooling is designed around the Android client. There are some tools that will only work on Android (for example my invaluable Frida.re packet tracer)
    4. As stated above, BDS is only released for stable MCPE versions. This means it would cease to be possible to get a head-start on new releases by reversing BDS.
    If BDS is still suitable when 1.13 comes, and we still don't have a client with symbols, then it will likely become a necessary survival tool. However, the ability of server developers to implement the protocol will be impaired due to the reduced available information.

    What about MiNET, NukkitX, and other server software?

    Their developers are all dependent on the same information that we are to implement the protocol. No one server software is going to get this easy.

    Can't you just copy paste from Steadfast2?

    This suggestion has come up multiple times.
    Observant developers may notice that PocketMine-MP has never relied on Steadfast2 to implement new updates in any way, for the following reasons:
    1. It is an unholy mess, and it's almost as difficult to extract meaningful information from it as from MCPE itself.
    2. It is an incomplete reference. The developers of Steadfast2 only implement what LBSG needs. Large parts of the protocol have not been implemented in Steadfast2 because LBSG doesn't need those parts.
    3. Its protocol implementation is incorrect in a large number of places. Relying on it would compromise the quality and reliability of PocketMine-MP runtime (and also its status as protocol documentation).
    I have used Steadfast2 as an additional reference point for updates in some cases (to reaffirm my own assumptions), but I have never directly relied on it.

    How do you know that the removal of symbols is intentional?

    I can't directly reveal my sources, but I have contacts within Mojang and within various partners who have all confirmed the same thing.

    Why are Mojang trying to kill servers?

    I've heard this come up multiple times, and it's simply untrue. The reality is that we are simply caught in the crossfire of a different battle. Mojang is (ostensibly) trying to make the lives of hackers more difficult. Third-party servers are just collateral damage. The fact that such a move will not stop hackers is typical Mojang irony.
     
    Last edited: Sep 6, 2019
  3. SOFe

    SOFe Administrator Staff Member PMMP Team Poggit Admin

    Messages:
    1,910
    GitHub:
    sof3
    artulloss and yuko fuyutsuki like this.
  4. Smarticles101

    Smarticles101 Silverfish

    Messages:
    22
    GitHub:
    Smarticles101
    I haven't used php in a while, but I start university soon so if i have free time, I might try contributing some.

    Sorry about the ominous news, that's gonna make dev work way harder than it already is
     
  5. Levi

    Levi Skeleton

    Messages:
    854
    GitHub:
    captainleviftw
    where are you going for uni?
     
  6. Levi

    Levi Skeleton

    Messages:
    854
    GitHub:
    captainleviftw
    Why is this not the case for Minecraft Java?
     
  7. HimbeersaftLP

    HimbeersaftLP Chicken

    Messages:
    1,786
    GitHub:
    HimbeersaftLP
    Because modding is
    a) More prevalent in the Java community
    b) Java doesn't have behaviour packs and scripting built-in so they rely on actual modders
     
    jasonwynn10 and EdwardHamHam like this.
  8. MC ATECH

    MC ATECH Baby Zombie

    Messages:
    105
    GitHub:
    mcpeatech
    You should make the donation / Patreon more obvious on the website. Promote it more. As I think all server owners making a profit (not as many as used to be) should donate something back to the person who made it all possible!
     
  9. Corona

    Corona Creeper

    Messages:
    1
    GitHub:
    gamester90
    A solution I want to to propose is maybe we should make the pocket mine barrier to entry a bit lower for newcomers so we can make developing more features easier and more enticing to people, the api is already pretty robust, I think the time it takes a developer to add a feature if used instead to document a bit more of pocketmine systems etc, they could multiply the contribution community by a lot, given the fact that a lot of the OG mcpe modders / players are in college and growing up learning how to code better now,

    It's already pretty enticing but how about we make it easier for them to do so? Just a suggestion.
     
  10. jasonwynn10

    jasonwynn10 Wither Skeleton Poggit Reviewer

    Messages:
    1,398
    GitHub:
    jasonwynn10
    you basically just explained API 4? lol
     
  11. HimbeersaftLP

    HimbeersaftLP Chicken

    Messages:
    1,786
    GitHub:
    HimbeersaftLP
    Afaik the server will display a Patreon message when starting it up
     
    MC ATECH likes this.
  12. SOFe

    SOFe Administrator Staff Member PMMP Team Poggit Admin

    Messages:
    1,910
    GitHub:
    sof3
    TL;DR: Mojang has split personality.
     
    yuko fuyutsuki and HimbeersaftLP like this.

Share This Page

  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.