{'fraction_non_alphanumeric': 0.02992695289206917, 'fraction_numerical': 0.007416517590936196, 'mean_word_length': 5.381212841854935, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Digital Ecosystems in the Clouds: Towards Community Cloud Computing

Cloud Computing is rising fast, with its data centres growing at an unprecedented rate. However, this has come with concerns of privacy, efficiency at the expense of resilience, and environmental sustainability, because of the dependence on Cloud vendors such as Google, Amazon, and Microsoft. Community Cloud Computing makes use of the principles of Digital Ecosystems to provide a paradigm for Clouds in the community, offering an alternative architecture for the use cases of Cloud Computing. It is more technically challenging to deal with issues of distributed computing, such as latency, differential resource management, and additional security requirements. However, these are not insurmountable challenges, and with the need to retain control over our digital lives and the potential environmental consequences, it is a challenge we must pursue.


I. INTRODUCTION
The recent development of Cloud Computing provides a compelling value proposition for organisations to outsource their Information and Communications Technology (ICT) infrastructure [1]. However, there are growing concerns over the control ceded to large Cloud vendors, including the lack of information privacy [2]. Also, the data centres required for Cloud Computing are growing exponentially [3], creating an ever-increasing carbon footprint, raising environmental concerns [4], [5].
The social paradigms and technologies of Digital Ecosystems, including the community ownership of digital infrastructure, can remedy these concerns. So, Cloud Computing combined with the principles of Digital Ecosystems provides a compelling socio-technical conceptualisation for sustainable distributed computing, utilising the spare resources of networked personal computers to provide the facilities of a virtual data centre to form collectively a Community Cloud.

II. CLOUD COMPUTING
Cloud Computing is the use of Internet-based technologies for the provision of services [1], originating from the cloud as a metaphor for the Internet, based on how it is depicted in computer network diagrams to abstract the complex infrastructure it conceals [6]. It can be seen as a commercial evolution of the academia-oriented Grid Computing [7], succeeding where Utility Computing struggled [8], [9]. It is being promoted as the cutting edge of scalable web application development [2], in which Cloud Computing: Typical configuration when consumers visit an application served by the central Cloud, which is housed in one or more data centres. Green symbolises resource consumption, and yellow resource provision. The role of coordinator for resource provision is designated by red, and is centrally controlled. dynamically scalable and often virtualised resources are provided as a service over the Internet [10], [1], [11], [12], with users having no knowledge of, expertise in, or control over the technology infrastructure of the Cloud supporting them [13]. It currently has significant momentum in two extremes of the web development industry [2], [1]: the consumer web technology incumbents who have resource surpluses in their vast data centres 1 , and various consumers and start-ups that do not have access to such computational resources. Cloud Computing conceptually incorporates software-as-a-service (SaaS) [15], Web 2.0 [16] and other technologies with reliance on the Internet, providing common business applications online through web browsers to satisfy the computing needs of users, while the software and data are stored on the servers. Figure 1 shows the typical configuration of Cloud Computing at run-time when consumers visit an application served by the central Cloud, which is housed in one or more data centres. Green symbolises resource consumption, and yellow resource provision. The role of coordinator for resource provision is designated by red, and is centrally controlled. From the figure, it can be seen that coordination and resource provision are centrally controlled, even if the central node is implemented as a distributed grid, which is the usual incarnation of a data centre. Providers, who are also the controllers, are usually companies with other web activities that require large computing resources, and in their efforts to scale their primary businesses they have gained considerable expertise and hardware. For them, Cloud Computing is a way to resell these as a new product while expanding into a new market. Consumers include everyday users, Small and Medium sized Enterprises (SMEs), and ambitious startups whose innovation potentially threatens the incumbent providers.

A. Layers of Abstraction
There is a significant buzz [17] around Cloud Computing, but there is little clarity about which offerings actually qualify and their interrelation. The key to resolving this confusion is by realising that the various offerings fall into different levels of abstraction, as shown in Figure 2, aimed at different market segments.
1) Infrastructure as a Service (IaaS) [18]: At the most basic level of the Cloud Computing offerings, there are providers such as Amazon [19] and Mosso [20], who provide machine instances to developers. These instances essentially behave like dedicated servers that are controlled by the developers, who therefore have full responsibility for their operation. So, once a machine reaches its performance limits, the developers have to manually instantiate another machine and scale their application out to it. This service is intended for developers who can write arbitrary software on top of the infrastructure with only small compromises in their development methodology.
2) Platform as a Service (PaaS) [21]: One level of abstraction above, services like Google App Engine [22] provide a programming environment that abstracts machine instances and other technical details from developers. The programs are executed over data centres, not concerning the developers with matters of allocation. In exchange for this, the developers have to handle some constraints that the environment imposes on their application design, for example the use of key-value stores 2 instead of relational databases.
3) Software as a Service (SaaS) [15]: At the consumerfacing level are the most popular examples of Cloud Computing, with well-defined applications offering users online resources and storage. This differentiates SaaS from traditional websites or web applications which do not interface with user information (e.g. documents) or do so in a limited manner. Popular examples include Microsoft's (Windows Live) Hotmail, office suites such as Google Docs and Zoho, and online business software such as Salesforce.com.
To better understand Cloud Computing we can categorise the roles of the various actors. The vendor as resource provider has already been discussed. The application developers utilise the resources provided, building services for the end users. This separation of roles helps define the stakeholders and their differing interests. However, actors take on multiple roles, with vendors developing services for the end users, or developers utilising the services of others for their own. Yet, within a Cloud the role of provider, and therefore controller, can only be occupied by a single entity, the vendor.

