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.