Grants talk:IEG/Dedicated Programming Compiler

Finalize your proposal by September 30! edit

Hi Marshallsumter. Thank you for drafting this proposal!

  • We're hosting one last IEG proposal help session in Google Hangouts this weekend, so please join us if you'd like to get some last-minute help or feedback as you finalize your submission.
  • Once you're ready to submit it for review, please update its status (in your page's Probox markup) from DRAFT to PROPOSED, as the deadline is September 30th.
  • If you have any questions at all, feel free to contact me (IEG committee member) or Siko (IEG program head), or just post a note on this talk page and we'll see it.

Cheers, Ocaasi (talk) 20:16, 25 September 2014 (UTC)Reply

Hi Ocaasi. Thank you for leaving the above note. I have modified the proposal to answer the commenter below, but if I may ask, is the WMF willing to assist (allow one or more of its dedicated programmers or software specialists) to install or help install a dedicated compiler and appropriate firewalls as needed to help this project succeed. I'm willing to do whatever is necessary to get these dedicated compilers to work, but I have no idea if WMF will help. --Marshallsumter (talk) 02:03, 27 September 2014 (UTC)Reply
Hi Marshallsumter, generally speaking, reliance on WMF technical staff makes an IEG grant ineligible. That is even more the case if your proposal requires any integration with the mediawiki core (requires code review). Instead, you would include budget in your proposal for hiring an expert for such a position and be responsible for managing that person (we would provide guidance). So you are able to hire your own technical contractors who can set up a compiler and firewalls. In addition, Wikimedia has its own servers that can host volunteer projects called Labs: https://wikitech.wikimedia.org/wiki/Main_Page. This way you would not have to worry about ongoing hosting (but you would be responsible for planning ongoing maintenance). Ocaasi (talk) 17:23, 28 September 2014 (UTC)Reply
Thank you for responding! I have modified the proposal, hopefully in accordance with the details you were kind enough to provide. All that's left is a Go Ahead! and where to put the compiler in Labs or the standalone. --Marshallsumter (talk) 17:53, 29 September 2014 (UTC)Reply

Lacks sufficient details edit

I think this proposal lacks sufficient details about what is actually being proposed and how it is intended the problem be fixed. I find lines like "Potential firmware or hardware: 10,000 USD" to be rather concerning (What does firmware have to do with any of this?). Bawolff (talk) 17:46, 26 September 2014 (UTC)Reply

I've added more details to the proposal in response to this comment. --Marshallsumter (talk) 12:23, 11 October 2014 (UTC)Reply
I think the word you're looking for is virtualization rather than firmware. Bawolff (talk) 20:23, 19 October 2014 (UTC)Reply

I would add also my request. May you clarify how you will distribute these compilers and how you solve the problem of licenses (if they are not free). In addition have you considered the problem of security? --Ilario (talk) 21:17, 10 October 2014 (UTC)Reply

The compilers (one per language, or updated ones to replace those already installed) are not distributed, although with a site license they can be. The problem with distribution of a purchased compiler is that anyone with a registered account could download it so the license may prevent this. The intent of the proposal is not to distribute purchased compilers. Free compilers for some languages are already available on the web. They are uploaded per their site licenses either into a lab. or into a stand alone computer at WMF and accessed from Wikiversity (any of them).
Security begins with either the lab. or the stand alone access. Ideally, only specific commands sent from user files gain access. Part of the use and training of programmers is to learn how to prevent hackers from damaging a system. The labs. are already maintained regarding security. The stand alone with limited access may require monitoring for hacker attacks just as the WMF mainframe is monitored. --Marshallsumter (talk) 12:23, 11 October 2014 (UTC)Reply

Details edit

I still find this proposal extremely short of details in what you are actually planning to do. There's no milestones, or a concrete criteria for what the finished product would look like (Being popular, well nice, is not a concrete criteria, as that can happen even if you don't do this project, and it might not happen even if this project is successfully completed). For example, its not even clear if you are planning to set up a web interface to various compilers/interpreters so that a user could have an ajaxy web interface, where in one text box they simply type out a program, and in another text box some text to feed into stdin, and see what comes out stdout or if you are more simply just planning to have a server where students can ssh into to play with compilers. If the latter is the case, can't one just use the already existing tools-dev.wmflabs.org (maybe that's stretching scope somewhat, but probably not that much), which already has compilers/interpreters for C, C++, java, fortran, java, python, perl, bash, awk, javascript (node.js), tcl, assembly, php, ruby, c# (mono), lisp (if you count emacs), go and probably others. Bawolff (talk) 20:23, 19 October 2014 (UTC)Reply

