linux Syndicate content

» KDevelop 4.7.0 Beta 1 Released

Fri, 07/04/2014 - 10:54

Hey all,

just a quick announcement: KDevelop 4.7.0 Beta 1 was released! Head over to the announcement on the KDevelop website to read more:

https://www.kdevelop.org/news/kdevelop-471-beta1-released

Cheers, see you soon with a KDevelop 4.7.0 stable release :)

» Massif-Visualizer 0.4 Beta 1 and KGraphViewer 2.2 Beta 1 Released!

Wed, 06/25/2014 - 13:44

Hey all,

I’m happy to announce the availability of two new betas: Massif-Visualizer 0.4 Beta 1 and KGraphViewer 2.2 Beta 1!

Download

If you want to test this release, you can download the tarballs from the KDE mirrors:

Download Massif-Visualizer 0.4 Beta 1

  1. md5 sum: 2953089078bd2170ad9d2d583c7c8b95 massif-visualizer-0.3.90.tar.xz
  2. sha1 sum: 6d76134b1b41b887ba595a0585f941d22e066b76 massif-visualizer-0.3.90.tar.xz
  3. sha256 sum: 9940fa90137ca5eef08b9ec220825fadbf03db423a670a2c7fe3edab271d9922 massif-visualizer-0.3.90.tar.xz

Download KGraphViewer 2.2 Beta 1

  1. md5 sum: b3a18cbaf661d1cf186b3a3674c31186 kgraphviewer-2.1.90.tar.xz
  2. sha1 sum: 4f0cb86f01eb9725191a79291cbd75061682ca69 kgraphviewer-2.1.90.tar.xz
  3. sha256 sum: 1ae74c1a51e252e88afb7a3d7864fc1bc6326c191ad36c89cc7fab7e8a96f08f kgraphviewer-2.1.90.tar.xz
Notably Changes

These beta releases come packed with a lot of important changes. KGraphViewer finally supports newer GraphViz packages and includes many performance optimizations and other bug fixes. Massif-Visualizer saw a lot of code cleanup and a few visual changes, which make it possible to open multiple files at once in the same window.

Thanks go out to all contributors, who made this release possible!

