HomePhabricator
Open Source Development Suite

Open Source Development Suite

I have been quite content with how the available free and open source tools are mature, stable and often better than their proprietary counterparts. Sean and I have built up a nice suite of open source software with which we do development and, certainly at this early stage, they do appear to be working quite well together.

Every tool mentioned hereinafter is free and open source. Most are cross-platform (excusing, of course, the operating systems which are platforms).


Current Suite

Operating System

I have been using Linux Mint, while Sean has been using Ubuntu KDE. From an operating system perspective, they both do their job well and Linux is very stable. I personally like the Linux Mint GUI without having to customise it too much. I've been using it for years now, but I remember it was an easy switch from Windows when I first started. I do believe Sean has customised his Ubuntu KDE distribution a bit, with visuals and super-fancy filesystems for redundancies. The great thing about Linux is that the user can usually dig as deep as they want to go into the internals and such specifics. For general usage, it's very user-friendly but a few uses of the command-line interface are necessary for more complicated installations and programming (although, for the latter audience, a little terminal work isn't too daunting).

Instead of switching computers, I share my computers' keyboard and mouse input using Synergy which has worked really well for me.

IDE and Compiler

We use the NetBeans IDE, along with the g++ compiler, to develop and generate our code. No complaints here: I've had a better experience with NetBeans than with Eclipse. We also use the Boost C++ libraries to speed up development and enhance code quality.

Version Control

We use Mercurial for version control, which has a good balance of being distributed and powerful whilst being quite usable. TortoiseHg is a decent graphical interface and Meld is a solid visual merge tool I'd recommend.

Team Organisation and Task Tracking

We use Phabricator, which is a great all-in-one solution for issue-tracking, documentation, code auditing, general team planning, et cetera. I exchanged a few emails and the developers have proven quite amicable. I would definitely recommend this, although its adopted naming convention is a touch phoolish ;)

Documentation

Doxygen is an excellent documentation generation tool from inline annotated source code. Simply having it available is a good way to strive for full code coverage with commenting and provides a standardised format for comments. NetBeans has Doxygen support and auto-generates structure for Doxygen-style comments as configured, so which is an effective template to prompt the developer for the minimum documentation.

Unit Testing

UnitTest++ has been excellent on Windows and definitely has Linux support but, alas, I have yet to get diligent enough to have it set up for this all-Linux project. It still comes with my strong recommendations for usability, clarity, portability and robustness.

2D Raster Asset Generation

For mockups and general photomanipulation, GIMP will always get the job done. For digital painting, I found MyPaint to be immediately intuitive and full-featured. Krita has been praised for having both capabilities, but my first usage of it was tainted by frequent crashes on Linux Mint. It has more than likely matured since then.
GIMP has received much criticism for not being like its proprietary counterpart Photoshop, but I'm imagining that's primarily resistance to change. It's worth noting that Anita first learnt GIMP and then subsequently found Photoshop more difficult to master. Granted that GIMP does have some vexing defaults and usability lacunae, but overall it's very solid and improved significantly in each iteration.
MyPaint has been so satisfactory to me that I have no criticisms or discussions to air: it gets out of the way and lets the user simply create art.

2D Vector Asset Generation

Inkscape comes with my recommendations: it is intuitive, capable, SVG standards-compliant and full-featured without feeling bloated. While I have not yet used it with any software development project, I used it to create wedding invitations and found it very agreeable.

3D Asset Generation

Blender is so powerful but really let down by its GUI. While I was able to make a nice spaceship model with it at one point, it was such a steep learning curve that I'm sure I've forgotten already. It's actually the opposite of a real blender, because they're easy to use but make terrible 3D models.

Browsing

I now use Firefox, as Chromium was bested by Firefox's recent updates, Tab Groups, the Chromium Synergy bug and my preference for non-profit organisations.

Ergonomics

The importance of setting up a development environment (and any human workplace) to reduce strain is often overlooked. Apart from trying to keep an ergonomic physical setup, I use some software and plugins to reduce eye strain (especially late at night).
I use Redshift to adjust the screen's colour balance automatically based on the time of day. It's hard to explain how much better this feels in words, suffice it to say I won't be willingly going back to the headache-inducing vanilla.

I also use the FT DeepDark Firefox extension and Dark Metal for NetBeans to go for a dark background as much as possible. There's a few other plugins and dark themes available to try and keep consistency.


To Be Tried

The following tools haven't been tried or I haven't used them very much at all, but are mentioned for completeness until I have time to properly use and review them.

Operating System

I really would like to try FreeBSD, as I have heard numerous positives regarding BSD's design, stability and philosophy (usually contrasted with Linux).

Audio Tools

I have not used it for some time, but Audacity is often the de facto standard for open source audio manipulation. SFXR is also commonly used, but I haven't tried it. BFXR also looks quite good.

Video Editing

Kdenlive looks excellent for promotional video editing.

Development tools

RabbitVCS looks to be an intuitive GUI interface for multiple version control systems.
Gradle seems to be the new de facto build automation tool and seems very powerful for purposes of continuous integration.
The Clang compiler has received a lot of attention for having a better design and shorter compile time than GCC, so it would be worth investigating, for purposes of cross-compiling and building quickly. I'll be honest: my heart was taken by its dragonic ideogram.

3D Character Generation

MakeHuman seems very powerful and value-for-money, being free and all.

Monetisation and Crowdfunding

Some open source crowdfunding platforms to investigate:


Wishlist

  • I wish for a better open source communication tool, preferably distributed rather than requiring centralised servers. Many typical mediums of communication come laden with privacy invasion and require constant Internet connection. BitMessage could fit this role in the future if it is upgraded to a more decent user interface and feature set.
  • Better integration of open source social networks (e.g. Diaspora) into other platforms of communication or development. Diaspora would probably do well to integrate multimedia chat functionality to increase its adoption.
  • FireFox Sync currently doesn't work kindly with Tab Groups, which I'm hoping will be implemented soon.
  • It would be nice if Synergy and a few other programmes worked better with Internet unreliability, rather than locking up and becoming unusable.
Written by Timotheos on Aug 21 2014, 11:59 PM.
Games Developer
Projects
None
Subscribers
None
Tokens
"Love" token, awarded by 0xseantasker.

Event Timeline