rise4fun provides a web front end for software engineering tools. It allows you to showcase your tools in any environment, help reviewers try out your tools or help you deliver classes without worrying about getting your tool on every student machine.
You need to provide a simple web service that executes your tool on your server and returns the output. When the user clicks the 'ask' button, rise4fun will call your web service to analyze the source. rise4fun will then display the results to the user, it's that simple!
{
"Name": "echo",
"DisplayName": "Echo",
"Version": "1.0",
"Email": "rise4fun-feedback@microsoft.com",
"SupportEmail": "rise4fun-feedback@microsoft.com",
"TermsOfUseUrl": "http://rise4fun.com/termsofuse",
"PrivacyUrl": "http://rise4fun.com/privacy",
"Institution": "Microsoft Research",
"InstitutionUrl": "http://rise4fun.com",
"InstitutionImageUrl": "http://rise4fun.com/images/logo_msr_small.png",
"MimeType": "text/x-echo",
"SupportsLanguageSyntax": true,
"Title": "Echoes the text",
"Description": "An example of remote tool that simplies returns the original text.",
"Question": "Where are you, echo?",
"Url": "http://rise4fun.com",
"VideoUrl": "http://rise4fun.com/video",
"Samples": [
{
"Name": "hello",
"Source": "hello world"
},
{
"Name": "bye",
"Source": "see you"
}
],
"Tutorials": [
{
"Name": "guide",
"Source": "# This is the markdown syntax test.\r\n\r\nA paragraph...\r\n\r\n first\r\n\r\nThe tutorial also supports TeX maths through mathjax: \r\n\\[\\begin{aligned} \\dot{x} & = \\sigma(y-x) \\\\ \\dot{y} & = \\rho x - y - xz \\\\ \\dot{z} & = -\\beta z + xy \\end{aligned} \\]\r\n",
"Samples": [
{
"Name": "first",
"Source": "hello you"
}
]
}
]
}
// request:
{
"Version": "1.0",
"Source": "This is the source..."
}
// response:
{
"Version": "1.0",
"Outputs": [
{
"MimeType": "text/x-web-markdown",
"Value": "# this is the text that you entered..."
},
{
"MimeType": "text/plain",
"Value": "This is the source..."
}
]
}
{
displayName: 'echo',
name: 'echo',
mimeTypes: ['text/x-echo'],
fileExtensions: ['.echo'],
lineComments: '//',
blockCommentStart: '/*',
blockCommentEnd: '*/',
keywords: ['hello', 'you'],
operators: ['~'],
tokenizer: {
root: [
['[a-z_$][\\w$]*', { cases: { '@keywords': 'keyword',
'@default': 'identifier' } }],
{ include: '@whitespace' },
['[{}()\\[\\]]', '@brackets'],
],
whitespace: [
['[ \\t\\r\\n]+', 'white'],
['\\/\\*', 'comment', '@comment' ],
['\\/\\/.*$', 'comment'],
],
comment: [
['[^\\/*]+', 'comment' ],
['\\/\\*', 'comment.invalid' ],
["\\*/", 'comment', '@pop' ],
['[\\/*]', 'comment' ]
],
},
}
name, string: gets the short, url-friendly name of the tool. may only contain letters and digits.displayname, string: gets the human readable name of the tool.version, string: gets a version number of the form m.n.p.q where m, n, p, q are numbers within the 0, 65535 range.email, string: gets the email to send outage or administrative email notification. will not be shared with rise4fun users.supportemail, string: gets the user support email.termsofuseurl, string: gets the url pointing to the 'terms of use' [or end user license] document for the tool.privacyurl, string: gets the url pointing to the 'privacy' document for the tool.institution, string: gets the name of the institution that owns this tool.institutionurl, string: gets the url pointing to the institution home page.institutionimageurl, string: gets the url pointing to a small logo image of the institution (less than 120px)mimetype, string: gets the mime type of the input language.supportslanguagesyntax, boolean: indicates if the service supports a custom language definition through the /language end pointtitle, string: gets a single sentence describing the tool.description, string: gets a paragraph describing the tool.question, string: gets the question that the tool can answer, e.g. 'is this program memory safe?'url, string: gets the url to the tool home pagevideourl, string: (optional) gets the url to a page containing a video about the toolsamples, servicetoolsample[]: gets the list of samples for the tool, in order. must have at least 1 sample.tutorials, servicetooltutorial[]: (optional) gets the list of tutorials, in order.name, string: gets the name of the samplesource, string: gets the full source of the sampleversion, string: gets the version of the tool stored in rise4fun currentlysource, string: gets the source to processversion, string: gets the current version of the tool. it should match the version returned by /metadata.outputs, servicetooloutput[]: gets the list of outputs produced by the tool. there should be at least one output of type 'text/plain'. other outputs will be supported in the future.mimetype, string: gets the mime type of the outputvalue, string: gets the text of the outputname, string: gets the name of the tutorialsource, string: gets the source of the tutorial using a markdown-based syntax. see http://rise4fun.com/wiki to learn about the additional tags.samples, servicetoolsample[]: (optional) gets the samples associated with this tutorialThe version field in the metadata allows rise4fun to detect
where your tool has upgraded version.
Make sure to update the version number in the tool metadata when deploying a new version of your tool.
Enter your service URL in the text box below and click 'launch editor' to see your tool in 'staging mode'. In that mode, rise4fun will use your service as if it was already registered in the web site.
You can try out the echo service, a dummy service that returns the input text.