open-source project looking for novice help?

I'm teaching an introductory Haskell course this semester (http://cis.upenn.edu/~cis194/fall14/) and am about to assign students their final project. Is there anyone out there who would welcome getting some novice help on an open-source project? You certainly don't need to commit to accept their patch(es), but I know it would be a great experience for some of the students to contribute to the "real" world of Haskell, instead of just doing exercises. You can get an accurate summary of what we've covered by looking at the lecture titles at http://cis.upenn.edu/~cis194/fall14/lectures.html Students will be choosing projects starting next week, and will need to have them completed by Dec. 15 or so. A good project is about 20 hours of work. Thanks! Richard

Pandoc has a very accessible codebase in some ways (ie it does not use
advanced language features) but in other ways it is too complicated
(ie the markdown reader). A student could potentially add either a
reader or a writer but doing so in 20 hours would be quite ambitious.
Here a few formats which I have plucked from the issue tracker:
- Dokuwiki reader
- WikiCreole reader (this looks quite easy)
- Perl POD/Pod reader
- Vimwiki reader
- HTMLZ reader (quite easy)
... any other document format is also welcomed
Beside that there is some internal work which needs doing
- Adding support for transclusion by using a free monad to factor out
effects (adding this to the txt2tags reader should be easy)
Before commencing with the above I would advise posting a plan of
action to the mailing list to increase the chances of getting merged.
Any students are welcome to mail me if they are interested in pandoc
and want to know more.
On Fri, Nov 7, 2014 at 6:40 PM, Richard Eisenberg
I'm teaching an introductory Haskell course this semester (http://cis.upenn.edu/~cis194/fall14/) and am about to assign students their final project. Is there anyone out there who would welcome getting some novice help on an open-source project? You certainly don't need to commit to accept their patch(es), but I know it would be a great experience for some of the students to contribute to the "real" world of Haskell, instead of just doing exercises. You can get an accurate summary of what we've covered by looking at the lecture titles at http://cis.upenn.edu/~cis194/fall14/lectures.html
Students will be choosing projects starting next week, and will need to have them completed by Dec. 15 or so. A good project is about 20 hours of work.
Thanks! Richard
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

