Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Collaboration Tree - A community discussion platform built for maximum insight with minimum oversight.

License

NotificationsYou must be signed in to change notification settings

F4IF/ctree-demo

Repository files navigation

Click here for steps to set up this project on your local machine

Events

We're currently holding online events everyTuesday night andSaturday afternoon. Join ourLos Angeles Meetup to keep track of upcoming events and communicate with other contributors anytime via ourSlack Group.

Collaboration Tree

The Collaboration Tree (cTree) is a new web technology aimed at facilitatingmore productive discussions around a specific topic, usually a goal or problemto solve. Initially the goal is to help nonprofits communicate more effectivelywith their communities, but the potential uses stretch far beyond that. Othercommunity based web technologies like forums and wikis can be used at smallscales, but are less useful for larger topics or groups. Collaboration Treeswill allow the quick interactions most users are accustomed to, while maximizingthe usefulness of their interaction and organizing the larger discussion.

With Collaboration Trees, all points are tied together, and by default can allbe traced back to a core point, like a specific topic or problem to solve. Eachpoint can be updated and improved by the community, similar to a wiki, butunlike most wikis, the highest rated version wins and is shown by default.Alternate versions are easily available and can be individually discussed andrated. The type of data in each point is pluggable, with initial defaults oftext and images. Feedback with supporting content like quotes or links tosupporting information are ranked higher by default.

Eventually the project will leverage AI to intelligently suggest things forusers to interact with that interest them, match their stated and observedstrengths, and can have a meaningful impact on the discussion. For example,users who often provide useful feedback on new ideas may be more likely to see anew idea nobody has given feedback on. Another example would be if a user tendsto rate things in a way that matches most other users or users of a specificgroup, their ratings would be more valuable and they'd be more likely to seesomething which hasn't been rated before it's potentially shown to other users.

While the project is open source and can be integrated into any website, thegoal is to also create a hub site where all public cTrees can be found. Thiswill help with discovery as well as evangelize the use of the technology both onthe hub site and on unaffiliated sites. At its peak, the largest cTrees willlikely develop their own sub-communities with their own input plugin sets.

Site Demo

This specific project is intended to show how the Collaboration Tree hub sitewill work. The goal is to have a functional front-end demo where users can putin real data and give feedback on what works and what doesn't about thestructure. Broad browser support, the intelligent suggestion backend, and someother low priority features are out of scope for this demo. Even though this isa demo, the components developed for it will be the foundation for the full hubsite and should be clean and complete enough to use in production.

Technology (Polymer Web Components & beyond)

This project is based on Google'sPolymer Project,which is a collection of highly polishedweb components.We chose web components because we want people to be able to easily integratecTree elements into existing sites, and Polymer does a lot of the heavy liftingfor creating a modern responsive site. Web components have also grown to be atrue web standard, with broad native browser support.

One aspiration of this project is to follow the "PRPL pattern". This patternallows fast first delivery and interaction with the content at the initial routerequested by the user, along with fast subsequent navigation by pre-caching theremaining components required by the app and progressively loading themon-demand as the user navigates through the app.

The PRPL pattern, in a nutshell:

  • Push components required for the initial route
  • Render initial route ASAP
  • Pre-cache components for remaining routes
  • Lazy-load and progressively upgrade next routes on-demand

License

Copyright (c) 2020 Foundation For an Innovative Future (InnovativeFuture.org)

This program is free software: you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation, either version 3 of the License, or anylater version.

Foundation For an Innovative Future reserves the right to release thecovered work, in part or in whole, under a different open sourcelicense and/or with specific copyleft exclusions. Such a releasewould not invalidate the license for this project, although theproject released with a modified license would not be consideredpart of this covered work or subject to the copyleft portions of thislicense even if the projects are identical.

This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See theGNU General Public License for more details.

You should have received a copy of the GNU General Public Licensealong with this program. If not, seehttp://www.gnu.org/licenses/.

Please emailcontact@innovativeFuture.org for inquiries related tothis license.

Getting Started

We've set up a page to showcase the latest code for the demo site athttp://demo.ctree.org. This is just for development testing purposesand may not always include the latest code. If you want to see the latest codein action, your best bet is to clone this project and run it on your localmachine. Keep in mind that it's a work in progress, with lots of randomlygenerated data and bugs on some platforms. Try not to be thrown off by therandom data, and instead focus on the features and structure of the web app.

Verified Configurations Working

Windows

Chrome

Android

Chrome

Community

The preferred method of communication for the community is ourSlack group. There are also regular events held inLos Angeles, CA andonlineto encourage contributors to set aside time to work on the project. If you'reinterested in starting events in your area please emailcontact@innovativeFuture.org. There arealsoFacebbok andTwitter sites whereyou can keep up with the project, as well as aLinkedInorganization you can list on your profile if you're a regular contributor.

Teams

Because of the size of the project, issues are broken down into teams.Contributors looking to bolster their resume may find it more useful to pick ateam to work with so they can point to that specific work rather than specificchanges or the project as a whole, though there's no requirement to work onissues for a single team. The current teams are:

