SAP code visualization – make a cool video of your project evolution
I am project manager of some SAP ABAP add on development project and, as every project manager, I face from time to time a need to create something special for the folks I am working with as a gift for their great work. I guess you know that feeling at the end of some important milestone or when you are panning some team building event or when planning to throw a party due to new product release when you are thinking of what ‘team goodies’ you can present or how you can spread a word around about efforts your team made. I guess today I can share with you one of the things I did.
Below I am presenting video generated for our project as well as steps and ABAP code required to generate your own video for your development or implementation project. Our project, FM insight, Software is displayed by Gource as an animated tree with the project name at its center. Different ABAP object types appear as branches with object names as leaves. Developers can be seen working on the tree at the times they contributed to the project.
How to make your own video
Since our project contains from both Java and ABAP stacks and we use SVN at Java for version control I decided to mimic SVN change log output format for the SAP transport system log export. This decision had also nice feature that I can combine two logs into one file and produce video that consists both – Java and SAP development at the same time. To do similar video on your projects you shall go over tree steps only that I am going to convey in details below. As well there is enough information on Gource wiki and Internet on different peculiarities if your situation differs from mine.
Get and install Gource
You had to go to Gource download section in order to get last stable version of Gource. In my case I was using version 0.38 for my vide so all examples below are based on this version. From the download section it is possible to download compiled Windows version (called gource-0.38-1.win32.zip) or, for Linux users, source code archive (gource-0.38.tar.gz). I tried both options but my problem on Windows were that I haven’t found a nice tool to capture the video produced on screen and generating of non-compressed video is supposed to take way more disk space that was available on my laptop so I used a Linux version where it was possible to pipe output of Gource bitmaps directly to ffmpeg for compressing.
So, where under Windows you need just to unpack archive for Linux side I had to do few more steps in console:
Download the latest Gource:
tar xzf gource-0.38.tar.gz
Configure, make, and install Gource
sudo make install
Generate your log file
If you happen to have situation like me and need Java logs from SVN you can get the logs as it is described in Gource wiki:
svn log –r 1:HEAD —xml —verbose —quiet >your–project–log.xml
Just after doing it you can run video visualization just by running from command line:
SAP transport system logs are generated from custom program written by me which source code is available here (http://scn.sap.com/blogs/artem/2012/10/30/program-source-to-generate-sap-code-statistic-for-gource-visualization). Below I will describe how use the program assuming that you have taken code from code exchange, copied it into some Z-report in your system, activated and executed it.
In short, this report will select all transport request in your system according to user defined criteria and make from them change log XML file which can be used later by Gource for generation of video.
Below is first screen when you run report:
On the first screen it is possible to maintain following parameters:
- define path prefix of your project (e.g. center of your tree)
- File destination where to store change logs in order to use them later for video generation
- Several options that are related to change log generation:
- Merge with existing – if your project, like mine, has Java and ABAP parts you can direct the program to file with java logs and let system know that you do not want to overwrite it/create new file but merge changes from ABAP between Java changes keeping same history order. The reason why same history order should be kept is that later when Gource will use a log file to generate video it will show both Java and SAP changes in same time as they really happened in real life
- Ignore Note corrections – as it says from name – it excludes any transports with SAP Note corrections (e.g. not your project code)
- Shorten object type description – makes a description of object types in transport a bit shorter in order to increase their readability on screen
- In Step 1 section you have ability to limit set of the objects that shall be included/excluded for analysis from the transports selected. For my video I excluded following objects:
- SMIM – Info Object from the MIME Repository
- MERG – Comment: Object List Included
- PERF – Perforce Changelist
- RELE – Comment Entry: Released
- CINS – Correction Instruction
- NOTE – SAP Note
You can save your selection as variant by hitting save button in SAP menu
And move to transports selection screen by pressing execute button which will lead to following screen:
Here you can select transport requests for analysis by:
- Request number
- Request owner
- Date range
- Request type and status
By hitting expand selection button you can limit your selection further using following parameters which I am not going to describe as it is typical fields for SAP transport system
Again, you can save your selection here as variant by hitting save button in SAP menu or start log generation by pressing execute button.
After processing is finished you shall find an XML file on your hard drive containing log changes from all requests selected. Now we are ready to start with final step – video generation.
First of all, to check that so far everything is going fine you can try just to run the Gource with XML file created so far by running Gource from command line:
If it works and you see all data you expect to see it is time to recorder the video generated and present to your team 🙂
First what we will need to do is tweak some of the video output options in order to bring your personal touch to Gource visualization. You can see the list of all possible parameters by running Gource with -H switch from command line. Below I will explain some of the parameters I’ve used for my video generation:
–title <project title>
–logo <project logo>
–logo-offset 0x690 Logo offset positioning on screen (<Y coordinate> <X coordinate>)
–highlight-users Highlights names of all users
–camera-mode Track places with changes (track) instead of showing overview picture all the time (overview)
–key Show file extension keys – in case of SAP it would be name of objects
–background <hexcode> Hexcode of background color
–auto-skip-seconds <value> Autoskip to next log entry if nothing happens for the number of seconds (I put it to zero in order to not see same screen if nothing was happening on project
–seconds-per-day <value> Speed in seconds per calendar day (default 10, you have to calculate your speed rate depending of project duration. For example to pack a week duration into one second the rate is 0.1428571
–bloom-multiplier 0.5 Adjust amount of bloom (default 1)
–bloom-intensity 0.5 Adjust intensity of bloom (default 0.75)
–date-format <format> Java date format string to represent a date
–hide <element list> Hide elements from display
–user-image-dir <name> Directory with user pics that would be associated to user names. Images must be called like <user name>.(jpg|png|gif)
As example, for the video show above I used following parameters in command line in Windows:
gource.exe –title “FM Insight development (1 sec video = 1 week of development)” –logo FMInsight_small.jpg –logo-offset 0x690 –highlight-users –camera-mode track –background 444444 –auto-skip-seconds 0.1 –seconds-per-day 0.1428571 –file-idle-time 0 –max-files 0 –max-file-lag 1 –max-files 10000 –bloom-multiplier 0.5 –bloom-intensity 0.5 –date-format “%b %d %Y” –hide filenames,mouse – 20121025\SAP_20121025.xml
Capturing of output is really depended of the platform you are using. On Windows you can use either Farps or Camtasia or some similar window capturing tools to grab the video from screen and compress it into movie. As I mention before I did not liked quality of screen capture and do not had enough disk space available to let gource generate uncompressed sequience of bitmaps for the movie, so I moved to Linux and piped the Gource output directly to ffmpeg encoder for video encoding. Below is example of my command line on Linux to do it:
artem$> gource –title “FM Insight development (1 sec video = 1 week of development)” –logo FMInsight_small.jpg –logo-offset 0x690 –highlight-users –camera-mode track –background 444444 –auto-skip-seconds 0.1 –seconds-per-day 0.1428571 –file-idle-time 0 –max-files 0 –max-file-lag 1 –max-files 10000 –bloom-multiplier 0.5 –bloom-intensity 0.5 –date-format “%b %d %Y” –hide filenames,mouse -o – SAP_20121025.xml | ffmpeg -y -b 3000K -r 60 -f image2pipe -vcodec ppm -i – -vcodec libx264 -threads 0 FMInsight_dev.mp4
Some more ideas how to encode video from Gource are described as well in Gource wiki here: http://code.google.com/p/gource/wiki/Videos, I suggest to read it as well in order to understand how to do it.
Enjoy and share
That’s basically it. Now it I s time to make your video about your project – it can be anything: development, implementation, configuration – everything that lands into hands of SAP transport management system as request can be tracked and can be used to generate video. I suggest to go over Gource parameters and play around with options – there are many things to tune up to make your it look completely different than any other videos.
And do not forget to share your video, upload it to youtube (there you can very easily add audio track to it or add some annotations), share it to your colleagues or anyone who is interested.
Please put the link in comments to this blog – I would love to see your video!