On 11/07/2014 06:40 PM, Richard Eisenberg wrote:
I'm teaching an introductory Haskell course this semester (http://cis.upenn.edu/~cis194/fall14/) and am about to assign students their final project. Is there anyone out there who would welcome getting some novice help on an open-source project? You certainly don't need to commit to accept their patch(es), but I know it would be a great experience for some of the students to contribute to the "real" world of Haskell, instead of just doing exercises. You can get an accurate summary of what we've covered by looking at the lecture titles at http://cis.upenn.edu/~cis194/fall14/lectures.html
Students will be choosing projects starting next week, and will need to have them completed by Dec. 15 or so. A good project is about 20 hours of work.
Thanks! Richard
I'd love to snatch a helper for something but I think most of what one would consider ‘serious’ projects would take a bit more than 20 hours: I'd welcome some patches for Yi, Haddock or even some dabbling in GHC's lexer/parser if you have an ambitious student who wants to get involved further ;). Alas, that's probably not the kind of scope you're after. For something a bit easier, I can suggest two projects which offer multiple sub-projects: * [1] is a front-end to tesseract[2] OCR software. Possible work involves improving the interface (hey, I'm a programmer not a designer…), adding features such as on-the-fly translation through Bing or another service (this seems like a nice little project, you end up with a lib to talk to the service even if they don't get to integrate it), add support for history (probably not enough for a project by itself) or if the student is more ambitious, automatic region detection as boasted by the (proprietary) software KanjiTomo[3]. So there's talking to the service, messing around with a GUI (gtk2hs) or work with images/pattern recognition (I can only help with Haskell side here). The plus side is that the existing code is pretty primitive if they choose to do something with the GUI, no 7-layer deep monad transformers. * free-game[4] is a game library but it is pretty small in what it offers: you get some basic stuff but it's not a full-blown suite. A project could involve writing useful libraries around it, I could come up with some specifics if there's interest. I can't offer help with hacking on free-game itself but I wouldn't mind overseeing any libs that spawn around it. * EDIT just before sending: For a while now I have quite an annoyance with criterion; it produces those pretty HTML + JS graphs you can mouse-over and stuff, right? The problem is that they are absolutely useless to the point of hanging your browser if you have more than a few benchmarks on the page. I think a nice project would be developing a reporting package with ‘diagrams’ or something which takes Criterion's output (CSV) and spits outs images we can actually inspect. This seems like something a student can get on with pretty easily and take it as far as they wish while having practical value at the same time. I wish I could offer more ideas but it's hard to come up with something that will fit into 20 hours including getting the feel for things and that might be interesting to the student, have some value to the rest of us and doesn't feel like an exercise. I am a big fan of ‘learn by actually hacking stuff’ approach, just not in such a (relatively) small timescale ;). I don't mind overseeing someone if they happen to pick anything I mentioned here (with the exception of GHC itself) or something that interests me. I don't mind volunteering as ‘overseer’ for some other project if the student is willing and is likely to join the community for longer. [1]: https://github.com/Fuuzetsu/tsuntsun [2]: http://code.google.com/p/tesseract-ocr/ [3]: http://kanjitomo.net/ [4]: http://hackage.haskell.org/package/free-game -- Mateusz K.

One suggestion is to write a paper on how to create a simple hybrid mobile app in Haskell. Just basic functionality like take a picture from a mobile device, geotag it and store it on the server. Fullstack toolset to write hybrid mobile apps similar to the below project https://github.com/mtolly/hs-cordova -----Original Message----- From: Haskell-Cafe [mailto:haskell-cafe-bounces@haskell.org] On Behalf Of Mateusz Kowalczyk Sent: Saturday, November 8, 2014 6:31 AM To: haskell-cafe@haskell.org Subject: Re: [Haskell-cafe] open-source project looking for novice help? On 11/07/2014 06:40 PM, Richard Eisenberg wrote:
I'm teaching an introductory Haskell course this semester (http://cis.upenn.edu/~cis194/fall14/) and am about to assign students their final project. Is there anyone out there who would welcome getting some novice help on an open-source project? You certainly don't need to commit to accept their patch(es), but I know it would be a great experience for some of the students to contribute to the "real" world of Haskell, instead of just doing exercises. You can get an accurate summary of what we've covered by looking at the lecture titles at http://cis.upenn.edu/~cis194/fall14/lectures.html
Students will be choosing projects starting next week, and will need to have them completed by Dec. 15 or so. A good project is about 20 hours of work.
Thanks! Richard
I'd love to snatch a helper for something but I think most of what one would consider 'serious' projects would take a bit more than 20 hours: I'd welcome some patches for Yi, Haddock or even some dabbling in GHC's lexer/parser if you have an ambitious student who wants to get involved further ;). Alas, that's probably not the kind of scope you're after. For something a bit easier, I can suggest two projects which offer multiple sub-projects: * [1] is a front-end to tesseract[2] OCR software. Possible work involves improving the interface (hey, I'm a programmer not a designer.), adding features such as on-the-fly translation through Bing or another service (this seems like a nice little project, you end up with a lib to talk to the service even if they don't get to integrate it), add support for history (probably not enough for a project by itself) or if the student is more ambitious, automatic region detection as boasted by the (proprietary) software KanjiTomo[3]. So there's talking to the service, messing around with a GUI (gtk2hs) or work with images/pattern recognition (I can only help with Haskell side here). The plus side is that the existing code is pretty primitive if they choose to do something with the GUI, no 7-layer deep monad transformers. * free-game[4] is a game library but it is pretty small in what it offers: you get some basic stuff but it's not a full-blown suite. A project could involve writing useful libraries around it, I could come up with some specifics if there's interest. I can't offer help with hacking on free-game itself but I wouldn't mind overseeing any libs that spawn around it. * EDIT just before sending: For a while now I have quite an annoyance with criterion; it produces those pretty HTML + JS graphs you can mouse-over and stuff, right? The problem is that they are absolutely useless to the point of hanging your browser if you have more than a few benchmarks on the page. I think a nice project would be developing a reporting package with 'diagrams' or something which takes Criterion's output (CSV) and spits outs images we can actually inspect. This seems like something a student can get on with pretty easily and take it as far as they wish while having practical value at the same time. I wish I could offer more ideas but it's hard to come up with something that will fit into 20 hours including getting the feel for things and that might be interesting to the student, have some value to the rest of us and doesn't feel like an exercise. I am a big fan of 'learn by actually hacking stuff' approach, just not in such a (relatively) small timescale ;). I don't mind overseeing someone if they happen to pick anything I mentioned here (with the exception of GHC itself) or something that interests me. I don't mind volunteering as 'overseer' for some other project if the student is willing and is likely to join the community for longer. [1]: https://github.com/Fuuzetsu/tsuntsun [2]: http://code.google.com/p/tesseract-ocr/ [3]: http://kanjitomo.net/ [4]: http://hackage.haskell.org/package/free-game -- Mateusz K. _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

Hi Richard,
On Sat, Nov 8, 2014 at 7:40 AM, Richard Eisenberg
I'm teaching an introductory Haskell course this semester (http://cis.upenn.edu/~cis194/fall14/) and am about to assign students their final project. Is there anyone out there who would welcome getting some novice help on an open-source project? You certainly don't need to commit to accept their patch(es), but I know it would be a great experience for some of the students to contribute to the "real" world of Haskell, instead of just doing exercises. You can get an accurate summary of what we've covered by looking at the lecture titles at http://cis.upenn.edu/~cis194/fall14/lectures.html
Students will be choosing projects starting next week, and will need to have them completed by Dec. 15 or so. A good project is about 20 hours of work.
Hope I'm not too late to chime in! I maintain a GUI testing package called Robot [1]. It's a simple library with clear semantics which seems quite suitable for your students. Some project ideas, from easiest to hardest: * Taking screenshots. XHB exposes a GetImage call [2]; it shouldn't be too much work integrating that into the library. * Adding a configurable delay between operations. This involves some work with monads (ReaderT specifically). * Windows and Mac support. Some good practice with Cabal and the FFI here. * xdotool [3] does a few things, like searching for windows by title, that I'd like to see in Robot. Porting some of these features over sounds like a good (albeit open-ended) project. Hope this helps. Chris [1] http://hackage.haskell.org/package/robot [2] http://hackage.haskell.org/package/xhb-0.5.2014.4.10/docs/Graphics-XHB-Gen-X... [3] http://www.semicomplete.com/projects/xdotool/

Hi Richard Eisenberg, Sorry for the late reply, but I just read this. I am not sure how important/big of a project you search for, but I a couple of tools (for my own use atm) that I develop as open-source in Haskell and would be great if they could be made more usable for the public and eventually create a Hackage package. One that might be good for a introductory FP course project is Cryptographer[1]. It's objective is to encrypt data in html files so you can publicly share those files but only ppl with the password can see the contents. The nice thing is that you can send one of those files to anyone since it's html so all you need is a browser to open it. Anyways, in my wishlist (and future steps) for this tool I have the following: * When appending data to an encrypted file, add checks to ensure the provided decryption key is correct (currently, if you give a wrong key it simply decrypts gibberish and appends your content to it) * Add support for data other than text. Ie. embed images and files by encrypting the base64 encoding of it's bits. * I use it primarily for passwords, so would be nice to add some tools for them. In particular, it would be nice if the encrypted file could contain buttons which one can click to copy passwords into clipboard. Also if it could have a setTimeout() somewhere so the file gets encrypted again after some time automatically. * Add more ciphers. Currently I encrypt data using TwoFish. I use it bc I like the cipher but also because since I use GHCJS to generate the html file that performs decryption, the cipher must be written 100% in Haskell (or do some ffi's to an external js library). I used to support BlowFish as well but I removed it since the cipher is not 100% secure. * A UI (both html and desktop) would be nice. Even if encryption could be done 100% on a HTML UI would also be advanced. But in order for appending to work over the net, code has to be added so files are retrieved via Ajax (not wget as I currently do it :P). * Improve the command line interface. I use my own experimental extension of CmdArgs for the command line (which I wrote only to try GHC Generics out). An ambitious student could consider improving that tool [2] or simply using standard cmdargs for the command line arguments. The most `advanced` library I use in the project is Pipes which is easy to gasp and a lot of the code is pure code (ie. encryption algorithms, generating html, ect) so that makes things simple as well. Hope to hear from you and best regards, Ernesto Rodriguez Master's Student Utrecht University [1] On Friday, November 07, 2014 01:40:00 PM Richard Eisenberg wrote:
I'm teaching an introductory Haskell course this semester (http://cis.upenn.edu/~cis194/fall14/) and am about to assign students their final project. Is there anyone out there who would welcome getting some novice help on an open-source project? You certainly don't need to commit to accept their patch(es), but I know it would be a great experience for some of the students to contribute to the "real" world of Haskell, instead of just doing exercises. You can get an accurate summary of what we've covered by looking at the lecture titles at http://cis.upenn.edu/~cis194/fall14/lectures.html
Students will be choosing projects starting next week, and will need to have them completed by Dec. 15 or so. A good project is about 20 hours of work.
Thanks! Richard
participants (6)
-
Anon 2014
-
Chris Wong
-
Ernesto Rodriguez
-
Mateusz Kowalczyk
-
Matthew Pickering
-
Richard Eisenberg