Warning, /utilities/krusader/doc/development/index.md is written in an unsupported language. File is not indexed.

0001 # Krusader Development Documentation
0002 
0003 This reference will help you to get started with Krusader development.
0004 
0005 
0006 ## Krusader resources for users
0007 
0008 * [Project homepage](https://krusader.org/)
0009 * [Release downloads](https://download.kde.org/stable/krusader/)
0010 * [User mailing-list](https://groups.google.com/group/krusader-users) — for user questions, tracked by maintainers, answered by users and maintainers
0011 * [System & Utilities forum on kde.org](https://forum.kde.org/viewforum.php?f=225) — user questions rarely appear here, answered by forum community
0012 * [Bugzilla](https://bugs.kde.org/buglist.cgi?product=krusader) — all bugs and wishes are tracked here
0013 * [Krusader extensions](https://store.kde.org/browse/cat/370/ord/top/) — user-contributed styles and user actions
0014 * [Krusader app page on kde.org](https://kde.org/applications/en/utilities/org.kde.krusader)
0015 
0016 
0017 ## Krusader resources for developers
0018 
0019 * [Developer mailing-list](https://groups.google.com/group/krusader-devel) — for development discussion and questions
0020 * [Repository](https://invent.kde.org/utilities/krusader)
0021 * [Repository mirror on GitHub](https://github.com/KDE/krusader) — pull requests are ignored here
0022 * [Automatic builds](https://build.kde.org/job/Extragear/job/krusader/)
0023 * [Krazy: static code analysis](http://ebn.kde.org/krazy/reports/extragear/utils/krusader/index.html)
0024 * [Krusader coding style](https://techbase.kde.org/Policies/Frameworks_Coding_Style) — same style as for Frameworks
0025 * [Release Howto](release-howto.md) — step-by-step release guide
0026 * [krusader.org website repository](https://invent.kde.org/websites/krusader-org) — the website is deployed via CI from this repo
0027 
0028 ### General KDE development resources
0029 
0030 * [KDE developer mailing-list](https://mail.kde.org/mailman/listinfo/kde-devel)
0031 * [KDE general announcements mailing-list](https://mail.kde.org/mailman/listinfo/kde-announce)
0032 * [KDE applications release announcements mailing-list](https://mail.kde.org/mailman/listinfo/kde-announce-apps) — [we announce](release-howto.md#send-a-letter-to-mailing-lists) Krusader releases here
0033 * [IRC channel #kde-devel on Libera Chat](irc://irc.libera.chat/kde-devel) — for quick questions regarding anything related to KDE development
0034 * [Git hooks for KDE Bugzilla](https://community.kde.org/Infrastructure/Git/Hooks#Keywords) — use these keywords in your commits
0035 * [Closing issues through commit messages](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues) — add "Resolved #xxx" in a commit message to close a GitLab issue automatically
0036 
0037 ### Krusader dependencies
0038 
0039 * [KIO API](https://api.kde.org/frameworks/kio/html/index.html) — KIO is heavily used for file related operations (local and remote).
0040 * [KIO repository](https://invent.kde.org/frameworks/kio)
0041 * [KBookmarks repository](https://invent.kde.org/frameworks/kbookmarks) — used for editing Krusader bookmarks
0042 
0043 ### Recommended IDE and developer tools
0044 
0045 * [KDevelop IDE](http://kdevelop.org)
0046 * [Qt Creator IDE](https://www.qt.io/ide/)
0047 * [Cuttlefish](https://community.kde.org/Plasma/DeveloperGuide#Icon_Viewer:_Cuttlefish) — a useful icon browser for KDE
0048 
0049 ### Recommended reading
0050 
0051 * [Qt Howto pages](https://wiki.qt.io/Category:HowTo)
0052 * [Qt New Signal Slot Syntax](https://wiki.qt.io/New_Signal_Slot_Syntax)
0053 * [Freedesktop icon names](https://specifications.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html) — official cross-DE icon names, please try to use these first and fallback to the icon names included in Breeze to be more independent from specific icon themes
0054 
0055 
0056 ## Contributing
0057 
0058 ### Quick guide
0059 
0060 1. Get a [KDE identity account](https://community.kde.org/Infrastructure#Identity_Accounts).
0061 2. Fork the [Krusader repository](https://invent.kde.org/utilities/krusader).
0062 3. Clone your fork to your dev box.
0063 4. Make changes in your local repository in a branch.
0064 5. Push your branch to the fork.
0065 6. Create a merge request (aka pull request) to the main repo, mark it with "Needs Review" label.
0066 7. Wait for devs to review and resolve all comments.
0067 8. Once the label is changed to "Approved" and all threads are resolved, devs will merge your change to the main repo.
0068 
0069 Find more details in [Forking workflow](https://invent.kde.org/help/user/project/repository/forking_workflow.md).
0070 
0071 ### Commit guidelines
0072 
0073 Familiarize yourself with commit message style by reading several commit messages in the repository. Notice that for simple changes we use single commits and for multiple related changes we use branches and merge them into master with a descriptive merge commit message.
0074 
0075 If your change fixes a bug reported on bugs.kde.org, use both the `FIXED:` keyword with the bug number in square brackets and bug title, and `BUG:` keyword that triggers the Git hook to close the bug. Refer to an example below.
0076 
0077 Your change must be reviewed and approved before you can push it to master branch.
0078 You must adhere to [Krusader coding style](https://techbase.kde.org/Policies/Frameworks_Coding_Style) and use the best coding practices.
0079 
0080 Your commit (or branch merge if your change is a series of commits) must contain the code review link. It's recommended to place it on the last line and separate it from summary with an empty line. For example:
0081 
0082 ```
0083 One-line commit title
0084 
0085 Description of the change. The change description
0086 continues.
0087 
0088 FIXED: [ 123456 ] Bug title in case you fixed a bug
0089 BUG: 123456
0090 
0091 Discussion: https://invent.kde.org/utilities/krusader/-/merge_requests/7
0092 ```
0093 
0094 Gitlab understands the discussion link and nicely [integrates it](https://invent.kde.org/help/user/markdown#special-gitlab-references) into the UI like this: utilities/krusader!7 ([see example commit](9198345c62ff6c2337fb37c9913bff933f57414b)).
0095 
0096 Once you push the commit to the repository, it will be automatically discovered by the Gitlab and it will close the merge request.
0097 
0098 If your changes are important enough to be included in the ChangeLog, please add a line to the commit message beginning with one of these keywords {`FIXED:`, `ADDED:`, `CHANGED:`, `REMOVED:`} and a description. For example:
0099 ```
0100 CHANGED: When the big red button is pressed, foo is activated and not bar anymore
0101 ```
0102 This line should not be the title of the commit message.
0103 If your change spreads across multiple commits, use the keywords and discussion link in the merge commit message.
0104 Keep in mind that the link and the keywords should go to either your single commit or branch merge commit, i.e. only appear once in history.
0105 Check git history and ChangeLog for more examples of using the keywords.
0106 
0107 If your change contains multiple commits, which you'd like to keep, and you are still on top of master, please use `--no-ff` to keep it as a branch merge:
0108 ```
0109 git checkout master && git merge --no-ff feature/new-foobar-widget
0110 ```
0111 and then amend the commit message accordingly. Substitute `master` with your base branch if needed.
0112 
0113 ### FAQ
0114 
0115 > I want to fix a bug but there is no bug report for it yet. Do I need to file one?
0116 
0117 No, not if you are certain that it really is a bug. Feel free to just submit a review.
0118 
0119 > I am unsure about the right approach to solve an issue, what is the best place to discuss?
0120 
0121 Ask us on the [developer mailing list](http://groups.google.com/group/krusader-devel).
0122 
0123 > How do I start tracking Krusader bug reports?
0124 
0125 1. Sign-in to [Bugzilla](https://bugs.kde.org/).
0126 2. Go to Preferences → Email Preferences tab.
0127 3. On the "User Watching" section add `krusader-bugs-null@kde.org` to your watch list.