Massif-Visualizer Changelog
  • Milian Wolff: Centralize version handling and set version to 0.3.90 for beta release
  • Milian Wolff: Replace empty string literals with explicit empty string/byte array.
  • Milian Wolff: Cleanup the cmake code around our internal helper libs a bit.
  • Milian Wolff: Cleanup, use .at(0) instead of first() as that is guaranteed to never detach.
  • Milian Wolff: Optimize: force the use of the const overload of QVector::first.
  • Milian Wolff: Constify the data pointers where possible.
  • Yuri Chornoivan: Fix typo
  • Arnold Dumas: Don’t enable ‘reload’ action when no document has been loaded.
  • Burlen Loring: Implement logic to save current document as an image.
  • Burlen Loring: Add logic to control legend position and font size.
  • Milian Wolff: Don’t assert when kgraphviewer part is not available at runtime.
  • Milian Wolff: Update detailed graph view when changing selection in the tree view.
  • Arnold Dumas: Keep the displayed toolbar up to date with the current tab. REVIEW: 117752
  • Milian Wolff: Add myself as an author as well and fixup bugs address to direct to our mailing list.
  • Arnold Dumas: Add myself in the about dialog. While at it, update my e-mail.
  • Arnold Dumas: Remove broken useless connection.
  • Arnold Dumas: Support loading kgraphviewer via KPluginFactory. REVIEW: 117375 BUG: 332833
  • Arnold Dumas: Update my e-mail address.
  • Milian Wolff: Require cmake 2.8.9 as minimum version.
  • Milian Wolff: Require KDE 4.7.0 as minimum for KMessageWidget
  • Milian Wolff: improve backwards compatibility by using non-forward include for KMessageWidget.
  • Arnold Dumas: Fix spelling mistakes reported by Krazy2.
  • Arnold Dumas: More coherence when navigating through different documents. REVIEW: 114404
  • Arnold Dumas: Fix crash when changing the stack number value with an invalid document loaded.
  • Arnold Dumas: Disable printing when the document hasn’t be properly loaded.
  • Milian Wolff: Hide callgraph toolbar if we don’t show the callgraph currently.
  • Milian Wolff: Cleanup includes, use forward declarations in header.
  • Milian Wolff: Don’t use modal dialog to show parse errors.
  • Milian Wolff: Properly restore current index after file reload.
  • Milian Wolff: Disable stop parser only when no parsers are running.
  • Milian Wolff: Make helper functions static for file-local linkage.
  • Milian Wolff: Don’t access parseWorker API after deleteLater call.
  • Milian Wolff: Cleanup UI if we do not have KGraphViewer available.
  • Milian Wolff: Fixup issues after recent move to MDI.
  • Milian Wolff: Make compile when one has an outdated kgraphviewer available.
  • Arnold Dumas: Implementation of multiple document interface. REVIEW: 113523
  • Arnold Dumas: Remove unused or unnecessary includes. REVIEW: 113489
  • Arnold Dumas: Delete the print preview dialog just after it has been closed. REVIEW: 113288
  • Arnold Dumas: Add myself in the AUTHORS file.
  • Arnold Dumas: Add a preview dialog before printing. REVIEW: 113130
  • Arnold Dumas: Fix one more warning.
  • Arnold Dumas: Fix crash when toggling “Shorten templates” action without any proper massif document loaded. REVIEW: 113122
  • Arnold Dumas: Fix five warnings. REVIEW: 113106
  • David Faure: Fix compilation with -DQT_STRICT_ITERATORS
  • Milian Wolff: ups, add missing hunk, fixes compilation
  • Milian Wolff: Make it possible to print the massif data.
  • Milian Wolff: Use full horizontal space in chart
  • Milian Wolff: Minor cleanups
  • Milian Wolff: Kill QList usage with fire.
  • Milian Wolff: Refactor threaded parsing, use long lived worker pattern.
  • Milian Wolff: Fix double deletion in hideFunction.
  • Milian Wolff: Properly parse labels for functions, locations, addresses
  • Milian Wolff: add missing test data
  • Milian Wolff: add stack-profile test data
  • Milian Wolff: Support massif memory stack profiles.
  • Milian Wolff: Increase compatibility with older Qt versions.
  • Milian Wolff: show memory in kilobytes instead of bytes
  • Milian Wolff: remove top and left axes, instead increase font size of right and bottom axes
  • Milian Wolff: just show peak cost, without ‘Peak of …’ prefix
  • Milian Wolff: set monospace font on legend, left-align text
  • Yuri Chornoivan: Fix typo: remove->remote
  • Milian Wolff: fix crash when loading multiple files in parallel
  • Milian Wolff: optimize: .value() instead of .contains & operator[]
  • Milian Wolff: cleanup
  • Milian Wolff: optimize: leverage implitic QByteArray sharing to further reduce memory consumption
  • Milian Wolff: use something better for the fast-route tree filtering label
  • Milian Wolff: use contains check for custom allocators
  • Milian Wolff: optimize: filter for data tree model
  • Milian Wolff: properly show some progress values in the progress bar
  • Milian Wolff: actually make it possible to stop a parser run
  • Milian Wolff: load & parse massif files in a background thread
  • Milian Wolff: properly initialize to prevent crash in new dtor code
  • Milian Wolff: fix/workaround some memleaks in kdchart
  • Milian Wolff: fix memleak in tester
  • Milian Wolff: optimize: drastically reduce memory footprint by using QByteArray instead of QString
  • Milian Wolff: optimize: when we don’t have custom allocators, no need to find the function in the label
  • Milian Wolff: add simple debug utility to run massif parser on random files
  • Milian Wolff: move util.{h,cpp} to massifdata
  • Milian Wolff: optimize: use QHash instead of QMap if sort-order is not required
  • Milian Wolff: use quint64 for bytesizes to support memory > 4GB
  • Milian Wolff: properly calculate color based on accumulated max cost
  • Milian Wolff: kgraphviewer is optional
  • Milian Wolff: Relicense to GPL/LGPL v2.1 or 3 or anything later approved by KDE e.V.
  • Milian Wolff: add README/man page
  • Aurélien Gâteau: Link statically the kdchart lib
  • Aurélien Gâteau: Do not install internal static libs
  • Aurélien Gâteau: Remove need for an X server to run datamodeltest
  • Milian Wolff: merge below-threshold nodes
  • Milian Wolff: remove obsolete call
  • Milian Wolff: close file on shutdown to fix memleaks
  • Milian Wolff: make root item white, color is useless there
  • Milian Wolff: fix memleaks in unit test
  • Milian Wolff: properly find highest-cost node in callgraph node based on accumulated cost
  • Milian Wolff: merge tails of callgraph tree before generating the dot file
  • Michael Jansen: Qt 4.8: Resolve ambiguous overload (QVariant, QBrush)
  • Milian Wolff: set version to 0.4
