|
| This Week... |
|
Work begins on Ruby language support in KDevelop 4. Work continues in the KReversi code rewrite. Kalzium gets functionality to visually show the country an element was discovered in. Automatic regression testing for Kate. Mimetype and metadata support for the XML Paper Specification format. Strigi can now use outside applications to index files outside its core scope, such as PDF files. KJots gets greatly improved find and replace functionality. Many improvements in supporting different archive formats in KArchiver.
|
Matt Rogers discusses the latest developments in KDevelop:
|
Development on KDevelop 4 is looking very promising at the moment. Hamish Rodda has done great work on the C++ parser, improving the speed, providing some nice custom highlighting that uses the parser, etc. Eventually, we hope to offer some refactoring features for C++ in addtion to navigation, code templates (eg. switch generation), integrated documentation. We have lots of ideas. :) Java and C# support are also being worked on and they'll get many of the same features as the C++ support as well.
We've also started integrating CMake and Autotools into KDevelop 4 for use as build systems. They should provide more and better features than their KDevelop 3 counterparts.
I'd also like to mention that the integrated Qt Designer support for KDevelop completely rocks. The trolls have done a marvelous job of providing a very useful framework for those wanting to embed designer in their own apps for use during development.
Also in the works, as part of Google's Summer of Code program are three very interesting projects. C# Support, Teamwork mode, and a generic refactoring API were all submitted as part of the Summer of Code program, and we've gotten some very promising results:- Jakob Petsovits is the student working on the C# support, and he is a parsing genius. He's done some really nice work with both the C# and the Java parsers and I'm sure the results will be outstanding.
- David Nolden is the student working on the Teamwork mode for KDevelop and that's really coming along. Teamwork mode will feature some nice patch management and review, the ability to send and receive text messages, very similar to IM, and file collaboration has also been worked on.
- Tom Stephenson is the student working on the generic refactoring framework. Sadly, due to the slightly undeveloped state of our code model, parser, and other things that will be needed for refactoring during the SoC period, Tom only has a few small refactorings to show for his SoC project, but it does highlight the many possibilities in store for refactoring support and I hope that Tom has time during his studies to continue to help out in that area.
KDevelop 4 - It's gonna be great and you're gonna love it! :)
Screenshots of KDevelop 4 during various stages of development (mostly showing off what I was working on at the time):
Please note that none of these are current, but show off some of the functionality KDevelop will get.
|
|
An important project noted above is the KDevelop Teamwork Summer Of Code effort. I talked to David Nolden, the developer behind this feature about his work:
|
When I first heard about Summer Of Code I thought about proposing a project called "Advanced Code Completion for KDevelop 3"(with full support for templates, comments, etc.), but when that didn't go down well with most of the KDevelop developers (since they were already focused on KDevelop 4), I just started implementing it. I spent a lot of time working on that until SOC started (and even quite some time since then), and you can see the result in the current KDevelop 3.4 SVN tree. I finished everything I planned and more.
Some of the features:- Intelligent resolution of types.
- Support for templates like for example shared pointers.
- Support for implicit template-instatiation
- Nicer and more useful completion-list with items ordered in a useful way and indented by inheritance-depth, with popups that include comments and any other interesting information
- Many improvements in the parser, for example all comments are extracted and used in any possible way, macros are dealt with correctly, Enums are handled in a more useful way, and much more
- A powerful navigation-menu: Click any item within a function and see it's real type, a trace of all typedefs on the way to that type, information on all involved typedefs, classes, variables, functions, etc., and the same as a submenu for all involved template-parameters, argument-types, base-classes, etc.
- Improved jump-to-menus and navigation-bar.
- Highlighting of function-names in the navigation-bar and class-tree.
And countless other major improvements in code-completion and navigation.. see the feature list of the beta releases or the commit log to see all of them.
KDevelop 3 is doing well feature-wise, but currently lacks developers since the focus already is on KDevelop 4, but it'll take a long time until that is really usable, so I hereby encourage anyone interested to start using the SVN version of KDevelop 3.4 and hunt down a few bugs, to make sure that a stable version can be released soon.
Collaboration through the internet is fundamental to most open-source-software. Almost any open- and even closed-source-software might profit from better collaboration-possibilities. If you work for a project that has a collaboration-server, you can directly ask other developers working on the same project for very specific help, patches can be reviewed very quickly, and discussion can instantly take place within the documents themselves. File Collaboration may also be useful for discussion of new ideas, teaching, for friends less experienced in programming requesting help (Or am I the only one who is asked how to program something through ICQ again and again?), and simply because it's cool ;)
So I took the basic Idea for the Summer Of Code project "KDevelop Teamwork" from the Wiki where someone proposed it, and developed it using my own Ideas, trying to add some of the teamwork features I always missed in any IDE I ever used. :)
Generally it consists of four parts:- Client/Server Architecture
I created a multi-threaded library for networking, including client/server- and user-management, and a standalone server not dependent on Qt which can be run on any webserver and administrated using the console.
- File Collaboration
An arbitrary count of developers can collaboratively edit a dynamic set of files, and the edited documents can be dynamically transformed (for example chosen changes made by exactly one user could be undone, which will allow single-user undo, redo, etc.)
- Conversation
All users connected to any of the connected servers, as well as the servers themselves (in the case they are not standalone) can be contacted by using instant messages, collaboration-requests, patch-requests, in-document messages, etc.
The most interesting message for conversation is the in-document message: It can reference a position or piece of text within any document, and the receiver of the message automatically jumps to that document and highlights the referenced piece of text as the message is selected, and pops up a chat-window within the document itself at the found position, where other messages of the same thread may be selected and discussion can take place.
Any answers written into the chat will automatically reference the currently selected text. Referencing is simply done by marking a piece of text before sending a message, and the reference-position is being found by a fuzzy algorithm I developed which tries to find the correct place even within totally different documents (and is pretty successful at doing so).
- Patch Management
Every user can manage a set of patches (or other file types) for each project. They can either be files or dynamic patches which are automatically retrieved from commands on request (for example "svn diff"). Patches can be easily shared directly through the developer-list, using different access-levels.
A modified version of Kompare's diff3-library is used to get information from patches. Using that the patch-manager can automatically highlight all changes made by an applied patch within all documents, and allows you to easily browse through those positions so you can review the patch within the correct context and directly discuss about it using in-document messages.
They can be applied/reverted to the local tree using single buttons, and for diff-files it is possible to automatically determine whether the patch is already applied or not. If problems arise within the patching process they can be dealt with using an embedded console in the patch-management-window. It is important that all those features are well integrated: For example you can store the results of a file-collaboration-session as a patch into your local patches-list, and thereby share it with other developers and easily revert it at any time, and you can use in-document messages directly within the temporary file-collaboration files.
To store all the project-specific data (like patches), a ".teamwork" subfolder is created within the project directory.
I encountered many problems during development. Apart from one harddisk crash, the most annoying problem was the very unstable and (in the begginning) difficult to compile kdelibs/qt-copy/qdbus/kdesupport etc. combination, which again and again cost me days and hours just to get it working.
The most challenging part was the file-collaboration. Getting a simple form of collaborative editing to work was quite fast, but making the document-transformation work correctly in all test-cases really took some time, and I had to finish it after the deadline without stress (luckily I didn't mention anything like it in my application ;)). The trick was writing everything down and trying to solve it mathematically as I learnt at university, unfortunately I got that idea after days of unsuccessful hacking and trying - well... you live and learn :)
I was able to finish nearly everything I planned until the deadline, but unfortunately I missed the week I planned in my application for "debug, make it perfect", so that work is missing, and it shows :) Most of the work I did after the Summer Of Code ended was in other, more important parts (finishing the text-transformation algorithm, or fixing file-collaboration which stopped working after a kdelibs-update), but it is work I'll surely do. Then there's one other big problem, the executable-size when the executable is built with debug-information. During my work on this project I fell in love with templates and meta-programming, but I think the main reason is my use of boost serialization, I'll still have to work on that. Then of course i'll need some nice icons. :)
Here are some screenshots showing the results of my work:
Now that the Summer Of Code has concluded, the first thing I will do is working intensively for the institute of my university that paid me the whole year, and that I neglected since March because of my work for KDevelop 3 Code Completion and then the Summer Of Code. Of course, I won't forget KDevelop and KDE in general, since I like the Open-Source Idea a lot. I started working on Open-Source Software before I started the Summer Of Code, and I won't stop it now that it's over :) I'll keep maintaining the teamwork-module (and of course finish it), I'll keep caring about KDevelop, and maybe I'll start a project to make KDE more Tablet PC friendly if I can find the time for it.
|
|
Max Howell announces the long-awaited release of Filelight 1.0:
|
It started some months ago. I'd awake at night with images of concentric segmented rings flashing around my mind, calling to me, commanding me, jeering me, begging me to finish what I'd started.
I set to work. I created crop circles. I made elaborate handwoven murals with cotton and twine. I sailed the pacific in ever-increasing circles.
The dreams did not cease, instead they became ever more disparate and galling.
Then I realised they were actually asking me to finish Filelight. So I did. I hope you like it, my uncle did.
http://www.methylblue.com/filelight/
"Filelight 1.0 - it's a bit of alright." - Uncle Rodney
|
|
|
| Statistics |
|
| Contents |
|
|
Bug Fixes |
Features |
Optimise |
Security |
Other |
|
Accessibility |
|
|
|
|
|
|
Development Tools |
|
|
|
|
|
|
Educational |
|
|
|
|
|
|
Graphics |
|
|
|
|
|
|
KDE-Base |
|
|
|
|
|
|
KDE-PIM |
|
|
|
|
|
|
Office |
|
|
|
|
|
|
Konqueror |
|
|
|
|
|
|
Multimedia |
|
|
|
|
|
|
Networking Tools |
|
|
|
|
|
|
User Interface |
|
|
|
|
|
|
Utilities |
|
|
|
|
|
|
Games |
|
|
|
|
|
|
Other |
|
|
|
|
|
|
|
Bug Fixes |
|
|
|
|
|
|
|
|
|
|
|
Utilities |
|
Max Howell committed changes in /trunk/extragear/utils/filelight:
|
|
Fixes the "bug" where Filelight didn't update the map after a delete, it just invalidated it. I tried to implement a nice delete dialog, but no matter what I try the fugly KDE ui-server dialog pops up. Nice. Annoyed I am yes. |
|
|
|
|
|
|
Features |
|
Development Tools |
|
Matt Rogers committed changes in /branches/work/kdev-model-and-api-exper:
|
Now that I'm done doing the "yay! it works!" dance, it's time to commit!
Base the project model on QStandardItemModel and QStandardItem. This provides us a cleaner model implementation since we can use the APIs provided by Qt rather than using an abstract model and making up our own APIs.
The generic file manager is the only one that is correct in terms of display, and I have tons of bugs to fix, but this is a good first stopping point since i need to merge with trunk again. |
|
|
|
|
|
|
Alexander Dymo committed changes in /trunk/KDE/kdevelop/languages:
|
This commit is the start of Ruby language support for KDevelop 4. Implemented: - ruby LL(1) parser with kdevelop-pg parser generator - ruby lexer with flex - ruby language support stub (it doesn't do anything now)
To this moment the parser is able to parse simple expressions, class and method declarations. More stuff is pending, keep in touch ;) |
|
|
|
|
|
|
Alexander Dymo committed changes in /trunk/KDE/kdevelop/src/ideal:
|
|
Implemented initial framework for toolview numbering (idea is similar to what we have in newui in 3.4 - to have <Alt+number> accelerators for toolviews). |
|
|
|
|
|
|
Hamish Rodda committed changes in /trunk/KDE/kdevelop:
|
Last night and tonight's work...:
1) Use static deleters for singletons
2) Use new KUrl for KDevDocumentRangeObject when working with non-smart cursors. I found that even a blank KUrl (QUrl) allocates a QUrlPrivate, and this was hurting us - 5Mb memory use on a 1Mb document. Found on profiling with Massif.
3) Locking for the definition-use chain. - One top-level lock per chain for most functions - Per-object locking (internally) for external references - not finished - Use locking in client code
I have left debugging enabled for now... if you hit an assert, please email/irc me.
4) Disable the duchainviewer. For this to work, there is still a fair bit of work to be done: - need notification of major changes to a duchain while unlocked - need to create a proxy model which can forward data from any thread to the gui thread |
|
|
|
|
|
|
Hamish Rodda committed changes in /branches/work/kdevelop-threadsafety/ktexteditor:
|
New retrieve a token representing the current revision of a document. At a later point in time, new cursors and ranges can be created and translated to the current revision from a specified previous revision.
For example, this enables: - threaded programs can create cursors and ranges based on text they have received but which might have been changed by the user at the time they are to be created.
- editors can go accurately to the line,col position of a compilation error by saving a revision token for the last compilation. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Games |
|
Dmitry Suzdalev committed changes in /branches/work/kreversi_rewrite:
|
Now black & white chips may be used instead of colored ones. You can even change this on the fly! ;)
Few crash fixes also.
You know what? It's getting near the end. (Just joking - there's no end in software development ;) )
I'm in the mood of writing an overview of what to be done:
- Add number of chips statistics to status bar - Add the moves history widget. - Nice messagebox with stats at the end of the game - HighScoreswhite chips may be used instead of colored ones. You can even change this on the fly! ;)
Few crash fixes also.
You know what? It's getting near the end. (Just joking - there's no end in software development ;) )
I'm in the mood of writing an overview of what to be done:
- Add number of chips statistics to status bar - Add the moves history widget. - Nice messagebox with stats at the end of the game - HighScores |
|
|
|
|
|
|
|
|
|
|
Graphics |
|
Jesper Pedersen committed changes in /trunk/extragear/graphics/kphotoalbum:
|
* The checkboxes in the annotation dialog are now tristate, which means that there are no need for the "merge" and "remove" checkboxes. Also the "and" checkbox has been replaced with an "and" and a "or" radio button to make their meaning more understandable.
* BUGFIX: Solved this crash: edit a category name in the settings dialog, press Apply and press OK. (thanks to Christoph Moseler for finding this. |
|
|
|
|
|
|
Colin Guthrie committed changes in /trunk/extragear/libs/kipi-plugins/galleryexport:
|
Work towards supporting multiple galleries. I wont commit the changes to existing files just yet as it's not ready to go live. I am now able to define, edit, delete multiple galleries which save permanently in kipirc/wallet. Just need to update some more UI elements to use this new list of galleries when logging in. |
|
|
|
|
|
|
Brad Hards committed changes in /trunk/KDE/kdegraphics/kfile-plugins:
|
Check in an initial version of the kfile (meta-data) plugin for the XML Paper Specification format, which is an emerging Microsoft format for e-documents. The format is broadly similar in capabilities to what most people use PDF for. The approach in this document would probably work for similarly packaged files, including some of the stuff from Microsoft's Office 2007 format.
This plugin isn't the greatest example of XML handling, but it does work on almost all the files I tried it on.
It is known to crash on some files - those that use the interleaved Zip format. I just don't know how to protect from this case. It also won't work on anything that uses digital signatures (just not handled - we don't have enough XAML tools) and also won't work on zip files that uses the Zip64 extensions (because KZip can't handle that). |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Robert Knight committed changes in /trunk/KDE/kdebase/apps/konsole/konsole:
|
|
Allow multiple views to be connected to a terminal emulation. Looking at this as a model-view combination, the terminal image (TEScreen) becomes the model, and the terminal display (TEWidget) becomes the view. |
|
|
|
|
|
|
|
|
|
|
KDE-PIM |
|
Allen Winter committed changes in /trunk/KDE/kdepim/kmail:
|
forward port SVN commit 571208 by winterz:
Approved by Till. Put the state of the spell checker in a status box in a compose window. Remove the status bar message "As-you-type spelling checking enabled/disabled."
This not only looks better, but also helps me as I'm trying to debug why spell checking sometimes comes and goes for no good reason. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Alexandre Pereira de Oliveira committed changes in /trunk/extragear/multimedia/amarok/src:
|
Lastfm streams work with proxies. Mostly extracted from a patch by Martin Ellis. Unfortunately we can't use the dcop call for this, since it would cause those timing problems again. I tried hard not to break DAAP (what might even work with proxies as well, as soon as eean makes the necessary changes to his code, and stop using QHttp). |
|
|
|
|
|
|
|
|
|
|
Seb Ruiz committed changes in /trunk/extragear/multimedia/amarok/src/mediadevice/daap:
|
Place a button in the Daap toolbar "Share My Music". This allows for easy access to enabling/disabling the daap server.
This is an intermediary solution, this option should be moved to the collection config, but requies a shuffle of daap server stuff. |
|
|
|
|
|
|
|
|
|
|
Sebastian Trueg committed changes in /trunk/extragear/multimedia/k3b/src/projects:
|
I changed the GUI again! And this time I like it. I moved the backup chekbox into the advanced file system settings (for now there is a mkisofs bug which prevents this option from working properly anyway). Furthermore I removed the outdated warning about multisession DVDs. |
|
|
|
|
|
|
|
|
|
|
Alan Jones committed changes in /trunk/extragear/network/ktorrent/plugins/rssfeed:
|
Updated download code so that it removes a match if it fails to find a torrent and start it downloading
Rewrote the download processing code to remove the dependency on khtml - it now processes using standard Qt classes |
|
|
|
|
|
|
Alan Jones committed a change to /trunk/extragear/network/ktorrent/plugins/rssfeed/rssfeedmanager.cpp:
|
Update download code again to improve support for differing html pages
Adding exception handling for brute for torrent file detection (fixed crashes on some html files)
Added popup notifying user of failed download if the pressed the download button (automatic downloads don't throw popups) |
|
|
|
|
|
|
|
|
Office |
|
Thomas Zander committed changes in /trunk/koffice:
|
Make KWord old format styles-loading work again by filling the new data structures for parag/character/list styles and use that for the paragraphs. Fix quite some little buglets in the process. |
|
|
|
|
|
|
|
|
Jan Hambrecht committed changes in /trunk/koffice/libs/flake:
|
|
Implemented selection of multiple path points by using control key to add/remove points to/from the actual selection. All selected points can be deleted at once now. When dragging a node point, all selected path points can be moved at once. When dragging a control point, only the control point is moved. Rubberband selection of path points follows. |
|
|
|
|
|
|
Thomas Zander committed changes in /trunk/koffice/libs/flake:
|
Usability feature; reorder the order in which we look which handle the mouse is over, first trying the scale ones. This has the effect that very small items first scale and only then we will look at skewing etc.
Also remove some unused code that an earlier refactor left behind. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Utilities |
|
Will Stephenson committed changes in /branches/work/suse_kickoff/kicker:
|
|
Draw buttons correctly when in top down mode and detect the orientation at startup automatically. I won't work on run time alteration of orientation right now, pending upcoming rendering changes. |
|
|
|
|
|
|
Max Howell committed changes in /trunk/extragear/utils/filelight:
|
Adding the amarok crash handler to Filelight as it works a treat and I'd be interested by the results.
Also commiting my release documentation so next time I don't get stuck. |
|
|
|
|
|
|
Jaison Lee committed changes in /trunk/KDE/kdeutils/kjots:
|
|
After far more pain and hardship than I ever thought it would require, and pretty much the entirety of the past two weekends, I've finished refactoring the entire find/replace system for KJots. It now supports every kind of find/replace option generally available, including regexps and placeholders during replaces. And yes, you can also recursively search and replace all pages in the bookshelf, with or without a cute little Replace/Skip/All/Cancel dialog box if you wish to have one. |
|
|
|
|
|
|
Eric Coquelle committed changes in /trunk/kdenonbeta/karchiver:
|
|
Added support for comments in RAR archives Added support for comments in RAR archives & improved the Archive Infos dialog box improved the Archive Infos dialog box |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Jason Kivlighn committed changes in /trunk/extragear/utils/krecipes:
|
Localization update to allow *all* base data to be localized.
Instead of putting all this base data inside of a header file in the form of an array, they are loaded from a data file at runtime based on locale. There are four files to translate: property-data-LANG.txt, ingredient-data-LANG.txt, unit-data-LANG.txt, and prep-data-LANG.txt.
Also, the user gets a message if they ask to import nutrient data and there is no localized data for their language. They can continue, using English data, or decide not to do the import. |
|
|
|
|
|
|
Optimise |
|
|
|
Multimedia |
|
Mark Kretschmann committed changes in /trunk/extragear/multimedia/amarok/src:
|
Speed up playlist XML writing approximately 10 times. This patch considerably improves Amarok's overall performance with big playlists and also cuts down on shutdown time.
Details: Problem was that Playlist::saveXML() would invoke methods like MetaBundle::score(), which accessed the database in many cases. This database access was extremely slow, so we circumvent it and use cached values instead.
Another optimization is that we now write the XML data to a string before writing to the target file. |
|
|
|
|
|
|
Other |
|
KDE-Base |
|
Scott Wheeler committed changes in /branches/work/kde4/playground/base/tenor:
|
|
Moving some stuff over from another local project. There are still a couple of functions that I didn't convert and I haven't actually tested it, but moving towards synching with my local stuff. |
|
|
|
|
|
|
|
|
|
|
Leo Savernik committed changes in /branches/KDE/3.5/kdelibs/kate/part:
|
Introducing automatic regression testing for kate.
I lifted the regression tester from khtml, so you'll still find many debris from the conversion.
Conceptionally, it works like this: - start with regression directory - read testcases under directory tests/ - execute script on each test - compare result with template under baseline/ - if both are equal, consider test as passed
The tool works fully automatically. Additional testcases can be added easily by providing an initial testcase under tests/ and an accompanying script containing the statements as well as a proposed result template under baseline.
Shortcomings: - Testcase execution is *very* slow. - Some results are not deterministic. I.e. if you invoke ./testkateregression indent/csmart/openpar1.txt it will fail. If you run it in batch, it will pass. - Currently, there are only testcases for the c-style indenter. |
|
|
|
|
|
|
|
|
Multimedia |
|
Joe Rabinoff committed changes in /trunk/extragear/multimedia/amarok/src:
|
|
The incremental collection scanner, in conjunction with the AFT code, now causes the CollectionDB::fileDeleted() signal to be emitted when it detects files that were removed but not moved. This functionality was added to make it easier to add AFT support to the Moodbar; also, Jeff may use it in the Playlist. The API may change a bit when I actually write thef AFT+moodbar code, so don't use it before then. |
|
|
|
|
|
|
Seb Ruiz committed changes in /trunk/extragear/multimedia/amarok/src/mediadevice:
|
Put in the infrastructure to allow the user to decide whether to broadcast a daap server. This complies with the popular "no-open-ports" policy that many distributions (eg ubuntu) are now enforcing.
We need to make these configuration options much more visible, not in this poor config dialog. |
|
|
|
|
|
|
Networking Tools |
|
Joris Guisson committed changes in /trunk/extragear/network/ktorrent:
|
Major redesign of tracker handling, this is an overview of the changes: - Everybody wishing to provide potential peers to a torrent should derive from PeerSource - The AnnounceList class has been scrapped, - To replace it there is a PeerSourceManager class, this manages the trackers and the custom PeerSources. PeerSourceManager is derived from TrackersList so the page on the infowidget pretty much works the same. - Status field of the tracker will now add more detailed error messages - If a tracker sends a failure reason, we will now show this - If a tracker cannot be reached anymore, the switching will be properly handled (i.e. a started event is sent) |
|
|
|
|
|
|
Office |
|
Bart Coppens committed changes in /branches/koffice/1.6/koffice/krita/plugins/filters:
|
|
All of these don't work sufficiently (IMO) with the adjustment layers. So disable them. I'm pretty sad about some of them (oilpaint, wave), but as long as they don't work, they'll be disabled. If people have suggestions on fixing any of them, feel free to do so, I'd be very happy to see them reappear. |
|
|
|
|
|
|
Utilities |
|
Max Howell committed changes in /trunk/extragear/utils/filelight:
|
|
Made all the fixes suggested at www.englishbreakfastnetwork.org, a fantastic resource that I only discovered thanks to Google. Whoever it is who runs this place, I thank you! And you should market the service some more.. |
|
|
|
|
|