Angepinnt Welcome to 2017 and with it, modern C++

    • Welcome to 2017 and with it, modern C++

      Welcome to 2017 and with it, modern C++

      We dropped support for Visual Studio versions older than Visual Studio 2015 Update 3 (see this thread for instructions on how to set up Visual Studio correctly board.ascemu.org/index.php/Thr…al-Studio-2015-Community/).

      Our goal for this year is to replace as much legacy code as possible with modern C++.

      What is Legacy Code?
      Legacy code refers to all code prior to the creation of the AscEmu project. This code represents over a decade of community efforts and is licensed under the Affero General Public License (AGPL). Going forward, all new contributions will be licensed under the MIT license, which permits use of the source without restriction. tldrlegal.com/license/mit-license

      What is the AGPL?
      This license is designed to force all users of the software to release the source if they provide access to the program in any form. This includes providing access to a hosted service via networking. This is more restrictive than the GPL (a license preferred by many other open source projects), which requires source disclosure only when providing the binary itself.

      Why not simply release AscEmu under the new license?
      There are two main reasons for this. The first reason is that we simply do not believe we have the legal rights to do so. The second (and arguably more important) reason is that we do not believe it is ethical for us to do so. Previous contributions were made to the project under the knowledge that the project had a GPL-style license - a license that developers often use for various ethical and political reasons, rather than simply out of pragmatism. As we cannot possibly contact all previous developers to ask permission, even if we had permission to relicense the project doing so would be incredibly disrespectful as we would be disregarding the wishes of past contributors. AscEmu would not exist without their work, and we are extremely thankful for it.

      What is modern C++?
      C++ is a very old language, but is still being actively developed. Ever since 2011, C++ has made huge improvements to make the language safer and more readable. In light of this, we will be keeping up with the latest version of C++, and our code will reflect this through use of features such as type deduction and smart pointers. This means that going forward, you will be required to use a modern C++ compiler in order to compile AscEmu - this will often mean using the latest version of MSVC, GCC or Clang.

      How can I update my custom server?
      First of all, you should check out the commits made between your version of AscEmu and the current public version. We highly recommend that you document your changes. We also recommend that you use the "AdditionalTable" feature and move your custom spawns and properties to another table. You should check out the db updates (especially the structure changes).
      You should ALWAYS set up a test server if you decided to switch to a newer version of AscEmu and TEST your custom scripts/db-changes there before doing anything else! While we support custom modifications of AscEmu as best we can, changes to the public repository are made only with the public repository in mind, meaning that occasionally our changes WILL break your custom code. You are responsible for checking this before updating.

      Will you be developing game content (instances, spells etc)?
      We accept pull requests aimed at developing game content, however the focus of the AscEmu developer team is currently on improving the core systems in AscEmu. Once we are happier with the state of the core systems in AscEmu (or if we get more contributors :)) we will revisit the idea of officially focusing on game content. Remember, AscEmu is powered by community contributions - if you want something improved, you have the power to change it!

      Finally, an immediate change we are making is to types used - do NOT use old typedefs such as uint32, uint8 etc - use the new fixed-size types such as uint32_t and uint8_t for all new code.

      Best regards,
      The AscEmu Team