KGraphViewer Changelog
  • Milian Wolff: Restructure and centralize the version handling.
  • Gael de Chalendar: Avoid a crash when using recent files list
  • Gael de Chalendar: Removed unused slotLoadLibrary
  • Gael de Chalendar: Remove unused member
  • Reimar Döffinger: Add horrible hack to work around reload issue.
  • Reimar Döffinger: Merge declaration and initialization.
  • Reimar Döffinger: Ensure m_g is initialized even if fopen fails.
  • Reimar Döffinger: Revert “Do not crash anymore on reload”
  • Gael de Chalendar: Make recent files list to be filled again
  • Gael de Chalendar: Do not crash anymore on reload
  • Gael de Chalendar: Handle a graphviz error
  • Milian Wolff: Optimize: Cache string keys used for attribute lookup.
  • Milian Wolff: Optimize: Do manual painter restoration.
  • Milian Wolff: Optimize: Disable semi-expensive debug output generation.
  • Milian Wolff: Remove useless debug output which gets emitted a lot.
  • Yuri Chornoivan: Expand: algo -> algorithm
  • Matthias Klumpp: Add AppStream metadata
  • Gael de Chalendar: Add xdot 1.2, graphviz 2.13 Support image operator I
  • Gael de Chalendar: Add support for xdot 1.5, graphviz 2.34 new ‘t’ operator
  • David Faure: Port from queryExit to closeEvent, so queryExit can be deprecated
  • Reimar Döffinger: Remove dependency on Qt3Support.
  • Reimar Döffinger: Bump version number for the many recent changes.
  • Reimar Döffinger: Make code find the chain.png and chain-broken.png.
  • Reimar Döffinger: printing: Add hack to fix some strange random behaviour.
  • Reimar Döffinger: Remove unused variable.
  • Reimar Döffinger: Prefer using QPainter::boundingRect to get text size.
  • Reimar Döffinger: Printing: fix size calculations without date/time.
  • Reimar Döffinger: printing: get rid of pointless intermediate QImages.
  • Reimar Döffinger: printing: remove pointless duplicated setFont calls.
  • Reimar Döffinger: Printing: replace smoothScale() by scaled()
  • Reimar Döffinger: Print preview window: remove pointless customization.
  • Reimar Döffinger: simpleprintingengine.cpp: Simplify, do not rely on dynamic_cast.
  • Reimar Döffinger: Move QPaintDevice pointer out of class.
  • Reimar Döffinger: Remove unused function.
  • Reimar Döffinger: Change include order to match KDE recommendations.
  • Reimar Döffinger: Handle failure to load a file without crashing.
  • Reimar Döffinger: Support old graphviz via patch for the moment.
  • Reimar Döffinger: Update kcfg files to reference schema instead of DTD.
  • Reimar Döffinger: Fix placement of TRANS:ROLES_OF_TRANSLATORS
  • Reimar Döffinger: Spelling fixes in comments.
  • Reimar Döffinger: Change my email address to one I can still access.
  • Reimar Döffinger: Replace some Qt classes with KDE alternatives.
  • Reimar Döffinger: Avoid QString::null and use QString().
  • Reimar Döffinger: Fix some issues with threading.
  • Reimar Döffinger: Fix memory leak and make data structure const.
  • Reimar Döffinger: Fix file descriptor leak.
  • Reimar Döffinger: Simplify code to delete maps and also free all subgraphs.
  • Reimar Döffinger: kgrapheditor: Use only public API of our KPart.
  • Reimar Döffinger: Fix gvContext leaks.
  • Reimar Döffinger: Do not clear canvas on update.
  • Reimar Döffinger: Switch kgrapheditor to use the KPart.
  • Reimar Döffinger: Slightly simplify plugin load error handling.
  • Reimar Döffinger: kgrapheditor: Make it possible to have an active graph.
  • Reimar Döffinger: Add some debug prints.
  • Reimar Döffinger: kgrapheditor: Fix signal and slot signatures.
  • Reimar Döffinger: kgrapheditor: Make quit menu entry work.
  • Reimar Döffinger: Fix loading files in kgrapheditor.
  • Yuri Chornoivan: Fix typo
  • Reimar Döffinger: Normalize most signal/slot signatures.
  • Reimar Döffinger: Make 1-argument constructors explicit.
  • Reimar Döffinger: Follow recommendation to use QPointer for modal dialogs.
  • Reimar Döffinger: Show correct layout algorithm also for undirected graphs.
  • Reimar Döffinger: Update Changelog, short summary of major recent changes.
  • Reimar Döffinger: Fix code to enfore minimum size of zoom rectangle.
  • Reimar Döffinger: Fix incorrect clamps.
  • Reimar Döffinger: Minor code simplification for zoom rectangle adjustment.
  • Reimar Döffinger: Fixes for layout selection.
  • Reimar Döffinger: Set checkable to true.
  • Reimar Döffinger: Prefer KAction over QAction where appropriate.
  • Reimar Döffinger: Try to fix print setup page by removing fixed pixel positions.
  • Reimar Döffinger: Use empty string instead of single space for custom layout placeholder.
  • Reimar Döffinger: Reformat remaining three .ui files for consistency.
  • Reimar Döffinger: Make settings dialogs auto-layout themselves properly.
  • Reimar Döffinger: Convert .ui files to proper XML/newer format.
  • Reimar Döffinger: Allow proper auto-scaling of appearence preferences.
  • Reimar Döffinger: Remove spacer on top.
  • Reimar Döffinger: Use a simple QLabel instead of QTextEdit.
  • Reimar Döffinger: Remove broken code that messed up position when zooming.
  • Reimar Döffinger: Simplify scrollwheel scrolling code.
  • Reimar Döffinger: Fix keyboard navigation.
  • Reimar Döffinger: Simplify code handling detail level, avoid duplicating code.
  • Reimar Döffinger: Also allow zooming with Control + mouse wheel.
  • Reimar Döffinger: Use correct flag type for argument.
  • Reimar Döffinger: Add extra parenthesis to avoid compiler warning.
  • Reimar Döffinger: Remove unused variable.
  • Reimar Döffinger: Add explicit protected destructor.
  • Reimar Döffinger: Avoid some deprecated functions in page setup code.
  • Reimar Döffinger: Port to KPluginFactory.
  • Reimar Döffinger: Print error if opening the file failed.
  • Reimar Döffinger: Support newer graphviz cgraph library.
  • Reimar Döffinger: Fix parser to accept both int and floating-point in more places.
  • Burkhard Lück: fix typo BUG:331041
  • David Faure: Port away from deprecated QList::remove().
  • Pino Toscano: Remove erroneous double-quotes around %c in Exec line
  • Pino Toscano: cmake: remove obsolete stuff
  • Pino Toscano: cmake: simplify the various target_link_libraries
  • Luigi Toscano: docs: fix id attribute ( element)
  • Gaël de Chalendar: Corrects bug report #278010 : soversion for kgraphviewerlib was wrong.
  • Gaël de Chalendar: Add the necessary cmake_minimum_required version.
  • T.C. Hollingsworth: docs: restore <(book|article)info>
  • T.C. Hollingsworth: docs: add id attribute to and
    elements
  • Michael Palimaka: Fix build with boost-1.50
  • Jekyll Wu: Fix warnings about wrong base class when opened with Qt Designer
  • Jekyll Wu: Fix missing icons in kgrapheditor
  • Jekyll Wu: Remove the deprecated “Encoding” key
  • Friedrich W. H. Kossebau: Fix kde3 icon name “filequickprint” to “document-print-preview”, seen via lxr
  • Jekyll Wu: Update the name entries in .desktop files
  • Milian Wolff: remove some (but not all) legacy QT3 calls
  • Milian Wolff: properly init m_renderOperationsRevision in default-ctor
  • David Faure: Remove nonsensical call to KGlobal::dirs()->addPrefix(), found via lxr.
  • Milian Wolff: An attribute ID is not allowed for subgraph. But graph in subgraph can have it’s own ID.
  • Milian Wolff: remove obsolete call to setBackgroundMode
  • Milian Wolff: optimize: reuse QPainterPath code from paint method in CanvasEdge
  • Milian Wolff: optimize: cache slow QFontMetrics calculations over paint events
  • Gaël de Chalendar: Add the possibility to export to svg and other pixmap formats
  • Milian Wolff: optimize: interpolate fontwidth and save calls to slow QFontMetrics::width
  • Montel Laurent: Fix forward declaration
  • Montel Laurent: cmakelint
  • Kevin Funk: Fix CMake for non-default graphviz location
  • Gael.deChalendar: - default background color set to white; - default background changed is immediatly taken into account
  • Gael.deChalendar: Correct default background color (change from black to light gray)
  • Pino Toscano: i18n fixes

