Thank you very much! This sounds like a well-defined target for my students.
I agree that they might finish it sooner rather than later, so I appreciate that it could lead to additional work.
I’ll run this past my class, and will let you know if there are immediate questions, etc.
Assoc Prof, CSSE
From: Jeroen De Dauw [mailto:firstname.lastname@example.org]
Sent: Wednesday, November 06, 2013 12:17 PM
To: James HK
Cc: Neill Mitchell; Chenoweth, Stephen V; Semantic MediaWiki developers
Subject: Re: [SMW-devel] A list of suggested developments for undergrads to try?
With regards to the objective to engage in OO and design pattern
development, Semantic Results Formats does have several design issues
(misuse of inheritance, violation of SRP etc.) which are rather
counter-productive to the stated objective.
I second this. SRF is not suited to learn students how to something well. The same holds for MediaWiki and SMW. We are working on removing the later from the list, though it is not there yet.
So, do you have specific ideas that come to mind?
How about creating a fresh implementation of our wikitext ask query parser?
This would be fairly self contained and can be done without touching the existing implementation in SMW core. When its ready it could then be used to replace the existing implementation, though this step would likely be out of scope. This can be developed without knowledge of MW or SMW (expect Ask queries), and requires neither to be installed. Implementation would start from scratch, though one can look at the existing one in SMW. The people doing this can thus experiment with several designs, do not have to bother with unrelated code, and work on top of well designed code, rather then the typical example of legacy code.
The role of this parser would be to turn an ask query definition in wikitext into the corresponding PHP object definition. The input would thus be something like  into a Query  object.
This is something that needs to happen at some point before we can implement related new functionality. So it'd be very helpful if this item was tackled for us.
The item is rather smallish, and perhaps to small to fill the course. Additional things can be done on top however. If this sounds good to you, I'll describe it a bit more on a wiki page and link to the relevant resources.
Jeroen De Dauw
Don't panic. Don't be evil. ~=[,,_,,]:3