Difference between revisions of "Development Tools"

From Mumble Wiki
Jump to: navigation, search
m (added category)
m (NSIS: "Fixed a -> an" typo)
 
(17 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 
Since we get asked a lot, here's the tools we use for software development:
 
Since we get asked a lot, here's the tools we use for software development:
  
= Klocwork =
+
= Backtrace =
http://www.klocwork.com/images/logo.gif
+
[[File:Backtrace Logo.png|300px|link=https://backtrace.io]]<br />
 +
<br />
 +
We have recently started to use Backtrace to analyse crash reports from Mumble clients. Backtrace was easy to integrate into our existing [https://docs.microsoft.com/en-us/windows/desktop/debug/minidump-files minidump] based reporting infrastructure and gives us a much clearer view on what crashes affect the most users compared to what we had before. Backtrace is graciously providing their service to us and other [https://help.backtrace.io/pricing-data-protection-privacy-and-terms/pricing-and-tiers/backtrace-for-open-source Open Source projects for free].
  
"Mumble has been analyzed with Klocwork source code analysis, the most
+
= Ermine =
accurate and comprehensive tool for finding critical programming errors
+
[[File:Ermine-logo.png|url=http://www.magicermine.com/]]<br />
and security vulnerabilities."
+
<br />
 +
The static binary distribution of Murmur was made portable to different Linux distributions with Magic Ermine.
  
I must say I really love Klocwork. For opensource applications, they'll do the analysis for free (providing you're the main author). It's found some really obscure bugs in Mumble and Murmur, bugs that would have caused crashes had they not been fixed before release. While my QA department (aka: My guild who is running the test builds) will find all bugs from normal use, Klocwork finds bugs that occur only under circumstances no sane user would ever attempt. It also ensures server and client input is sanitized, as it easily catches all those "what if that value is really invalid" instances.
+
= Ice =
 +
[[File:Zeroc-logo.png|url=http://www.zeroc.com/]]<br />
 +
<br />
 +
The Mumble server software uses ZeroC [[Ice]] as a RPC framework, enabling flexible remote control.
  
= MinGW =
+
= Opus =
 +
[[File:opus-logo.png|url=http://opus-codec.org/]]
  
[[http://www.mingw.org Minimalist GNU for Windows]], a port of GCC and accompanying utilities to Windows. Includes the debugger, gdb.
+
As of Version [[1.2.4]] [[Mumble]] uses [http://www.opus-codec.org/ Opus] as the primary audio codec.
  
= Qt =
+
= Speex =
 +
[[File:speex-logo.png|url=http://www.speex.org/]]<br />
 +
<br />
 +
We are using the Speex DSP library for echo cancellation and denoising.
  
[[http://www.trolltech.com/products/qt/index.html Qt]] is both a widget toolkit and a set of very handy utility templates like container classes, network handling. It's all crossplatform, meaning that Murmur runs on pretty much any modern architecture, including the qmake files. I have a few projects
+
= Klocwork =
that doesn't use Qt at all, but uses Qmake :)
+
[[File:Klocwork-logo.png|url=http://www.klocwork.com/]]<br />
 +
<br />
 +
Mumble has been analyzed with Klocwork source code analysis, the most accurate and comprehensive tool for finding critical programming errors and security vulnerabilities.
  
= TextPad =
+
I must say I really love Klocwork. For opensource applications, they'll do the analysis for free (providing you're the main author). It's found some really obscure bugs in Mumble and Murmur, bugs that would have caused crashes had they not been fixed before release. While my QA department (aka: My guild who is running the test builds) will find all bugs from normal use, Klocwork finds bugs that occur only under circumstances no sane user would ever attempt. It also ensures server and client input is sanitized, as it easily catches all those "what if that value is really invalid" instances.
  
[[http://www.textpad.com/ Textpad]], a lightweight editor for Windows. Not the best or most flashy, but works for me.
+
= Visual Studio 2008 =
  
= Joe =
+
It's a necessity for compiling programs on Windows using modern interfaces such as WASAPI. We only use the compilers though; editing is still done in Textpad.
  
[[http://sourceforge.net/projects/joe-editor/ Joe's Own Editor]] is my preference for UNIX editor. It's definitly not the most userfriendly, most powerfull, most fancy or least buggy editor, but I sort of got stuck on it.
+
= Qt =
  
Speaking of editors, if anyone has a suggestion for a good editor that forcibly auto-indents, supports code collapse (so just the prototype is shown), highlighting, code completion and compiler output parsing, then send me an email.
+
Mumble uses Qt, the Cross-Platform Rich Client Development Framework. Qt is used for cross-platform GUI, network and database functions.
 +
[http://qt-project.org/ Qt] is both a widget toolkit and a set of very handy utility templates like container classes, network handling. It's all crossplatform, meaning that Murmur runs on pretty much any modern architecture, including the qmake files. I have a few projects
 +
that doesn't use Qt at all, but uses Qmake :)
  
 
= Valgrind =
 
= Valgrind =
  
"[[http://valgrind.org/ Valgrind]] is an award-winning suite of tools for debugging and profiling Linux programs." We use this to make sure the server has no memory leaks.
+
"[http://valgrind.org/ Valgrind] is an award-winning suite of tools for debugging and profiling Linux programs." We use this to make sure the server has no memory leaks.
  
= CodeAnalyst =
+
= Intel VTune =
  
[[http://developer.amd.com/cawin.aspx CodeAnalyst for Windows]] is AMD's performance analysis software. I like Intel VTune better, but VTune runs exclusively on Intel processors, and I have a Athlon-64. A proper run with the profiler will give you what module Mumble spends time in (should be 90% or so in libspeex.dll), and if it had understood the MinGW debug format we would get the time distribution per function as well.
+
VTune is Intel's performance analyzer, which through a convoluted process gives more or less accurate benchmarking results. While valgrind will tell you exactly how many times each instruction is executed, it can't tell you how long it takes to execute that instruction. Hopefully someday VTune's output will be as detailed and easy to use as valgrind's kcachegrind.
  
 
= MSDN =
 
= MSDN =
  
[[http://msdn.microsoft.com/ MSDN]] is Microsoft's developer website, and contains an updated decription for each and every function available on windows. I find the website easier to use than the MSDN helpfiles, as the website has all the files searchable as one, instead of having one file for the DirectX SDK, one for the Platform and so on.
+
[http://msdn.microsoft.com/ MSDN] is Microsoft's developer website, and contains an updated decription for each and every function available on windows. I find the website easier to use than the MSDN helpfiles, as the website has all the files searchable as one, instead of having one file for the DirectX SDK, one for the Platform and so on.
  
 
= SourceForge =
 
= SourceForge =
  
[[http://www.sourceforge.net/ SourceForge]] is not only a website, it's a very handy tool. It comes with CVS, which we use extensively, as well as forums, wikis and mailing lists.
+
[http://www.sourceforge.net/ SourceForge] is not only a website, it's a very handy tool. It comes with Git, which we use extensively, as well as forums, wikis and mailing lists. In the past, we used it for all of this - but since have partly migrated away. Nowadays, it’s used mainly for file hosting.
  
 
= NSIS =
 
= NSIS =
  
[[http://nsis.sourceforge.net/ Nullsoft Scriptable Install System]] is the installer made famous by WinAmp. It's a easy-to-use, efficient and userfriendly install system; it took us less than 15 minutes to make the first installer for Mumble.
+
[http://nsis.sourceforge.net/ Nullsoft Scriptable Install System] is the installer made famous by WinAmp. It's an easy-to-use, efficient and userfriendly install system; it took us less than 15 minutes to make the first installer for Mumble.
 +
 
 +
''Note:'' Since 1.2.3, we no longer use NSIS for our windows installers.
  
 
[[Category:Development]]
 
[[Category:Development]]

Latest revision as of 00:24, 16 April 2020

Since we get asked a lot, here's the tools we use for software development:

Backtrace

Backtrace Logo.png

We have recently started to use Backtrace to analyse crash reports from Mumble clients. Backtrace was easy to integrate into our existing minidump based reporting infrastructure and gives us a much clearer view on what crashes affect the most users compared to what we had before. Backtrace is graciously providing their service to us and other Open Source projects for free.

Ermine

url=http://www.magicermine.com/

The static binary distribution of Murmur was made portable to different Linux distributions with Magic Ermine.

Ice

url=http://www.zeroc.com/

The Mumble server software uses ZeroC Ice as a RPC framework, enabling flexible remote control.

Opus

url=http://opus-codec.org/

As of Version 1.2.4 Mumble uses Opus as the primary audio codec.

Speex

url=http://www.speex.org/

We are using the Speex DSP library for echo cancellation and denoising.

Klocwork

url=http://www.klocwork.com/

Mumble has been analyzed with Klocwork source code analysis, the most accurate and comprehensive tool for finding critical programming errors and security vulnerabilities.

I must say I really love Klocwork. For opensource applications, they'll do the analysis for free (providing you're the main author). It's found some really obscure bugs in Mumble and Murmur, bugs that would have caused crashes had they not been fixed before release. While my QA department (aka: My guild who is running the test builds) will find all bugs from normal use, Klocwork finds bugs that occur only under circumstances no sane user would ever attempt. It also ensures server and client input is sanitized, as it easily catches all those "what if that value is really invalid" instances.

Visual Studio 2008

It's a necessity for compiling programs on Windows using modern interfaces such as WASAPI. We only use the compilers though; editing is still done in Textpad.

Qt

Mumble uses Qt, the Cross-Platform Rich Client Development Framework. Qt is used for cross-platform GUI, network and database functions. Qt is both a widget toolkit and a set of very handy utility templates like container classes, network handling. It's all crossplatform, meaning that Murmur runs on pretty much any modern architecture, including the qmake files. I have a few projects that doesn't use Qt at all, but uses Qmake :)

Valgrind

"Valgrind is an award-winning suite of tools for debugging and profiling Linux programs." We use this to make sure the server has no memory leaks.

Intel VTune

VTune is Intel's performance analyzer, which through a convoluted process gives more or less accurate benchmarking results. While valgrind will tell you exactly how many times each instruction is executed, it can't tell you how long it takes to execute that instruction. Hopefully someday VTune's output will be as detailed and easy to use as valgrind's kcachegrind.

MSDN

MSDN is Microsoft's developer website, and contains an updated decription for each and every function available on windows. I find the website easier to use than the MSDN helpfiles, as the website has all the files searchable as one, instead of having one file for the DirectX SDK, one for the Platform and so on.

SourceForge

SourceForge is not only a website, it's a very handy tool. It comes with Git, which we use extensively, as well as forums, wikis and mailing lists. In the past, we used it for all of this - but since have partly migrated away. Nowadays, it’s used mainly for file hosting.

NSIS

Nullsoft Scriptable Install System is the installer made famous by WinAmp. It's an easy-to-use, efficient and userfriendly install system; it took us less than 15 minutes to make the first installer for Mumble.

Note: Since 1.2.3, we no longer use NSIS for our windows installers.