» Kate/KDevelop Sprint 2014: Let There Be Clang

Mon, 02/03/2014 - 23:58

Time flies… The extremely productive hack sprint at the friendly Blue Systems office in Barcelona is over for more than a week. I haven’t had time to blog about the last days yet which I hereby make good for!

I spent a lot of time at the sprint polishing the KDevelop Clang plugin. A up-to-now semi-secretly developed language plugin based on clang which will replace our current C++ language support in KDevelop in the long-run.

» Kate/KDevelop Sprint 2014: First Days

Tue, 01/21/2014 - 19:24

Hey all! Greetings from the joint Kate/KDevelop sprint at the Blue Systems office in Barcelona!

I only arrived yesterday but already I have great news for you: After months of work I finally merged the sharedurls branches into master for KDevelop/KDevplatform etc. pp. There I worked on a optimization in our handling of file paths.

The status quo up until know was the following: When importing a folder as a project in KDevelop, we filled a model with every file and folder in the project (recursively). For every item we also stored its path as a KUrl to the potentially remote location. KUrl and QUrl are awesome when you have to work with paths and urls, but as soon as you store potentially thousands of them at the same time it becomes quite inefficient. Assume e.g. you open /foo/bar/blub/ which contains /foo/bar/blub/bla.h. When you use KUrl/QUrl to store these paths, you cannot share any memory between the two, as internally basically a QString is used. Thus, when you import deep folder trees or folders with many files, you’ll waste a lot of memory for common sub-paths. Furthermore, due to the amount of allocations required, reading the tree is pretty slow.

