Name: Logistics Arc
Summary: Last major logistics-related overhauls for "alpha" type status (or even "beta")
Scope: Infrastructure, documentation, project organizing, etc
Current Goal: Keep going, invite in some more help
Phase: In progress
Curator: Cervator
Related: All the logistics things!
Note: The below mega-list is copied out of my Evernote, which includes links (lime green) to other notes. Won't be able to see those here but they're handy for me.
Organizing
Summary: Last major logistics-related overhauls for "alpha" type status (or even "beta")
Scope: Infrastructure, documentation, project organizing, etc
Current Goal: Keep going, invite in some more help
Phase: In progress
Curator: Cervator
Related: All the logistics things!
Note: The below mega-list is copied out of my Evernote, which includes links (lime green) to other notes. Won't be able to see those here but they're handy for me.
Organizing
Go through The Great Convergence thread for more todos (and then mark it as complete)Go through Evernote for more todosGo through Wunderlist for more todosCheck on issues still marked as belonging to TGCReview the Nanoware org tracker for more todos (to likely just link from a single issue in the logistics arc milestone)
Prep foundation for applet work - Update applet with new structureGet applet signer cert - Update applet with new structure - Code signing certificate (Certum)- Get applet to work again (probably need to grab the game zip, extract, parse out stuff needed for an automated index.html, etc) - Update applet with new structure - https://github.com/Nanoware/Terasology/issues/16
- Put our signer certificate on the webhost somewhere and use it from Jenkins without exposing it - https://github.com/Nanoware/Terasology/issues/27
- Get launcher more options for modules, such as downloading the bare game (no modules or just Core), then offering some special extras like the full soundtrack - Launcher option to download bare game and run game then, but continue downloading modules for later
- Actually split out a "bare" zip for the launcher in Jenkins somewhere
- Add support to launch a headless server from the launcher?
- Release tracking for modules in Jenkins (big item) - promoting releases and such
- Gradle release plugin review - used by the Launcher - https://github.com/MovingBlocks/TerasologyLauncher/commit/0e992db1d233fc3d037bde29e3b5a7db6e37ac7e
- Auto-upload / create releases on GitHub using their release API - Yay for GitHub release API! https://github.com/blog/1645-releases-api-preview
- Review the SemVer class we have when dealing with SemVer promotion in Jenkins. Made a note of it existing at one point - want to make sure everything is in sync - http://forum.movingblocks.net/threads/module-improvement-arc.850/#post-8666
- Overhaul Gooey - either different bot or enhance hubot - Overhaul Gooey
- Update all module jobs with streamlined artifact copy (able to use wildcards more) - also grabbing the natives: https://github.com/Nanoware/Terasology/issues/63 - also cleaning properly - https://github.com/Nanoware/Terasology/issues/51
- Put a bunch of Groovy scripts for Jenkins on to GitHub so we can use them in our Jenkins (eventually hooked to Gooey) - Jenkins-on-Jenkins planning
- Reorganize the views in Jenkins - maybe ModulesMZ (bundled with game zip, considered "Mode Zero"), ModulesExt (extended modules), ModuleX (special cases, rarely used) - Jenkins-on-Jenkins planning
- The actual Jenkins jobs that will be used by Gooey (and limited to specific views in Jenkins)
- Harden job security by overwriting/deleting naughty Gradle files in module builds (checked in versions of build.gradle, settings.gradle - tiny Groovy script in place that can be used to make a sane settings.gradle) - Gradle Redux
- Update actual job dependencies in Jenkins as a pre-build Groovy step, abort builds that are running out of order - Gradle Redux
- New facade builder jobs in Jenkins (AWT, applet, PC - last one is already built with engine but needs a separate facade dist job) - maybe https://github.com/Nanoware/Terasology/issues/41relates?
- Resurrect the TeraEd facade or make it a new DeveloperFacade with an assortment of new utility (should be some more notes here and there). There is also the old chunk monitoring setup
- Check on forced module errors when dependencies are missing - Check if missing dependencies should cause failures (or warnings / unstable?) even if the dependency is not needed for compilation
- Options for a highlight build in Jenkins to place details in the in-game UI about what the highlight is all about (if we really need highlight builds anymore)
- Sort out TODO, FIXME, ASAP type markup tags in code, currently we only use one "priority" level and likewise only one is detected in Jenkins analytics
Make a Jenkins build job for TeraMath- Figure out why saving a new admin (AbraCadaver) to our Jenkins causes Jenkins fail (outdated? Hit something similar with msteiger, restarting Jenkins made it work)
Move remaining extra Gradle files into config/gradleGradle utility task for updating all local modules (loop through all, except Core, do a fetch then a pull)- needs a fix for out of memory situation with many local modules ((or possibly mixed workspaces between ssh/git/https?)Transitive dependencies for modules (likely by making them 1st class dependencies without risking security in Jenkins) - Gradle Redux- Support external lib definitions in module.txt
- Post our project on the official Gradle forum as a complex use case, get advice for how to make it better (maybe we need to write a source module pre-execution Gradle plugin?) - Post our project as a use case on the Gradle forums for guidance?
- Update the template files for newly created modules - https://github.com/Nanoware/Terasology/issues/53
- Update existing modules to latest version of everything - https://github.com/Nanoware/Terasology/issues/61
See if the cleanIdeaWorkspace task can be made to work instead of a hard deletion of .iws- actually now we need to adopt the new .idea/ approach instead ...- Go over the old utility tasks and reintroduce them - such as a super clean that also deletes the saves, config, etc - https://github.com/Nanoware/Terasology/issues/25
- Speaking of readmes on github - add one to the module template (and make sure it gets along with the module.txt and likely new dependencies Gradle)
- Move the gradlew refresh target to the utility file? Just to make it clean. Had trouble making that work first time though
Put more stuff into the common.gradle under config- Go through everything Gradle and reassess the use of << to defer tasks (since it is just a .doLast this may bork config that needs to resolve early)
- Test updateModule with fetch and pending local changes / conflicts?
- Find a way to log stats for the update all modules Gradle task (x commits pulled for module y)
- Make sure updateModule isn't under some circumstances executing for the root project (which in theory is configured, but not enabled, when iterating over the Core module)
gradle build file doesn't copy overrides into the build/classes dir before jaring - fixed by Immortius
Netflix is doing a trick in their Gradle that might allow reusable buildscript blocks - https://github.com/Netflix/curator/blob/master/build.gradle (they also have a neat GH page!)
- Module tracking site (where'd @Phillax go?) - Check up on Philaxx and terasologymods.net
- Possibly use a Terasology/Index repo on GitHub to gather released module metadata + a GitHub Page for that organization to provide a minimal module tracker ?
- Update Xenforo to 1.2+ Upgrade Xenforo to 1.2
- Update all the addons in particular the ones we've purchased (separate download) - Update Xenforo Post Ratings 1.6.2 - Update the Post Ratings addon after Xenforo 1.2 upgrade - maybe purchase the anti-spam one, already working great but :appreciation:
- Introduce use of forum trophies - Forum trophy enhancements including physical merit badge tie-in? - Maybe add in physical "merit badges" (swag)
- Introduce use of user upgrades (donations-based - a few already qualify, not that we have anything other than badges to give away)
Introduce use of thread prefixes (mainly for Incubator, maybe also Suggestions)- initial pass done, need to flesh it out and apply it to existing threads- Look into OAuth options for forum
- Look for other neat forum plugins
- Consider better support for posting sponsor logos ? Both for tools that grant us open source freebies (YourKit, IntelliJ) and individuals/groups that want to support us (recent interest)
- Overhaul own forum work thread to go back to where the idea was to share some tasks
- More screenies and videos for the splash site
- Update / add some sort of cycling of banners / social media setup to make it easier to update from time to time (unrelated to splash site - FB, G+, Twitter backgrounds and such)
- Improve backup scripting on webhost - usr/local/backup
- Improve user setup on webhost (if we get more admins)
- Find a mirror / alternative setup for the applet? Currently hosted through a URL for the blog on our webhost (might croak from traffic spikes, unlike the released downloads on GitHub) - maybe some sort of elastic cloud offering we can keep at a minimal free level and throttle up if needed? Something like the Cloudflare free level, if that's suitable?
- Finally make an actual Modding forum ? Review structure between it, the Incubator, and the Suggestions forum - http://forum.movingblocks.net/threads/forum-section-for-showing-off.727/
- Make a sticky for summarizing "misc" suggestions that do not warrant a whole dedicated thread in the Suggestions forum (and maybe summarize suggestions there overall)
- Check on the various overview threads
- Review FreedomSponsors for potential issue tracking tie-ins / sponsoring issues with what little donations we've built up
- Make more "post rating" icons - Chuck Norris and other crazy ones
- Can forum trophies be displayed in a user's mini-profile? A.k.a. under the avatar and badges. Some trophies could be randomly handed out for being useful or via trivia questions. And @mkienenb needs a janitor / "rewrites all the things" trophy
- Consider module categorization and documentation - maybe split Incubator between modules and everything else? Or document modules on a wiki page partially automated by parsing module.txts from everywhere, dragging out type and curator? Link to forum thread prefix tags? Really need a better overview, especially who is working on what (or planning to)
Set up a game server on our webhost, now that we can shut it down gracefully from in-game - https://github.com/MovingBlocks/Terasology/pull/1035/files
- Proper JavaDoc publishing somewhere - https://github.com/Nanoware/Terasology/issues/19
- Enable Javadoc nagging in Checkstyle (including auto-generated stub not being good enough). Able to enable for package-level files too?
- Bonus: Highlight Modding API related javadoc somehow / auto-generate a ModdingAPI page from said javadoc? Classes with @API ? Module security manager listing? https://github.com/Nanoware/Terasology/issues/36
- Get some automated docs into the GitHub wiki, maybe again through Javadoc. We have a pile of NUI docs now in the forum, for instance, that would go well in the wiki with some automated snippets included (javadoc links to specific pages?) - Make sure NUI doc makes it into the wiki
- Modding guide improvements in the wiki - especially BTs, blocks, inventory, multiplayer, annotations, and so on - Modding Guide: Behavior Trees - Modding Guide: Blocks - lots of doc scattered all over the forum, of course
- Update DevSetup and AlternativeSetups in GitHub wiki - Update DevSetup and related pages + especially AlternativeSetups - maybe include a note on optionally using GreenShot with imgur for screenies. Also maybe a common issue for a full IntelliJ restart needed in some cases - Doc new Common Issue - IntelliJ full restart needed in some cases
- Automate wiki doc for file extension types ? Wiki doc more file extensions
- Better changelog and "known issues" by release - Launcher did some structure there - Review the launcher's change log and see what we can do on the engine side - also had an old idea about auto-updating a wiki page with commit messages but then allowing human edits for a more readable version
- Update GitHub wiki with new "GitHub for Windows" type setup and https:// instead of git:// Update GitHub wiki pages with todos and such in place
- Flesh out CodeBase Structure if anything remains (left some todos there at one point) Update GitHub wiki pages with todos and such in place
- Game asset auto-doc for wiki, also a way to better catch text vs binary for git (involving .gitattributes) - Add to asset type doc / update .gitattributes
- Update the Contributor Intro page in the wiki
- Update the Contributor Intro forum - needs a primer on teams and badges + benefits of contributing (access to our resources like IntelliJ Ultimate, YourKit, etc)
- Add http://forum.movingblocks.net/threads/blender-to-md5-howto.1020/ to GitHub wiki and link to from all over - was there a GitHub issue for that too ? Also mention the similar COLLADA stuff
- PR guidelines / CONTRIBUTING doc somewhere - Make an outright page in the GitHub wiki for PR guidelines (think the Launcher again has something)
- Update doc about our issue tracking (one node in the forum, probably a page in the GitHub wiki also?) - don't forget that you can view all issues for a whole organization on the right page on GitHub, useful. More details in Wunderlist (focus)
- Better (minimal) doc for GitHub for artists and others that may not need a complete Git setup (using the site purely through the site?) - has an issue under L&S
- Automate doc about where the game data directory goes, depending on OS? Or just display it better in-game (if we automatically pull it from code and update howtos in the wiki that might be ideal from an "up to date" perspective). https://github.com/Nanoware/Terasology/issues/30
- Write some doc about Jenkins itself and how to set up jobs properly (hit-by-bus insurance)
- Write similar doc about Gradle-fu, in particular how defining tasks differently impacts whether or not they auto-execute whether they're called or not
- Actually doc some reasonable system requirements for Terasology somewhere (in particular maybe identify the minimum OpenGL version?)
- Add our custom json extensions to settings / file types for MOAR HIGHLIGHT in IntelliJ (thanks for hint @MarcinSc !) - turns out the javascript plugin in Ultimate is what makes it available
- Normalize LF / CRLF in all text files in the distributed app zip and modules - https://github.com/Nanoware/Terasology/issues/49
- Can we include our own entries into FindBugs or catch them otherwise? Example being entity leaks like that inventory scenario - Tweak at InventoryUtils ? And avoid that entity leak
- Overhaul project testing strategy - split into proper separation between unit testing, integration testing, benchmark testing, etc - probably including supporting plugins in Jenkins - Figure out the next phase of testing structure
- Code coverage setup ?
- Fix the PMD issue where it isn't ignoring protobuf properly
- Maybe find a way to offer shirts, mouse pads, or something? SuperSnark made us some shirt designs already, and i think somebody did mousepads/mugs or something
- Final check to make sure the LogBack Groovy thing is in place everywhere it is needed, including for testing (test/resources for all modules? included in template?)
- Better scripting / addons for model conversion needs (maybe tie into a bigger overhaul with a newer format period?) -
Make sure we have full doc on the MD5 issue so it can be put to bed - Improve TeraMath in Jenkins/Artifactory - TeraMath updates - like basic release promotion non-snapshots
- probably do a video on Terasology's console (command cycling) as well as the new chat console, player settings, and multiplayer
- Figure out the post to GitHub commit plugin in Jenkins - Figure out that "post to github commit" thing in Jenkins - probably noted that somewhere already ... - http://stackoverflow.com/questions/14274293/show-current-state-of-jenkins-build-status-on-github-repo
- Figure out the GitHub PR builder plugin in Jenkins
- Find out what rarely causes "modules" type directories to generate elsewhere (like under engine)
- Better dashboards in Jenkins - Polish Jenkins setup with Dashboard usage and review Analysis Collector Plugin
- Find any outdated or third party download places and try to get them updated (like on our blog) - focus on launcher links instead - Update official download links in various places
- Final proposal for licensing / contributor agreement, maybe reach out to one of the open source licensing legal help sites for review - Final proposal for Terasology licensing & contributor guidelines
- Better support for library development in IntelliJ (and elsewhere?) - Oculus Rift / Leap Motion library path, Jitter / TeraBullet / TeraMath integration within the Gradle project structure and so on - Leap / Oculus Rift library path settings in IntelliJ
- IntelliJ / GitHub integration potential? There is something about pulling in issues assigned to you (maybe you could import all issues related to a particular module you're working on - might not be worth the hassle). Any related markup for within the code itself?
- Consider https://wiki.jenkins-ci.org/display/JENKINS/Embeddable Build Status Plugin and there are some other things too that put badges into github readmes
- Come up with a better strategy for listing credits and/or project progress. Like an actual world bundled with the game that lists contributors, donors, milestones, roadmap, etc - could be tough to maintain through breaking changes though.
- There was also an idea about listing contributors arriving / leaving like DF immigrants, could list milestones too
- Review Jenkins and Artifactory memory usage, and Jenkins had a CPU issue a while ago - maybe https://issues.jenkins-ci.org/browse/JENKINS-14362
- Consider virtual machines / Jenkins agents for advanced testing on multiple OSes (long-term) - need to finally do that on my primary PC too
- LaTeX plugin for forum ? Skaldarnar asked once upon a time
- Do some site (XF, blog, Jenkins, splash) testing for good practices, stress testing, etc. For instance using "Blitz" which also has a Jenkins plugin - https://wiki.jenkins-ci.org/display/JENKINS/Blitz_io
- Group cloaks for Freenode, probably do a little donation. Access could be achieved with the contributor badge. Also could do something with @terasology.org emails?
- Use some of the XF auto-promotion functionality to make it easier to catch when users should be badged as "Contributor" (can add a user to a particular review group when a post has been made in the contributor intro forum, for instance)
- Any other freebie open source resources we should sign up for?
- Better protobuf support in Gradle - Improved Gradle support for protobuf compilation
- Offer a mailing list in case there are people who want news that way?