B. Concerns
The Cloud Computing model is not without concerns, as others have noted [26], [2], and we consider the following as primary: 1) Economics of Failure: The uptime 3 of Cloud Computing-based solutions is an advantage, when compared to businesses running their own infrastructure, but often overlooked is the co-occurrence of downtime in vendor-driven monocultures. The use of globally decentralised data centres for vendor Clouds minimises failure, aiding its adoption. However, when these failures do occur it has a cascade effect, taking down organisations depending on the Cloud. This was illustrated by the Amazon (S3) Cloud outage [28], which took with it several other dependent businesses. So, failures are now systemwide, instead of being partial or localised. Therefore, the efficiencies gained from centralising infrastructure for Cloud Computing will increasingly be at the expense of the Internet's resilience.
2) Convenience vs Control: The growing popularity of Cloud Computing comes from its convenience, but also brings vendor control, an issue of ever-increasing concern. For example, Google Apps for in-house e-mail typically provides higher uptime [29], but its failure [30] highlighted the issue of lock-in that comes from depending on vendor Clouds. The even greater concern is the loss of information privacy, with vendors having full access to the resources stored on their Clouds. In particularly sensitive cases of SMEs and start-ups, the provider-consumer relationship that Cloud Computing fosters between the owners of resources and their users could potentially be detrimental, as there is a conflict of interest for the providers. They profit by providing resources to up and coming players, but also wish to maintain dominant positions in their consumer-facing industries.
3) Environmental Impact: The other major concern is the ever-increasing carbon footprint from the exponential growth [3] of the data centres required for Cloud Computing. With the industry expected to exceed the airline industry by 2020 [5], this raises sustainability concerns [4]. The industry is being motivated to address the problem by legislation [5], [31], the operational limit of power grids (not being able to power any more servers) [32], and the potential financial benefits [33], [5]. Their primary solution is the use of virtualisation 4 to maximise resource utilisation [35], but the problem remains [36], [37].
While these issues are endemic to current Cloud Computing, they are not flaws in the Cloud conceptualisation, but of the vendor provision and implementation of Clouds [22], [19]. There are attempts to address some of these concerns, such as avoiding vendor lock-in through a portability layer between different vendor Clouds, called a meta-Cloud or a Cloud-of-Clouds [38]. While this would avoid vendor lock-in to an extent, it will not alleviate the other concerns raised. Also, there is an open source implementation of the Amazon (EC2) Cloud [19], called Eucalyptus [39], which allows for a data centre to execute code compatible with Amazon's Cloud, providing private internal Clouds. This would avoid vendor lock-in and provide information privacy, but only for those with their own data centres, and so is not really Cloud Computing (which by definition is to avoid needing one's own data centre [1]). So, vendor Clouds remain synonymous with Cloud Computing [10], [1], [11], [12], while our response is an alternative model for the Cloud conceptualisation infused with the principles of Digital Ecosystems.