So in the sharedurls branch I worked on a internal replacement for KUrl in KDevelop: It’s called KDevelop::Path and is a glorified QVector<QString> with convenience API to simulate a KUrl and simplify porting. Every entry in the vector contains a path segment. It leverages QStrings implicit sharing to minimize the memory overhead. Furthermore, when you parse a tree structure recursively, all you do is copying vectors and appending strings to them - which is rather cheap as a QString is a small handle structure.

So all in all this should greatly improve the performance of opening projects in KDevelop. Especially for large sessions containing thousands of files (eg.: Qt 4, multiple Qt 5 modules, LibreOffice, Kernel, WebKit, …) the new code is much faster and consumes less memory. I’ve seen time savings in the order of multiple seconds in total as well as memory consumption going down in the order of 100MB.

While this sounds like a fairy-tale, I have to admit that it was/is a lot of work: By using a custom class, you have to convert to KUrl/QUrl or QString quite often when interacting with existing API. This of course is costly and potentially marginalizes or even pessimises the potential performance gains. Hence one needs to pay special attention and port code such that it minimizes these conversions. As such I can only recommend anyone doing something like that when you have similar extreme usecase. For a normal file browser or web browser I doubt the you’ll gain much if anything.

So please compile the current master branches and take a look for yourself. My tests and benchmarks look all good, yet I might have overlooked something. If you spot any regressions, please shout!

