Short description: The goal of this project is to increase the functionality of Darcsden. Darcsden is an open source repository hosting platform for darcs, written in Haskell. The main features are authentication from Github/OpenID, Password Recovery, Editing repository files online, and comparison between a repository and its forks.
About the Project
The goal of this project is to increase the functionality of Darcsden. Darcsden is an open source repository hosting platform for darcs, written in Haskell. The main features are authentication from Github/OpenID, Password Recovery, Editing repository files online, and Comparison between a repository and its forks.
Benefits to the community
Many open source projects expect a good hosting platform for the VCS they pick. Darcsden is a repository hosting platform for darcs, hosted at darcs.net. However, it is missing many of the features that some of the more sophisticated platforms offer. This project would hopefully increase the attractiveness of using darcs as a vcs.
The must have features are:
- Login with github/openid: Lets existing users link their darcsden account to their openid/github accounts. Allow login/account creation with openid/github credentials. This reduces the burden of registration, password remembrance, etc.
- Change password: Give user the option to change password by sending email to the user to reset their password. This is one of the most requested features for darcs hub.
- File edit: Add an option to edit a file on the repository through the web, and then record the changes. This is especially useful for quick or casual edits. This feature mirrors github's Online Editing feature.
- Comparing a repository with one of its forks: Show how many patches each of the fork is ahead/behind by wrt the repository, and a further option to display the patches by which the repositories differ. Darcs has an inbuilt function, which finds the uncommon patches between the patch sets of two repositories. This is useful for identifying the relationship between the two repositories. This feature mirrors github's analyze branches feature.
These are the nice to have features:
- Packs support: Give options to create/remove packs. Packs lead to faster repository get for large repos. One of the problems with packs is that if n patches are applied onto the repository after packs was built, then during get all those patches are then applied to the pack, which makes get slower. Hence, packs has to be synchronized with the repository every so often. Ideally darcsden would do this automatically.
- Patch bundles: Lets users upload patches to a repository, which the repository owner can then decide to apply or reject. The bundles could also be received using darcs send. darcs send supports sending to http urls via post, and thus darcsden also can recive patches this way. This feature is an equivalent for github's pull requests. Patch bundles simplifies the process of sending, and applying patches to a repository.
- Changes and Annotate on files: Give options to view changes and annotate of a file. Changes and annotate are basic features of darcs, and thus darcsden can support them. This feature is in the equivalent of changes and blame view in Github.
- Website hosting, with hakyll support: If the repository has hakyll code, generate and host the website. This feature is in lieu of github pages.
- Patch index support: Give options to create/remove patch index. Create patch index by default at repository initialization. Patch index speeds up changes and annotate on a file.
- Week 1,2: Auth using openid/github
- Week 3: Resetting password
- Week 4: File editing in darcsden
- Week 5: Show relationships between repository, and its forks
- Week 6: Midterm evaluation
- Week 7: Packs Support
- Week 8: Patch bundles
- Week 9: Changes and Annotate on files
- Week 10,11,12: Buffer
- Website hosting via hakyll
- Patch index support
- Lack of experience with
I am a final year Bachelors student, enthusiastic about Haskell. I have previous participated in GSoC last year under Haskell organization for darcs. I use darcs as my main vcs, and love contributing to it.