III. DIGITAL ECOSYSTEMS
Digital Ecosystems are distributed adaptive open sociotechnical systems, with properties of self-organisation, scalability and sustainability, inspired by natural ecosystems [40], and are emerging as a novel approach to the catalysis of sustainable regional development driven by SMEs [41]. Digital Ecosystems aim to help local economic actors become active players in globalisation [42], valorising their local culture and vocations, and enabling them to interact and create value networks [43] at the global level. Increasingly this approach, dubbed glocalisation, is being considered a successful strategy of globalisation that preserves regional growth and identity [44], [45], [46], and has been embraced by the mayors and decision-makers of thousands of municipalities [47]. The community focused on the deployment of Digital Ecosystems, REgions for Digital Ecosystems Network (REDEN) [41], is supported by projects such as the Digital Ecosystems Network of 4 Virtualisation is the creation of a virtual version of a resource, such as a server, which can then be stored, migrated, duplicated, and instantiated as needed, improving scalability and work load management [34].
regions for (4) DissEmination and Knowledge Deployment (DEN4DEK) [48], a thematic network that aims to share experiences and disseminate all the necessary knowledge that will allow regions to plan an effective deployment of Digital Ecosystems at all levels (economic, social, technical and political) to produce real impacts in the economic activities of European regions through the improvement of SME business environments. In a traditional market-based economy, made up of sellers and buyers, the parties exchange property [49], while in a new network-based economy, made up of servers and clients, the parties share access to services and experiences [49]. Digital Ecosystems aim to support network-based economies reliant on next-generation ICT that will extend the Service-Oriented Architecture (SOA) concept [50] with the automatic combining of available and applicable services in a scalable architecture, to meet business user requests for applications that facilitate business processes. Scalable resource provision has yet to be considered in Digital Ecosystems research. Without it Digital Ecosystems risk being subsumed into vendor Clouds at the infrastructure level, while striving for decentralisation at the service level, which would clearly be incompatible with its principles. So, the realisation of the Digital Ecosystems vision requires a form of Cloud Computing -but within the principle of community-based infrastructure, where individual users share ownership [51].

IV. COMMUNITY CLOUD
Community Cloud Computing arises from concerns over the control of vendors in Cloud Computing and the observation that analogous concerns drive Digital Ecosystems research. It aspires to combine the principles of Digital Ecosystems with the use cases of Cloud Computing. Replacing vendor Clouds by shaping the underutilised resources of user machines to form a Community Cloud, with nodes potentially taking on all roles, consumer, producer, and most importantly coordinator, as shown in Figure 3.

A. Conceptualisation
The conceptualisation of the Community Cloud draws from Cloud Computing [1], Digital Ecosystems [40] and Green Computing [52]. Its a paradigm for Cloud Computing in the community, without dependence on Cloud vendors, such as Google, Amazon, or Microsoft. 1) Openness: Removing the dependence on vendors makes the Community Cloud the open equivalent to vendor Clouds, and therefore identifies a new dimension in the open versus proprietary struggle [53] that has emerged in code, standards and data, but has not until now been expressed in the realm of hosted services.
2) Community: The Community Cloud is as much a social structure as a technology paradigm [54], because of the community ownership of the infrastructure. This community ownership carries with it a degree of economic scalability, without which there would be diminished competition and potential stifling of innovation as risked in vendor Clouds.
3) Graceful Failures: The Community Cloud is not owned or controlled by any one organisation, and therefore not dependent on the lifespan or failure of any one organisation. It will be robust and resilient to failure, and immune to the system-wide cascade failures of vendor Clouds, because of the diversity of its supporting nodes. When occasionally failing it will do so gracefully, nondestructively, and with minimal downtime, as the unaffected nodes compensate for the failure.

4) Convenience and Control:
The Community Cloud, unlike vendor Clouds, has no inherent conflict between convenience and control, because its community ownership provides for democratic distributed control.