Now that this is mostly done and polished, I’ll continue working on Clang integration in KDevelop. Stay tuned for the next blog entry about that topic :) And already a huge thank you to Aleix Pol for organizing this sprint, to Blue Systems for having us, and to the KDE e.V. for sponsoring the trip and accommodation!

» KDevelop 4.6.0 released!

Mon, 12/09/2013 - 20:30

Holy moly yet another KDevelop release - but this time a big one! Go and get 4.6.0 while it’s fresh and read the full announcement on the KDevelop website:

http://kdevelop.org/46/kdevelop-460-final-released

» Apps on Speed

Tue, 11/19/2013 - 17:07

Hey all,

since some people asked me: The slides to my extended Apps on Speed talk from this year’s Qt DevDays Berlin are available for download. If you are interested, get them here: http://devdays.kdab.com/wp-content/uploads/2013/11/qt-dd-2013-apps-on-sp…

I hope you liked that talk. I certainly had fun presenting it and discussing the contents with various attendees later on. I have now quite some ideas on how to extend the talk even further.

The slides of the other presentations are also available. Stay tuned for the video recordings of DevDays Berlin, I’m sure they will be accessible soonish :)

Edit: The video is now available! Enjoy http://www.youtube.com/watch?v=C5EPt50Kgmc

» KDevelop 4.6 Beta 1 Available

Mon, 11/11/2013 - 17:16

Hey all,

I just announced KDevelop 4.6 Beta 1 on the KDevelop website. Go read the announcement and test the hell out of this release :) I’m pretty confident that its already a very solid release though!

Cheers, happy hacking!

» KDevelop 4.5.2 available!

Thu, 10/31/2013 - 16:04

Hey all,

KDevelop 4.5.2 is finally released! Go see the announcement on our website for more info: http://kdevelop.org/45/kdevelop-452-available

Note that this release contains some serious crash fixes, so update asap, i.e. as soon as your packagers get to it :)

Enjoy and thanks to all contributors! Looking forward to KDevelop 4.6 already!

» KDevelop Project Filters

Tue, 09/03/2013 - 00:24

Hey all!

Today, after a bit more than a month since I started working on it, I merged the projectfilter branches into KDevplatform/KDevelop. This is a generic configuration interface and library which allows users to customize which folders/files KDevelop includes in a project.

How to use it
Context Menu

The simplest way to use the new code to exclude items from a project, is to use the context menu. Simply right click on any folder/file (not the project root, or anything target related) and choose the “exclude item from project” action. This will then add a filter for the selected item(s). If you want to undo this, go to the project configuration (see below) and remove the filter.

Configuration

For more advanced management of project filters, or to remove filters and/or adapt the default filters, you need to go to the project configuration and select the new “Project Filter” config page. This allows you to add new filters, remove existing ones or edit them, including reordering them.

How it works

The pattern syntax uses QRegExp::WildcardUnix on relative project paths. This should be fairly easy to grasp and similar to what you know from e.g. .gitignore or svn:ignore. Generally, if you can write a .gitignore file then you should be able to configure your KDevelop project as well!

If you wonder what you can do with the include/exclude pattern type, see again the documentation of .gitignore and it’s !pattern syntax. It allows you to selectively unhide some paths which where previously hidden. E.g. you can only show *.cpp files in your project by first excluding all files * and then adding an inclusive pattern for *.cpp.

Note that the distinction between files/folders is probably not required most of the time. It does allow for some better performance though and may make some patterns more easy to write.

Note to Users-Who-Compile-Master-From-Source

