-
Notifications
You must be signed in to change notification settings - Fork 1
/
params.json
1 lines (1 loc) · 6.97 KB
/
params.json
1
{"name":"Protelis.GitHub.io","tagline":"Protelis web page","body":"# Protelis \r\n*Practical aggregate programming, hosted in Java*\r\n\r\n**Table of Contents**\r\n\r\n* [Why Protelis](#why)\r\n * [Further reading / references](#reading)\r\n* [Developing with Protelis](#developing)\r\n* [Contributing to Protelis](#contributing)\r\n * [Current build status of Protelis](#buildstatus)\r\n* [History and Trivia](#history)\r\n\r\n## <a name=\"why\"></a>Why Protelis\r\n\r\nDeveloping networked systems is really hard.\r\nTo make a good resilient system, you generally need to bring three types of expertise to bear all at once in the same code:\r\n\r\n* Expertise regarding the actual purpose of the system\r\n* Networking expertise, to manage the interactions between individual devices\r\n* Distributed algorithms expertise, to ensure that the collective behavior is desirable and resilient to all sorts of failures and system changes\r\n\r\nThis \"aggregate programming\" problem, of obtaining resilient collective behavior from local interactions between machines, has been with us ever since people started networking computers.\r\nIn some specialized areas, such as cloud computing and GPU programming, there a simple and regular network architecture has already led to good aggregate programming methods (e.g., [MapReduce](https://en.wikipedia.org/wiki/MapReduce)).\r\n\r\nThe goal of the Protelis language is to make resilient networked systems just as easy to build for complex and heterogeneous networks as for single machines and cloud systems.\r\nThis accomplished by separating the different tasks and making some of the hard and subtle parts automatic and implicit.\r\nA few of the key design decisions behind Protelis are:\r\n\r\n* Protelis is a language because there are a lot of subtle and easy ways to break a distributed system. Creating a language (rather than just a library) lets some of these be handled implicitly, so there is no opportunity to make mistakes.\r\n* Protelis is hosted in and integrated with Java to let it be very lightweight take advantage of the large pre-existing ecosystem of Java infrastructure and libraries.\r\n* Protelis looks as much like Java as practical in order to make it easier to learn and adopt.\r\n* Protelis ensures safe and resilient composition because its core is *field calculus*, a theoretical model of aggregate programming much like [lambda calculus](https://en.wikipedia.org/wiki/Lambda_calculus) is for functional programming.\r\n\r\n### <a name=\"reading\"></a>Further reading / references:\r\n\r\n* [Protelis: Practical Aggregate Programming](http://jakebeal.com/Publications/SAC2015-Protelis.pdf),\r\n\tDanilo Pianini, Mirko Viroli, Jacob Beal, ACM Symposium on Applied Computing 2015, April 2015.\r\n\t<br>*The first scientific paper presenting Protelis and example applications*\r\n* **Distributed Recovery for Enterprise Services**\r\n\tShane S. Clark, Jacob Beal, Partha Pal, 9th IEEE International Conference on Self-Adaptive and Self-Organizing Systems, to appear September 2015.\r\n\t<br>*Protelis applied to fast, low-impact automated recovery of enterprise systems*\r\n* [A Calculus of Computational Fields](http://jakebeal.com/Publications/FOCLASA13-FieldCalculus.pdf), \r\n\tMirko Viroli, Ferruccio Damiani, and Jacob Beal, 12th International Workshop on Foundations of Coordination Languages and Self Adaptive Systems (FOCLASA'13), September 2013.\r\n\t<br>*Field calculus is the mathematical/theoretical foundation of Protelis*\r\n* [Code Mobility Meets Self-Organisation: a Higher-order Calculus of Computational Fields](http://openmap.bbn.com/~jbeal/Publications/FORTE15-HigherOrderFieldCalculus.pdf), \r\n\tFerruccio Damiani, Mirko Viroli, Danilo Pianini, and Jacob Beal, Formal Techniques for Distributed Objects, Components, and Systems, pp. 113-128, June 2015.\r\n\t<br>*Higher-order field calculus lets Protelis have first-class functions*\r\n* [Space-time Programming](http://rsta.royalsocietypublishing.org/content/373/2046/20140220), Jacob Beal and Mirko Viroli, Philosophical Transactions of the Royal Society A, Volume 373, Issue 2046, pages 20140220, June 2015.\r\n\t<br>*Larger picture of field calculus and general approach to aggregate programming, with a focus on spatially-distributed systems*\r\n* [Organizing the Aggregate: Languages for Spatial Computing](http://arxiv.org/abs/1202.5509)\r\n\tJacob Beal, Stefan Dulman, Kyle Usbeck, Mirko Viroli, and Nikolaus Correll, chapter in \"Formal and Practical Aspects of Domain-Specific Languages: Recent Developments\", ed. Marjan Mernik, IGI Global, December 2012.\r\n\t<br>*A survey of other aggregate programming approaches, with a focus on spatially-distributed networks*\r\n\r\n## <a name=\"developing\"></a>Developing with Protelis\r\n\r\n\r\n\r\n## <a name=\"contributing\"></a>Contributing to Protelis\r\n\r\nProtelis is a free and open project that welcomes additional contributions.\r\n\r\nIf you want to help improve Protelis, just dive in, fork a copy of this code, and get started!\r\nDevelopment customs follow a standard GitHub workflow: get things working in your own branch, then request pull integration.\r\nThe file README.developer contains information about setting up development and contributing.\r\n\r\n### <a name=\"buildstatus\"></a>Current build status of Protelis:\r\n\r\n[![Build Status](https://drone.io/github.com/Protelis/Protelis/status.png)](https://drone.io/github.com/Protelis/Protelis/latest)\r\n\r\n* [Test details](https://drone.io/github.com/Protelis/Protelis/files/build/reports/tests/index.html)\r\n* [FindBugs reporting](https://drone.io/github.com/Protelis/Protelis/files/build/reports/findbugs/main.html)\r\n* [All build reports](https://drone.io/github.com/Protelis/Protelis/files/build/reports/reports.tar)\r\n\r\n## <a name=\"history\"></a>History and Trivia\r\n\r\nProtelis emerged from the synthesis of several prior projects:\r\n\r\n* [Proto](http://mitproto.net), an aggregate programming language created by [Jacob Beal](http://jakebeal.com) and [Jonathan Bachrach](http://www.eecs.berkeley.edu/~jrb/).\r\n* [Field calculus](http://jakebeal.com/Publications/FOCLASA13-FieldCalculus.pdf), a distillation of aggregate programming models by [Mirko Viroli](http://www.apice.unibo.it/xwiki/bin/view/MirkoViroli/), [Ferruccio Damiani](http://www.di.unito.it/~damiani/), and [Jacob Beal](http://jakebeal.com)\r\n* The [Alchemist Simulator](http://www.apice.unibo.it/xwiki/bin/view/Alchemist/) project, led by [Danilo Pianini](http://www.danilopianini.org/) and [Mirko Viroli](http://www.apice.unibo.it/xwiki/bin/view/MirkoViroli/).\r\n\r\nThe first version of Protelis was designed jointly during the summer of 2014 by Jacob Beal, Danilo Pianini, and Mirko Viroli, with the first implementation carried out primarily by Danilo Pianini.\r\n\r\nThe name \"Protelis,\" a Latin word which trnanslates approximately as \"regarding a team,\" was chosen to reflect both its nature as an aggregate language and its derivation from Proto.","google":"UA-65258912-1","note":"Don't delete this file! It's used internally to help with page regeneration."}