Landing Page

This team is responsible for implementing the new landing page shown tousers when first opening the site. It's a way to introduce the technology topeople who aren't familiar with it and help them get started with the site.This is a high priority part of the project, required before we can start alphatesting.

Backend

This team is responsible for implementing the database to hold and access alluser and collaboration tree data. For the alpha version this means duplicatingthe randomly generated data structures and interfaces and backing them with areal online database. This is a high priority part of the project, requiredbefore we can start alpha testing.

Visualization

One of the core ideas behind Collaboration Trees is that contributors canquickly contribute by skimming suggested posts. This makes reviewing themost popular posts and overall structure of the tree more difficult foranyone trying to watch the progress of the tree or check for an answer if aquestion or problem was used as the seed for the tree. This team is responsiblefor creating and integrating different visualizations of the overall data. Thiswill aid alpha testing, but is not yet a requirement before it begins.

Post

Posts are the individual pieces which make up all Collaboration Trees,similar to comments in a forum or pages on a wiki. Because of this, postsrequire more work, which has been divided into sub-teams.

New Post

This team is responsible for implementing everything required to create newposts, whether they're the first post for a new Collaboration Tree, a newpost related to another post, or a new post which needs to be linked toanother post. This also includes the important task of looking for otherexisting posts which may be similar and suggesting them to the user to tryand reduce duplicates. Because this is required for building cTrees, the corefunctionality is required before we can start alpha testing.

Post Details

This team is responsible for the core details screen of the post dialog. Thecore functionality is already implemented, but can be improved to be moreintuitive. This team is also responsible for adding additional types of inputfor posts via the pluggable structure.

Post Feedback

Feedback is a core component for Collaboration Trees, being supported for eachpost variation as well as each variation of each piece of an post. Thisteam is responsible for making the post dialog's feedback screen fullyfunctional, including listing, sorting, and adding feedback. One unique featureof cTree comments is that supporting data, like images, quotes, or studies, isencouraged by increasing their visibility when included. This team is alsoresponsible for the up/down vote functionality supported both on the feedbackscreen and details screen of the post dialog.

Post Contributors

Posts list a summary of top contributors on their preview and details screen,which takes the user to a summary of all contributors and their contributions tothe post. This team is responsible for both the summary and page listing allcontributors.

User Dialog

This team is responsible for the dialog listing information for and about users.The dialog will contain information to allow users to review a summary of theircontributions as well as update their public and private account information.This team will not be responsible for implementing the temporary accounts usedfor alpha testing, but may build on it to implement the dialog.

Usage

Setup

Prerequisites

Install Git
https://git-scm.com/downloads

Note: if you're unfamiliar with Git it may be useful to install a visual Git client likeSourcetree

Install the current LTS version (4.x) of Node.js or newer
https://nodejs.org/en/download/
Install the latest version of Bower
npm install -g bower

Note: if you're having trouble installing on Windows, you may need to run the console as an administrator

Note: if you're having trouble installing on Mac, try this:

sudo npm i -g bower --force --unsafe-perm=true --allow-root

Installpolymer-cli:
npm install -g polymer-cli

Note: if you're having trouble installing on Mac, try this:

sudo npm i -g polymer-cli --force --unsafe-perm=true --allow-root

Checkout project

Open workspace folder in command prompt where you want the project
cd <WORKSPACE>
Clone from GitHub
git clone https://github.com/F4IF/ctree-demo.git
Open command prompt to folder of project
cd ctree-demo
Checkout existing branch (optional)
git checkout <BRANCH_NAME>

Note: if the branch cannot be found:

git fetch --all

Install 3rd party dependencies
bower install

Note: if you're having trouble installing on Mac, try this:

sudo bower install --allow-root

- WARNING: if you call git checkout after this, it's always a good idea to run bower install again -

Recommended development environment

Install Atom
https://atom.io
Install packages (File > Settings > Install)

Start the development server

This command serves the app athttp://localhost:8081 and provides basic URLrouting for the app:

polymer serve

Build

This command performs HTML, CSS, and JS minification on the applicationdependencies, and generates a service-worker.js file with code to pre-cache thedependencies based on the entrypoint and fragments specified inpolymer.json.The minified files are output to thebuild/unbundled folder, and are suitablefor serving from a HTTP/2+Push compatible server.

In addition the command also creates a fallbackbuild/bundled folder,generated using fragment bundling, suitable for serving from nonH2/push-compatible servers or to clients that do not support H2/Push.

polymer build

Test the build

This command serves the minified version of the app in an unbundled state, as it wouldbe served by a push-compatible server:

polymer serve build/unbundled

This command serves the minified version of the app generated using fragment bundling:

polymer serve build/bundled

Extend

We can extend the app by adding more elements that will be demand-loadede.g. based on the route, or to progressively render non-critical sectionsof the application. Each new demand-loaded fragment should be added to thelist offragments in the includedpolymer.json file. This will ensurethose components and their dependencies are added to the list of pre-cachedcomponents (and will have bundles created in the fallbackbundled build).


[8]ページ先頭

©2009-2025 Movatter.jp