Those of you who build KDevelop/KDevplatfrom from git master, please make sure to remove kcm_kdev_genericprojectmanagersettings.so and just to make sure also remove kcm_kdev_genericprojectmanagersettings.desktop. Otherwise you’ll get the old generic manager configuration alongside the new project filter, which may break things.

If you install KDevelop via the package manager of your distribution, you should have nothing to do but wait until we release a new KDevelop version (4.6) which will then include this new feature!

Anyhow, please test this and report bugs on bugs.kde.org. Feature requests also welcome, but I like that this new UI is rather simple and still powerful. I’m reluctant to add more here. Something which I do want to implement in the future though is support for reading e.g. .gitignore files and hiding files based on that from the project. The new API I added to KDevplatform should make this rather easy btw. You/I just have to write a new plugin implementing the IProjectFilterProvider interface and then we could e.g. query git directly for whether a given path is included or not.

Cheers!

» Akademy 2013 - A Blast!

Sat, 07/20/2013 - 01:23

Wow…

I’ve been gone for eight days and returned just a few hours ago to Berlin. It doesn’t feel like that. The last days went by in a blur of awesomeness! The reason why I didn’t write a single blog post in between is just that I never had a spare minute for that. I arrived on Thursday and instantly enjoyed the warmth of Spain / the Basque country and had a tasty and cheap Menu del Dia at a local Restaurant with fellow KDABians and other KDE friends. Then just a few hours later the first party started, near the old district of the city - amazing! More and more hackers and helpers arrived, the atmosphere was once again so good. The social aspect of this years Akademy was without comparison in my opinion - seriously: Hats off to the local team, you did an amazing job!

While the social events on the following days have been just as awesome or even awesomer to awesomest - I especially enjoyed the day trip and jumping into the ocean! - the technical side of Akademy delivered just as well: My favorite talks this year where Mirko’s about ThreadWeaver, which we heavily use in KDevelop. His roadmap and polished API looks much better than what we have nowadays and should allow for much nicer code which might even perform better - kudos!

Similarily, I liked Volker’s talk about Expression Templates and Kevin Krammer’s presentation of Declarative Widgets a lot. Both of them are colleagues of mine, so the contents weren’t that new to me - yet hearing it all in a concise and entertaining manner is always worth it. The crowd also seemed to enjoy it. Martin Grässlin’s talk about being the 1% corner case was also highly entertaining and gave a very interesting insight into the problems he tackles day to day.

There have been other, less technical talks, which I also appreciated greatly: Kevin Otten’s visionary roadmap for KDE as a community or Till’s highly entertaining presentation of BlackBerry. Which brings me to the sponsors - many thanks! Without them, this year’s event would surely not have been as good as it was!

Oh boy, I already wrote a lot, yet only covered the first three days… After the AGM and presentations on the week end followed a full week of highly educational BoF’s - both around KDE topics (such as KF5, KDevelop, …) or “plain” Qt during the Qt Contributor Summit. This was my first time attending the QtCS and I definitely want to see more of this! Discussing the future of QtWebKit and learning more about whats cooking in QtCore was certainly worth it. Being in contact to the QtCreator and QML guys also helps from a tooling point of view in general and from a KDevelop pov in particular. Oh and we got a nice BlackBerry Z10 phone - many thanks for that!

The afternoons are mostly a blur - I mostly remember lots of Foosball, Socializing, Drinking, meeting Friends of Old and New, Eating, Partying etc. pp.

Anyhow, I think I need to stop here.

tl;dr; Thank you local KDE team for organizing such an awesome Akademy + QtCS 2013! Thank you Sponsors for making this possible!

PS: All of you who attended talks on the weekend: Go and rate them! The speakers will love you and provide you with even better talks next year! Go to either the page for the talks on saturday or the talks on sunday, then pick the sessions you attended and finally hit the “Feedback” link!

PPS: I definitely have to come back to the Basque country, the country side looked beautiful and Bilbao alone is worth the trip! And I didn’t even have time to visit the Guggenheim…

Cheers, see you next year you insane awesome crowd of KDE people!