I've actually stated in the proposal exactly what I intend to accomplish. Here's a concept example:

A user at wikiversity opens a user subpage:User:Marshallsumter/GNUBasic. On this page the user sees an alias icon for GNUBasic. User clicks on alias icon and a window opens up titled: GNUBasic.

At the cursor (>) the user inserts the command:

>load "/GNUBasic/GNU_Basic_3.5.7/IntroductiontoBasic/SimpleProgram.bas"

When the compiler loads the source program "SimpleProgram.bas" the cursor returns and the command "run" is entered.

>run

The program returns a question.

Input array (i), work on array (w), work on successions (su)? >>

At the program cursor the user enters "i" without the quotes.

Etc. for whatever the user has put into the program.

Now, let's say I want to bounce from my user page at wikiversity to my user page at Wikitech and back, From Wikiversity I click on wikitech:User:Marshallsumter and from Wikitech I click on v:User:Marshallsumter. What happens? Wikiversity enters the web address for the Wikitech destination or enters the web address for the Wikiversity address.

There are already two ways to get to the GNUBasic compiler: (1) Wikiversity enters the https web address for the compiler "/GNUBasic/GNU_Basic_3.5.7/" goes to the subfile "IntroductiontoBasic" looks for the program identified by "SimpleProgram.bas" and loads it (compiles and loads). (2) Instead of entering a web address Wikiversity enters an intranet address something like "wikitech:GNUBasic/GNU_Basic_3.5.7/IntroductiontoBasic/SimpleProgram.bas" the compiler performs the same operation and returns the cursor through the intranet link to the user subpage window.

The first example uses the web through https, but the second is like me asking for my Watchlist. The inhouse or virtual computer polls all files on my Watchlist and returns activity through https.

Milestones (or concrete criteria): when I submit a grant proposal I already control all (or nearly all) the variables. Here, I control very few. I'd like to use milestones like

  1. GNUBasic (free compiler) uploaded to Wikiversity.org
  2. User:Marshallsumter/GNUBasic displays a window with a cursor (this is bigger to accomplish than it may appear).
  3. I enter a command like >load "/GNUBasic/GNU_Basic_3.5.7/IntroductiontoBasic/SimpleProgram.bas" at the cursor (>), the program compiles successfully and returns the cursor.
  4. I enter the command "run" and the server displays the output in my subpage "/SuccessfulRun+-.bas" which https shows when I open that subpage after the other subpage displays a program-finished cursor or symbol.

If it helps these can be used, but consider the following, please.

