User:Marshallsumter/Dedicated Programming Compiler

This is a proposal in response to the following announcement at the Colloquium:

"Greetings! The Individual Engagement Grants program is accepting proposals for funding new experiments from September 1st to 30th. Your idea could improve Wikimedia projects with a new tool or gadget, a better process to support community-building on your wiki, research on an important issue, or something else we haven't thought of yet.

Whether you need $200 or $30,000 USD, Individual Engagement Grants can cover your own project development time in addition to hiring others to help you.


 * Submit your proposal


 * Get help: In IdeaLab or an upcoming Hangout session PEarley (WMF) (discuss • contribs) 16:09, 3 September 2014 (UTC)"

Objective: The project sets up dedicated programming compilers within Labs or a dedicated standalone for teaching computer programming at the Wikiversities.

The strategic priority "allows students, teachers, and researchers to learn and run dedicated language programs".

What is the problem you're trying to solve?
While there are many computer languages that have free compilers or interpreters available from the web, many may not as yet. Users/editors/contributors may want to learn how to program in any of the languages that may help them attain career goals or simply get a job. Even if they download a compiler to their own laptop or cell phone, learning to program takes some effort. How do I communicate with the compiler/interpreter? How do I execute a program? Where should my data be stored? How do I write a simple but effective graphics routine?

What is your solution?
This project makes available programming languages such as Ada (here used as an example) that allow registered editors/contributors to begin to program in any of these languages. The input and output files may be in user space as would be the test programs. These same compilers could be used to run more advanced programs for more advanced programmers.

Project goals
Let's say someone wants a job at Raytheon programming guided missiles. Raytheon, for example, still uses Ada. Here at Wikiversity a potential applicant can learn Ada, run simple programs, build bigger ones, perhaps use or create small simulations designed to operate equipment (firmware), or activate a sensor to view the local geography. Or, a database may only be accessible using FORTRAN. What is that? How can I learn such an arcane language? We upload a FORTRAN compiler either to a dedicated space within the Labs or in a standalone. We, or other contributors at Wikiversity (any of the Wikiversities) construct the necessary execution protocols. The learner begins to learn. They can even learn how to set up what this project is designed for.

Wikipedia per se does not teach programming. Links set up by the Wikipedia:WikiProject Computer science for specific entries of such languages as Ada (programming language) could link to the Wikiversity Ada language resources. The learner begins to learn and program in Ada, e.g.

Activities
For a dedicated compiler, the first and probably most important experiment is to establish appropriate firewalls, or the latest such programming, to defend against harmful hackers. This needs a dedicated professional to spend some time being sure the compiler is safe from harm or from harming the dedicated standalone or through any servers. At Wikiversity volunteers and I will be setting up input, compiling, execution, and outputting methods for ourselves and potential users.

Compilers for many programming languages already exist on tool labs but direct or round about access from students to run test or learning programs does not. The first activity is to set up a reliable and protected student access.

Budget

 * Wikiversity and Labs compiler/interpreter installation or standalone setup, Marshallsumter: 10,000 USD
 * Potential compilers (if not free), firmware (equipment simulations that can be directed with software programs from students) or hardware (such as a standalone computer); as, generally speaking, reliance on WMF technical staff may make an IEG grant ineligible, and this may be even more the case for any integration with the Mediawiki core (requires code review), hiring an expert for such a position, who can set up a compiler and firewalls, using Wikimedia servers through a volunteer project called Labs: https://wikitech.wikimedia.org/wiki/Main_Page, with responsibility for managing that person and planning ongoing maintenance: 20,000 USD

Community engagement
Like Wikipedia, Wikiversity resources such as lectures, articles, and courses are picked up by web searches. These bring in the greater student community. Advertising the courses at the Wikiversity School of Computer Science brings in part of the local community. Short articles in newsletters such as "This Month in Education" help to engage the greater WMF community. Once even one programming lesson is up and running, at least a dozen potential users will visit it on that day (based on hit counter statistics for individual pages in the Wikiversity course Principles of radiation astronomy). Appropriate advertisement on Wikipedia may bring in more participants.

Sustainability
Each new, or older, computer programming language will need a compiler or interpreter uploaded somewhere. Hopefully, these can then be uploaded either directly at Wikiversity or through an lab. As programs are written to use or test each language, potential resources such as research graphs of results, student projects, or graphic images, may reach main space.

Measures of success
We have a successful and reliable hit counter. Resource numbers will increase. More advanced but fairly simple research or analytical programs will produce results to be used in resources. Need target-setting tips? Note: in addition to your project-specific measures of success, you will also be asked to report on some Global Metrics at the end of your final report. Please keep this in mind as you plan, and we'll support you as you begin your project.

Participants
Marshallsumter: I have programming experience in about a dozen computer languages, albeit some (such as FORTRAN and Basic) are probably considered arcane and dinosauresque. This includes setting up compilers or interpreters in dedicated mini-mainframes or desktop computers. The same applies to writing very small programs to learn a language on up to computer simulations using Monte Carlo techniques and analytical models based on diffusion principles to predict oxygen in-diffusion for high-temperature superconductors (published).

Community Notification
Please paste links below to where relevant communities have been notified of your proposal, and to any other relevant community discussions. Need notification tips?
 * Wikiversity Colloquium
 * School of Computer Science at Wikiversity
 * Wikimedia Forum to locate a possible expert. Proposal has been clarified to mean expert, not staff, and Labs.

Endorsements
Do you think this project should be selected for an Individual Engagement Grant? Please add your name and rationale for endorsing this project in the list below. (Other constructive feedback is welcome on the talk page of this proposal).


 * Community member: add your name and rationale here.
 * I can endorse as an educator who believes strongly in open source teaching and uses it almost exclusively in every course I teach. I can participate by writing educational material for students using the on-line compiler.  I can also task college engineering students with developing simple and well-documented codes to college engineering students  (I like to learn a new language by starting with such codes.)  Leave a note on my user talk page if you need me urgently.  Otherwise we should perhaps continue the discussion here in order to generate more interest within Wikiversity.--guyvan52 (discuss • contribs) 11:12, 21 September 2014 (UTC) [copied from the Wikiversity Colloquium in response to my topic message for this proposal.] Marshallsumter (talk) 20:57, 21 September 2014 (UTC)

Reviewer's comments

 * "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)
 * "I think the word you're looking for is virtualization rather than firmware." Bawolff (talk) 20:23, 19 October 2014 (UTC)
 * "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)
 * "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)