Useful Sticky Notes

Sunday, August 24, 2014

An Overview of An Instance of the Software Production Process

I had been following a rather well-made youtube channel that highlights a modern game software development process. The channel aims to show how one goes about creating an online MMO game using available tools (as far as I can tell, they use free tools where possible.)

The following link is a video which from my perspective encapsulates many of the workflows that go into a modern online production software process. The creators had requested to Youtube to disable embedding.

Video - "MMO Update - Auto Updater Completed!"

Coming from an academic environment, where software development and deployment is significantly more adhoc, this is a real eye-opener for me. It is of course debatable if academic codes (even stable production ones) need similar deployment processes that allows such a smooth transition. Personally I'd argue that it does, having gone through much of the pain myself and having reflected on whether the adhoc nature of the codes significantly impact such workflows. I believe they are orthogonal - most academic software development projects already rely on many pieces of these workflows. These include:

  • code repositories to orchestrate modifications from many grad student development sources - these tend to be common to professional software development environments, like the use of git or web interfaces based on git;
  • bug tracking and automated/semi-automated unit testing methods - these are also common, but anecdotally I have found academic environments to be fairly lax on this aspect. Tools from Kitware like CMake/CTest/CDash might help change this. Even so, I'm still trying to find out if something like CTest could automatically be linked to a bug-tracker like Mantis.
  • code packaging and deployment - academic environments definitely lag behind professional environments in this department. It may be for good reason since academic codes tend to need to be flexible more than they need to be consistent to their users. In HPC for instance some older code versions tend to work (or work better) on some machine platforms. These forces prompt users of academic codes to be rather particular about specific platform optimizations. Given the platforms tend to be very transient (with 3-5 years operating life) it would probably be problematic (in terms of relative effort) for academic tools to stay highly tuned to ALL the platforms they support in EACH new version. Still, some tools like CPack from Kitware does try to provide a path toward a cross-platform deployment workflow. At the other extreme, MMO games with multi-user interactions pretty much force developers to ensure a simple, smooth, and consistent deployment workflow for all their clients to experience exactly the same game at all times. In the middle, I've noticed other professional tools like Flash Player and operating systems like Mac OS X, with workflows sitting somewhere in-between.
In any event, that is what drives my attempt to collect a set of (preferably free) software development tools on my machine, that I can be comfortable with and satisfies the requirements of each of the major parts of the software development workflows over multiple domains - from academic to professional. I think I have something, but am still trying to wrap my head around all of it (like getting some of these pieces to work well with one another.) I wished I had learned this as a student - but I guess there are reasons why some things are taught in vocational schools, and others in a university degree course. I belonged to the latter world, and am only starting to see software from the other side of this "divide." The video I linked had helped me a lot, at least with the big picture and so I would like to share it here.

No comments:

Post a Comment