Since I control so few variables and apparently no one else at any WMF project knows how to do this (we'd already have a course up and running if someone did), this is a proposal to boldly go where apparently no one has gone before (sorry about the Star Trek paraphrase). This is a proposal for apparently original research. By reverse analogy this is not like contracting to have a new roof put on your house where each step is exactly listed with times and costs. Here are some answers to your specific points:

Web interface to various compilers/interpreters - the two alternatives in the concept example answer this, the internet web interfaces already exist but may be too slow so intranet interfaces such as the program (Watchlist) executes may be necessary.
Existing compilers at "tools-dev.wmflabs.org": well you may have access to this but I do not as yet so this may be a great suggestion. Again, the concept example applies. WMFLABS may not like 5-1000 students running little programs on their Basic compiler. If it's possible to have a virtual compiler at Wikiversity.org such as performs programs like Watchlist to also perform basic programs, then I'm going to find that out, if the grant occurs.
Play with compilers: the students will be playing at programming, although writing compilers is an advanced possibility down the line but probably should wait until the simple stuff is accomplished first.

I hope this helps. --Marshallsumter (talk) 01:27, 21 October 2014 (UTC)Reply

Eligibility confirmed, round 2 2014 edit

 

This Individual Engagement Grant proposal is under review!

We've confirmed your proposal is eligible for round 2 2014 review. Please feel free to ask questions and make changes to this proposal as discussions continue during this community comments period.

The committee's formal review for round 2 2014 begins on 21 October 2014, and grants will be announced in December. See the schedule for more details.

Questions? Contact us.

Jtud (WMF) (talk) 17:15, 7 October 2014 (UTC)Reply

comments from IEG - rubin16 edit

Hello! Could you please provide more details about budget? How many hours do you expect to work in total and per week? What is the cost of hour used in calculations? What is the schedule of your project? How many hours will every stage take? 20,000 USD for potential compilers definitely need more details, too: what software or hardware do you need? How much do they cost? rubin16 (talk) 14:30, 18 October 2014 (UTC)Reply

Thank you for the concerns! Some compilers and interpreters are free, others are not. So giving specific dollar amounts is uncertain at best. For example, there is a free GNU Fortran compiler. That would be a first one to try. There's also free Basic compilers. And, a couple free Ada compilers. Several websites list free compilers such as TheFreeCountry
Next is where to upload it. The WMF computers can be used through the Labs as mentioned in the proposal. Setting up an appropriate lab, then getting the compiler to upload might be quick, might be full of bugs and take hours. Time spent on each challenge to get it uploaded, begin tests to see if commands execute from command files, test simple programs from a user space, probably mine, have times recorded and billed or deducted from allocation. Cost per hour is probably about $10/h, although 20 h/w likely it could vary depending on other demands on my time. $200/wk for 50 weeks is $10,000. If the involvement includes a standalone, accessible from Wikiversity, but at WMF about $20/h for whatever hours needed, or travel, or hiring a local tech probably $50/h to set it up, get it limited accessibility routers or servers. This could cost from $1,000 to $5,000.
If one free compiler works for simple programs in a lab. A first lesson is constructed at Wikiversity for that language for students to test. Several more complex programs are written to test batch processing times. On to the next.
A standalone computer, probably at WMF, may need to be purchased, set up, and accessible from the web, especially if the labs are not compatible with uploading and using a compiler. "Sep 17, 2013 ... IBM this summer launched a mini-mainframe computer that starts at just $75000. It's the size of a small fridge, and is built to run analytics". Obviously, such a computer is way too expensive and way too much computer to teach classes in programming for say a dozen languages some popular some not. My IMac for $1500 runs a $50 Basic compiler fairly fast but several levels of programming slows it down really well, unfortunately. Time to find, purchase, set up, access a standalone tops off at $20,000 for the year. The search and evaluation time comes under the $10/h rate. After the first year if all goes well, a sustaining grant, hopefully for much less may be needed. That's why the labs might be better, if they work. Hope this helps. --Marshallsumter (talk) 14:57, 19 October 2014 (UTC)Reply
Finally we need some exact sum to be funded, despite work can be done one way or another :) I know, that there are different compilers, you can work yourself or hire something, but we definitely need more measurable figures in the project: I would suggest you to state more exactly, what particular compilers you want to work on, how much they will cost, to choose whether you work on Labs on your own facilities. Again, I know that there could be inefficiencies, but they could be reviewed separately if they arise and funding could be increased, but the project plan should be concrete, measurable and not dependent on too much contingencies. So, I expect to see something more exact - list of compilers, decision on production servers, on hiring additional specialists, etc. Thanks rubin16 (talk) 16:24, 19 October 2014 (UTC)Reply
The proposal states an exact sum: $30,000 = $10,000 for my efforts and $20,000 for hardware, if needed, contractor, if needed, or higher level effort by me, definitely needed. Bawolff may have given a good suggestion. If "tools-dev.wmflabs.org" can be accessed and its compilers downloaded to Wikiversity with necessary accessories, then the cost of my effort may remain in the $10/h range. I appreciate your concerns but the key here is what I mentioned above, "Since I control so few variables and apparently no one else at any WMF project knows how to do this (we'd already have a course up and running if someone did), this is a proposal [...] for apparently original research. By reverse analogy this is not like contracting to have a new roof put on your house where each step is exactly listed with times and costs." I'm stating these matters because I want to accomplish the objectives stated in the proposal. If Bawolff is correct that "compilers/interpreters for C, C++, java, fortran, java, python, perl, bash, awk, javascript (node.js), tcl, assembly, php, ruby, c# (mono), lisp (if you count emacs), go and probably others." is available, albeit not accessible, it may be more efficient to download those to Wikiversity. I also gave a concept example above. The reason this hinges on contingencies is that they exist. It's easy to say "If you don't have exact steps for exact costs, we won't fund you." But,the objective won't be achieved either. Monitor this anyway you want to. If you want monthly progress reports, you've got them. I want courses/lessons available at Wikiversity that allow each student to learn by doing computer programming on an interpreter or compiler that gives feedback: error messages or data in some for.
List of compilers: any one I can get to work at Wikiversity - starting with Basic, Ada, and "for C, C++, java, fortran, java, python, perl, bash, awk, javascript (node.js), tcl, assembly, php, ruby, c# (mono), lisp (if you count emacs), go and probably others."
Production servers: maybe, maybe not - you're asking me to have already solved the problem and now I just want to install hardware (or virtual hardware). Sorry, but first I have to find that solution(s). And, that's part of what the grant is for. If all I need to do is transfer compilers from "tools-dev.wmflabs.org", maybe all I'll need are some bots to run batch programs to the compiler and bring the result back to the user subpage. That would be a great solution!
"You haven't thought this through thoroughly enough." or "You haven't worked out enough of the details." I seriously doubt anyone knows how to do this, but I'm willing to get it done. I'm on Wikitech. Maybe this will help, maybe not. "tools-dev.wmflabs.org" is mentioned in subpages with simple data statements. Maybe the only answer is to write compilers at Wikiversity and run them like a bot. That would really run the bill up at $40/h, I hope not, but again these would make great lessons or courses.
In a proposal I submitted last year, the largest single budget item was for "Project Director Stipend" $25,000. The other $12,000 was miscellaneous costs associated with the success. The end result was spelled out like above for running test programs on a Basic compiler. These can be used as milestones or exact costs. Say, $7,500 for each step just for one compiler. What's likely is if I solve this for one, I can do it for many. I hope this helps! --Marshallsumter (talk) 23:53, 22 October 2014 (UTC)Reply
Respectfully, you're not proposing to do a research project discovering the unknown. What you're proposing is the sort of thing that many people have done in different contexts outside wikimedia previously. Even inside Wikimedia, the lua interpreter box at the bottom of the edit page for any page in the Module: namespace is basically what you're proposing with minor details changed and aimed at a different use case. There really shouldn't be unknown steps, it should be fairly straight forward. A very basic version of what you propose using javascript and lua as the language (Since less sandboxing concerns there, as js is client side so the user can only hurt themselves [although if a user could "save" programs, that would be an XSS], and lua is already sandboxed safely for scribunto) could probably be done by a single programmer in 1-2 weeks. No external servers/tool labs even needed. Bawolff (talk) 00:55, 26 October 2014 (UTC)Reply
Again a good possible suggestion. Copying what has been done with lua or javascript may work. But, the problem of using them per se would be yet another compiler/interpreter for what should be direct with each language compiler. A single programmer in 1-2 weeks is unlikely at best. That's $40/h for 40h per week at $3200 (2 weeks). You make it seem easy but it's not. We'd already have it if it were. Whether a standalone at WMF is needed or not remains open. Outside Wikimedia I uploaded a $50 Basic compiler which I use to write Basic programs, so sure anyone outside WMF can do it. By analogy it should be possible inside as well, but what steps will work are far from known. You've made two good possible suggestions. Why not join the project and help? Where in virtual space is the lua interpreter? I'm not proposing that course takers use the sandbox but userspace and subpages for resource-type results. The sandbox disappears after a certain time but might be nice for development so that it is written-over as needed. Please keep in mind that attempting to make this seem for volunteers doesn't work, because it's not that easy, and we don't have it. Unfortunately, my estimates must stand. This could just as easily be a really big mess that has to be worked through step by step to insure success. --Marshallsumter (talk) 21:55, 26 October 2014 (UTC)Reply
A couple extra points:
  1. We've had probably a thousand volunteers come through the Computer Science department since the project began. Many have left helpful tips on a variety of programming languages but no compiler to test run them.
  2. Having a compiler aboard one's PC or Imac at home can be a lot like bringing exercise equipment home. It looks great once you set it up. You use it once or twice then go back to your other online activities. I use my compiler because I conduct original research and write test programs. The usual student wants to learn and PRACTICE computer programming when they're online. If they come to Wikiversity where we might have online compilers and lessons to compose test runs, these students will learn programming while having fun online, maybe enough to help get a job, if they want one. --Marshallsumter (talk) 17:59, 28 October 2014 (UTC)Reply