5) Environmental Sustainability:
The Community Cloud will have a significantly smaller carbon footprint than vendor Clouds, because making use of underutilised user machines will require much less energy than the dedicated data centres required for vendor Clouds. The server farms within data centres are an intensive form of computing resource provision, while the Community Cloud is more organic, growing and shrinking in a symbiotic relationship to support the demands of the community, which in turn supports it.

B. Architecture
The method of materialising the Community Cloud is the distribution of its server functionality amongst a population of nodes provided by user machines, shaping their underutilised resources into a virtual data centre. While straightforward in principle, this poses challenges on many different levels, but many are aligned with currently active research topics in Digital Ecosystems.
1) Core Infrastructure: Before proceeding to the resource exchange and service composition, the nodes will be deployed as isolated virtual machines, forming a fully distributed peer-to-peer network, providing support for distributed identity and coordination. a) Virtual Machines (VMs): Executing arbitrary code in the machine of a resource-providing user will require a sandbox 5 for the guest code, a VM 6 to protect the host. The role of the VM is to make system resources safely available to the Cloud in a measurable manner. Fortunately, feasibility has been shown with heavyweight VMs such as the Java Virtual Machine and Common Language Runtime, and with the lightweight JavaScript VMs present in most modern web browsers. Furthermore, the age [57] of multi-core processors 7 has resulted in unused and underutilised cores being commonplace in modern personal computers [59], which lend themselves well to the deployment and background execution of Community Cloud facing VMs.
b) P2P Networking: At this most fundamental level, nodes will have to be interconnected to form a peer-topeer network. It will have to be specifically engineered to provide high resilience while avoiding single points of control and failure, which would make a decentralised super-peer based control mechanism [60] insufficient. A completely distributed peer-to-peer network is required, immune to super-peer failure.
c) Distributed Identity/Trust: The performing of tasks beyond the networking requires nodes to identify each other and keep historical context. This identification must be performed in a fully distributed manner, which has implications as most identity schemes are based on an identity provider controlling provision. Additionally, trust should be tracked as a multi-dimensional variable, including considerations such as uptime, performance characteristics, and reputation.
2) Resource layer: As the networking infrastructure is now in place, we can discuss the first consumer-facing uses of the virtual data centre of the Community Cloud. At its core, Cloud Computing is about using resources from the Cloud. The Community Cloud will offer the usage experience of Cloud Computing on the platform-asa-service (PaaS) layer and above. Utility Computing [61] scenarios, such as access to raw storage and computation, will be made available at the PaaS layer. Access to these abstract resources for service deployment will then provide the software-as-a-service (SaaS) layer.
a) Distributed Computation: The field has a long history of successful incarnations in its centrally controlled form. However, Community Cloud Computing will need to take inspiration from Grid Computing [62] to provide distributed coordination of the computational capabilities that nodes offer to the Community Cloud.
b) Distributed Persistence: The Community Cloud will naturally require storage on its participating nodes, taking advantage of the ever-increasing surplus on most 8 personal computers [64]. However, the method of information storage in the Community Cloud is an issue with multiple aspects. First, information can be file-based or structured. Second, while constant and instant availability can be crucial, there are scenarios in which recall times can be more relaxed. Such varying requirements call for a combination of approaches, including distributed storage [65], distributed databases [66] and key-value stores [23]. Information privacy in the Community Cloud will be provided by the encryption of user information when on remote nodes, only being unencrypted when cached on the user's node, allowing for the secure and distributed storage of information.
c) Bandwidth Management: The Community Cloud will probably require more bandwidth than vendor Clouds, but can take advantage of the ever-increasing bandwidth and deployment of broadband [67]. Also, peer-to-peer protocols such as BitTorrent have made the distribution of information over networks much less bandwidth-intensive for providers, accomplished by using the downloading peers as repeaters of the information they receive. Community Cloud Computing will have to adopt such approaches to ensure efficient use of available network bandwidth, to avoid fluctuations or sudden rises in demand (e.g. the Slashdot effect 9 ) burdening parts of the network. d) Community Currency: An important theme in the Community Cloud is the notion of nodes being contributors as well as consumers, which will require a community currency 10 (redeemable against resources in the community) to reward users for offering valued resources. It will also allow for traditional Cloud vendors to participate, by offering their resources to the Community Cloud to gather considerable community currency, which they can then monetise against participants who cannot contribute as much as they consume (i.e. running a community currency deficit). To avoid predicting or hard-coding the relative cost of resources (storage, computation, bandwidth), their prices can fluctuate based on market demand.
3) Service Layer: Cloud Computing can be said to represent a move from service-oriented [50] to servicedriven architectures, making services explicitly dependent on other providers instead of building on self-sufficient resource locations. Community Cloud Computing makes this more explicit, breaking down the stand-alone service paradigm, with any service by default being composed of resources contributed by multiple participants. The following sections describe the core infrastructural services that the Community Cloud needs to provide. a) Distributed Service Repository: The repository of the Community Cloud must provide persistence, as with traditional service repositories [71], for the pointers to services and the semantic descriptions of services. To support the absence of principal (service-producing) nodes during service execution, there must also be persistence of the executable code of services. Naturally, the implementation of a distributed service repository is made easier by the availability of the distributed storage infrastructure of the Community Cloud.
b) Remote Service Execution: When a service is needed to fulfil a request, but is not currently instantiated on a suitable node, a copy should be retrieved from the repository and instantiated as needed. This allows for flexible responsiveness and resilience to unpredictable traffic spikes. Nodes are naturally interested in executing services as their purpose is to gather community currency for their users. A developer should note the resource cost of a service in its description, allowing for preexecution resource budgeting by nodes, and post-execution community currency payments by consumers. It is in a developer's own interest to mark resource costs correctly, because over-budgeting will burden their users and underbudgeting will cause premature service termination. Additionally, developers could add a subsidy to promote their services. Remote service execution must be secured against potentially compromised nodes, because while unable to access a complete traffic log of the services they execute, they could potentially access the business logic of the services they execute. Otherwise, we would be replacing the vendor looking in problem, with an anyone looking in problem.

