From 7a8c7aef172169c4ac115ef912721d1ab7962500 Mon Sep 17 00:00:00 2001 From: Petr Stefan Date: Tue, 1 Nov 2016 14:57:02 +0100 Subject: [PATCH] Conclusion --- Conclusion.md | 22 +++++++++++++++++++++- Web-API.md | 8 ++++---- Web-application.md | 1 - 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/Conclusion.md b/Conclusion.md index 2ef1f06..62818e1 100644 --- a/Conclusion.md +++ b/Conclusion.md @@ -1,3 +1,23 @@ # Conclusion -## Further improvements \ No newline at end of file +The project of ReCodEx was a great experience to develop a bigger application in team of people. We mostly enjoyed the time spent on the project, however the deadline was too tight to implement all nice features we thought of. Our implementation meets our predefined goals and is ready to be used instead of current tool CodEx. + +We made several design choices when planning and implementing the project. From today's perspective we're mostly happy with them and we believe we've done the best we could. One of the biggest questins was the broker/worker programming language. The winner was C++, which is really great language especially in revisions starting C++11. But we're not sure if Python wouldn't have been better option. From the best choices we'd like to mention early unit testing with continuos integration, using ZeroMQ messaging framework and our design with splitting logic into multiple components. + +To sum up, we created an extensible base environment for years of further development by numerous student projects. The faculty would benefit from higher hardware utilization, less administration effort and possibility to offer ReCodEx as SaaS to partner grammar schools. Students also appreciate present development tools. + +During development we were using whole bunch of development tools. We'd like to thank authors, maintainers and contributors of these tools to help us complete this project. Most notably we'd like to mention explicitly the top projects: Git and GitHub, Visual Studio Code, IDEs from JetBrains, ZeroMQ framework, C++ spdlog library, Travis and AppVeyor CI, Nette framework and many many others. Thank you. + + +## Further improvements + +A lot of work has been done, but it opened a whole bunch of new possibilities for new student projects. We'd be happy to see people contributing to this project to make it even more awesome. We're presenting list of features we think might be worth doing. Surely, the list is not complete a may change in time. + +- Finish web frontend. In time of project submission it doesn't contain all features for best user experience in all roles. This task is suitable for people with basic web programming experience, React and Redux knowledge is an advantage. +- Create web editor of job configuration. ReCodEx job evaluation follows quite complex task flow. To create valid configuration, author of exercise has to write pretty long YAML file by hand. This task consist of creating web based editor of this configuration with prepared task templates allowing user to change their properties and connect them. After submit, YAML job configuration is created. +- Write alternative commandline frontend. A lot of users want to submit their solutions directly from command line. It's possible in ReCodEx because of REST API, but no usable frontend exists yet. There is unfinished attempt to create one in NodeJS, accessible in ReCodEx organisation on [GitHub](https://github.com/ReCodEx/cli). The goal is to finish this project or create alternative tool. We'd like to see one written in Python. +- Create mobile frontend. It would be really nice to have mobile application when you can read exercise assignments and examine your progress and statistics. All is possible due to ReCodExs REST API. The basic Android application is in development by ReCodEx team as project for programming mobile devices class. The code will be published in GitHub organization. But we surely won't write anything for iOS or other systems. +- Design and implement backend monitoring. For administrator would be great to examine status of backend (broker, workers, monitor, fileserver) directly in browser. Key informations are which machines are online, offline or failed, which worker is now running a job (maybe with current progress) and view worker's configuration. Also some statistics with graphs should be make, for example workload of workers. More advanced is the ability to restarting workers on change their configurations. +- Finish Windows sandbox. We developed initila sandbox for Windows environment, [WrapSharp](https://github.com/ReCodEx/wrapsharp). It's only for .NET platform assemblies, but it's all we want now. The goal is to finish implementation and do a really detailed security audit of the project. Also, integration to the worker is not fully done yet. +- SIS integration. Very nice feature is (semi)automatic creation of groups and assigning students to them depending on their timetable in student information system (SIS). However there is no standardized API for such communication yet, but we hope this will be possible in the future. Implementing this feature means extending ReCodEx API by a SIS module in PHP. + diff --git a/Web-API.md b/Web-API.md index 1cc62b4..600b0c8 100644 --- a/Web-API.md +++ b/Web-API.md @@ -38,12 +38,12 @@ Another annotation is `@LoggedIn` which takes no arguments. It can be placed bef * @LoggedIn * @UserIsAllowed(users="create") * @Param(type="post", name="email", validation="email", - description="An email that will serve as a login name") + * description="An email that will serve as a login name") * @Param(type="post", name="name", validation="string:2..", - description="First name") + * description="First name") * @Param(type="post", name="password", validation="string:1..", - msg="Password cannot be empty.", - description="A password for authentication") + * msg="Password cannot be empty.", + * description="A password for authentication") */ public function actionCreateAccount() { ... diff --git a/Web-application.md b/Web-application.md index 2b2c934..fec94eb 100644 --- a/Web-application.md +++ b/Web-application.md @@ -108,6 +108,5 @@ Description of configurable options. Bold are required values, optional ones are NODE_ENV=production API_BASE=https://recodex.projekty.ms.mff.cuni.cz:4000/v1 PORT=8080 -# WEBPACK_DEV_SERVER_PORT=8081 ```