Aggregated feedback from the committee for Dedicated Programming Compiler edit

Scoring criteria (see the rubric for background) Score
1=weak alignment 10=strong alignment
(A) Impact potential
  • Does it fit with Wikimedia's strategic priorities?
  • Does it have potential for online impact?
  • Can it be sustained, scaled, or adapted elsewhere after the grant ends?
3.8
(B) Innovation and learning
  • Does it take an Innovative approach to solving a key problem?
  • Is the potential impact greater than the risks?
  • Can we measure success?
4.2
(C) Ability to execute
  • Can the scope be accomplished in 6 months?
  • How realistic/efficient is the budget?
  • Do the participants have the necessary skills/experience?
3.7
(D) Community engagement
  • Does it have a specific target community and plan to engage it often?
  • Does it have community support?
  • Does it support diversity?
4.0
Comments from the committee:
  • Adequate technical experience is presented.
  • Refreshing to see a grant request from Wikiversity. But there is little evidence of community engagement or endorsement.
  • Scope is limited and not much potential for scale outside of programming language education.
  • Large budget is a risk, and there is insufficient detail in the proposed budget to evaluate its reasonableness, particularly with regard to the pool of funding to be allocated for software and hardware purchases.
  • There are no quantitative measures of success defined.
  • Appears to have been little analysis of risks associated with the proposed project, particularly with regard to the security implications of hosting fully functional compilers in a Wikimedia project environment.
  • It is unclear how hosting compilers is aligned with the Wikimedia strategic priorities, or within the scope of the Wikimedia mission. There are likely better suited organizations such as code.org to help developing infrastructures for the topic.