V. WIKIPEDIA IN THE COMMUNITY CLOUD
Wikipedia suffers from an ever-increasing demand for resources and bandwidth, without a stable revenue source for support [72]. Their current funding model requires a continuous influx of monetary donations for the maintenance and expansion of their infrastructure [73], the alternative being contentious advertising revenues [72], which has caused a long-standing conflict within their community [74]. While it would provide a more scalable funding model, the fear is it would compromise the public's trust in the content [75]. Alternatively, the Community Cloud could provide a self-sustaining scalable resource provision model without risk of compromising the content, because it would be compatible with their communal nature (unlike their current data centre model), with their user base accomplishing the resource provision they require.
Were Wikipedia to adopt Community Cloud Computing, it would be distributed throughout the Community Cloud alongside other services, which in this context can be as simple as a webpage or as complex as necessary. Participants in the Community Cloud will have a node on their machine, which when active accumulates community currency by providing resources to fulfil service requests from other nodes. These service requests can be as simple as instantiating a simple HTML page or executing a serverside script, the core operations of Wikipedia. Participants can then use their amassed community currency to interact with Wikipedia, performing a search or retrieving a page. More complicated tasks, such as editing a Wikipedia page, will require an update to the distributed storage of the Community Cloud, achieved by transmitting the new data through its network of nodes, most likely resulting in an eventual consistency model [76].
We have discussed Wikipedia in the Community Cloud, but the latter is not limited to not-for-profit organisations, being just as beneficial to for-profit businesses. Its organisational model for resource provision moves the cost of service provision to the user base, effectively creating a micro-payment scheme, which dramatically lowers the barrier of entry for innovative start-ups.

VI. CONCLUSIONS
We have presented a socio-technical conceptualisation for sustainable distributed computing, the Community Cloud. The Community Cloud is an alternative to Cloud Computing, created from blending its usage scenarios with the principles of Digital Ecosystems. Community Cloud Computing utilises the spare resources of networked personal computers to provide the facilities of data centres, such that the community provides the computing power for the Cloud platform they wish to use. Furthermore, we hope that the Community Cloud will encourage innovation in vendor Clouds, forming a relationship analogous to the creative tension between open source and proprietary software.