Giter Site home page Giter Site logo

pump-io / pump.io Goto Github PK

View Code? Open in Web Editor NEW
2.2K 140.0 333.0 12.03 MB

Social server with an ActivityStreams API

Home Page: http://pump.io/

License: Apache License 2.0

JavaScript 97.32% CSS 0.78% Shell 0.14% HTML 0.37% Dockerfile 0.03% Pug 1.36%
federation javascript social-network decentralization nodejs social activitystreams pump-io

pump.io's Introduction

pump.io

This is pump.io. It's a stream server that does most of what people really want from a social network.

Build Status Coverage Status npm Vulnerabilities

What's it for?

I post something and my followers see it. That's the rough idea behind the pump.

There's an API defined in the API.md file. It uses activitystrea.ms JSON as the main data and command format.

You can post almost anything that can be represented with activity streams -- short or long text, bookmarks, images, video, audio, events, geo checkins. You can follow friends, create lists of people, and so on.

The software is useful for at least these scenarios:

  • Activity stream functionality for an existing app
  • Experimenting with social software

It also comes with a web UI.

Documentation

For information about project policies please check out the GitHub wiki, and for technical documentation see our ReadTheDocs website.

Bugs

If you find bugs, you can report them here:

https://github.com/pump-io/pump.io/issues

Colophon

This software includes the following great packages of client-side software.

  • Twitter Bootstrap
  • Backbone
  • JQuery
  • Fine Uploader
  • WysiHTML5
  • Spin.js
  • SockJS
  • Select2
  • JQuery Easydate
  • OAuth.js

It also uses these icon sets:

This sample photo is used for the main page:

License

Copyright 2011-2018, E14N https://e14n.com/ and contributors

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

pump.io's People

Contributors

bio-boris avatar commanderroot avatar cwebber avatar detrout avatar evanp avatar fil avatar grdryn avatar greenkeeper[bot] avatar h4ck3rm1k3 avatar ian-kelling avatar jankoppe avatar jankusanagi avatar jpope777 avatar kabniel avatar kesara avatar larjona avatar liamzebedee avatar macno avatar madbob avatar marcbachmann avatar rfinnie avatar ryanriddle avatar sammyleigh avatar screwtapello avatar strugee avatar tsyesika avatar warpr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pump.io's Issues

Avatars

We should allow the user to upload an avatar picture.

The Social Web is not federated

Social networks are isolated and disconnected. People put their creative works, their social graph, and their personal connections into services with dubious terms of service. Service providers depend on the network effect to prevent healthy competition. Gigantic user databases are a one-stop-shopping target for hackers and spy agencies.

We must federate the social web.

Edit profile

Users should be able to edit their own profile.

This should be reflected in the 'person' object.

Comments in Web UI

We should allow posting comments in the Web UI, and showing posted comments.

Allow POST to following list

A user should be able to POST to their own following list to follow someone new.

It should generate a new 'follow' activity, also.

OAuth for remote login in Web UI

You should be able to log into a remote site using OAuth.

Once you're logged in, you should be able to generate activities related to that site: comments, faves, follows, and shares.

Post note in Web UI

We need a posting interface in the Web UI.

Initially it should let you post a note (text). Maybe with Markdown.

Activity lists in Web UI

We need to show activities in lists in the Web UI.

It's probably a good idea to have a "default" activity view, then specialized views by the verb and object of the activity.

For example, "post" a "note" would have a special view; "share" an "activity" might have a different view. "follow" a "person" would have a different view.

OStatus

We should support remote follow using OStatus.

Follow in Web UI

It should be possible, when viewing someone's profile page, to follow them.

Post image in Web UI

We need a way to upload an image in the Web UI.

We may want to support folders or images.

Handle 'favorite' verb

An activity posted with the 'favorite' verb should:

  • Add the object to the user's list of favorites
  • Add the user to the list of people who like that object

Restricted posts

You should be able to restrict audience for a post by including an address.

Standard addresses: public, followers, site, ...?

Other addresses: people, groups, lists.

Webfinger

We need Webfinger.

First, for OStatus stuff.

Also, for discovering a user's feed, and their inbox.

Lists

We should support lists (user-curated collections of other users).

Show likes for activity objects

I think we should show the likes responses for an activity object in these cases:

  1. If it's the object of an activity
  2. If it's being returned directly from the REST API

Scalability level 0

I'm interested in seeing this project make scale a priority.

So, here's my first scalability goal: consider a network of 100,000 users. There is a Pareto distribution of number of followers per user, with an 80-20 rule distribution (good enough) and an expected value of the Dunbar number, 150. See http://en.wikipedia.org/wiki/Pareto_distribution for help on this.

The scalability goal is to handle 10 new activities per second (aps) with a maximum delivery time of 100 seconds.

In the future, we can vary the numbers by orders of magnitude (100 aps, 10^6 users, 10s for delivery) to reach higher goals.

separate posts from other notifications in Web UI

We should show two streams in the Web UI. One for posts (or shares of posts); another for all other notifications (likes, follows, etc.).

Not sure about comments; they should probably go in the notifications area.

Scalable streams

Right now, streams are stored as lists of activity ids in a databank.

This probably won't scale well as we go to more than one node server per databank (race conditions on write) or 10^5 or 10^6 activities per stream.

There may be some options to archive old stream members, so a "stream" might consist of a "current" stream list plus many, many "archive" stream lists.

Show replies for activity objects

We should include a replies collections for activity objects:

  1. When they're the object of an activity (Activity.expand() should handle this)
  2. When they're returned directly

This should probably just be added to ActivityObject.expandFeeds()

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.