Thank you for submitting this proposal. The committee is now deliberating based on these scoring results, and WMF is proceeding with its due-diligence. You are welcome to continue making updates to your proposal pages during this period. Funding decisions will be announced by early December. — ΛΧΣ21 17:07, 13 November 2014 (UTC)Reply

Food for thought on the feedback from the committee edit

First, I would like to thank the committee for its efforts and comments. The scoring criteria were unexpected so if I may I would like to add some salient points.

(A) Impact potential: The Wikiversities are a novel Wikimedia strategy. The goal is to learn by doing for those million or so visitors to our resources each month. Students or researchers who test reality by writing and submitting programs find out what it takes to use a computer as a tool. The potential for online impact is enormous for any student desiring to use computers to enhance their research efforts and their learning. Sustaining may be much easier than accomplishing what this proposal seeks. Scaling depends only on the number of students who try and the number of compilers brought online with appropriate safe guards. Adaptable elsewhere may be irrelevant. The "elsewheres" are the other wikiversities, not the wikipedias, wikibooks, etc.

(B) Innovation and learning: The innovation is in finding out through exploration how to get these compilers available for classes or lessons. Accomplishing high risk research is my specialty. The impact puts wikiversity on the map as a learning and research giant. The measures of success are simple as indicated above in steps of accomplishments for one compiler. That's how it can be measured.

(C) Ability to execute: The proposal is for one year, not six months! The goal is to accomplish the proposal. Sorry, but since none on the committee knows how to accomplish this and I do, how can you even attempt to evaluate any ability to execute?

(D) Community engagement: As was implied, you've probably never received a proposal from Wikiversity before. Hopefully, this proposal's reception will not discourage others. --Marshallsumter (talk) 03:48, 24 November 2014 (UTC)Reply

Round 2 2014 Decision edit

 

This project has not been selected for an Individual Engagement Grant at this time.

We love that you took the chance to creatively improve the Wikimedia movement. The committee has reviewed this proposal and not recommended it for funding, but we hope you'll continue to engage in the program. Please drop by the IdeaLab to share and refine future ideas!

Comments regarding this decision:
Although we felt that this project was not a good fit with Wikimedia’s scope at this time, you might consider the possibility of making a script compiler that could be used on Tool Labs at some point in the future - that could be a great way to recruit potential developers for GLAM-Wiki tools to benefit the Wikimedia movement. We hope you continue to get involved in Wikimedia and build relationships with others in the community.

Next steps:

  1. Review the feedback provided on your proposal and to ask for any clarifications you need using this talk page.
  2. Visit the IdeaLab to continue developing this idea and share any new ideas you may have.
  3. To reapply with this project in the future, please make updates based on the feedback provided in this round before resubmitting it for review in a new round.
  4. Check the schedule for the next open call to submit proposals - we look forward to helping you apply for a grant in a future round.
Questions? Contact us.
Return to "IEG/Dedicated Programming Compiler" page.