Introducing Curator #2: Understanding how Curator works, important details and how it could affect the community

in #utopian-io7 years ago

The first post about Curator was lengthy so could not include all important details about Curator. I will try to address other details about Curator here.

Please note that some of the features described in this article are still in development and would be implemented in the next rounds of updates. This article addresses the vision of the completed Curator.

If this is the first time you are reading of Curator, please see:

Using the demo

Adding a new team

To create an account, please visit the "team" in the left sidebar, over there click on the "add member" button which will generate a popup for you to fill in the info of the new user you want to invite.

The demo uses ethereal.email as email STMP server so no emails are delivered to the real addresses - instead they are caught to ethereal.email's own email servers.

My ethereal.email account details are on the Github page of curator. Log in to ethereal.email/messages, and see all emails from the demo there. Now click on the one you sent, and follow the steps it provides to activate your account and that's it.

Submitting post to Curator

It is not possible to submit posts to Curator - and this is one of the positive things about Curator. Curator directly streams its content from the blockchain, there is no interface for users to submit content to.

If a curation team decides to curate by tag(eg: # love), then authors who target their curation services can create their posts from any Steem client and simply use the target tag in their post.

If a curation team decides to curate by author, such as for multi-author accounts in the coming hivemind, or the current system as exemplified by @adsactly, then only posts created from the target account will be curated.

Again if a curation team decided to curate posts from a particulate app(eg: Steemit, Busy, ...) then in that case authors who target their curation services would have to create their posts from the targeted clients.

Perhaps in the future more content submission modes may be included in curator.

Viewing Curation trail

A Curation trail page comes with the second update for Curator. For now you would have to view the history of the bot account associated with curator to know its trail.

A service like Steemd.com is perfect. To view the trail of the demo, the demo's voting bot account is @makafuigdzivenu. Go to steemd.com/@makafuigdzivenu.

Lazy rendering

The content renderer is not yet smart, it will only parse content once using the Marked MarkDown parser - without any custom setup.

While most Steem clients do very well in formatting Steem content, I discovered several unconventional content formats from new and undeclared clients. These contents were neither HTML nor were they MarkDown, they are a bad mix of the two and in addition to some peculiar markup styles.

Bottom line is, some Steem contents need sophisticated parsing to render, something the Curator parser does not do.

The current lazy content parser does not re-orient naked links. This means naked youtube links will not be converted into iframe videos, naked image links will not be converted to images and naked links will not be hyperlinked.

Future version would improve the parser, but for now only well formatted posts would display perfectly.

The demo peculiar's configuration

I few things noted in the first post need to be re-empathized:

100% voting power

The demo account has steem power of 6. Votes below 100% are rejected by the blockchain as below dust threshold. So the demo will vote with 100% on all votes, not the custom percentage you set while curating.

Pre-populated DB

Since Curator streams live content directly from the DB, if I were to leave the populating engine on, the DB of the demo would be populated with vast amounts of posts.

We do not need vast amount of posts indexed just to test the demo so I pre-populated the demo and then turned the populating engine off.

So, no new content from Steem will be caught into the populator, only the pre-populated once are available.

These settings are ONLY for the demo, not the source code. The source works without any such pre-configurations.

Installation and setup

Custom filter

To setup Curator, you need to determine whether to curate for posts by a specific author, category or app. Whichever one of these you intend to curate by, you set it using config.js file in the config folder - similar to App Stream.

  • //filter settings
  • config.target = 'steemit' //app, author or tag you want to curate by
  • config.db_engine = 'post-by-app'//other options are: post-by-author or post-by-category

For now, ignore all other config settings.

Example 1: Curate by the tag love:

  • //filter settings
  • config.target = 'love'
  • config.db_engine = 'post-by-category'

Example 2: Curate by the app busy

  • //filter settings
  • config.target = 'busy'
  • config.db_engine = 'post-by-app'

No more App Stream?

While Curator would no longer need App Stream to work, it does not make App Stream redundant since App Stream has its own use.

App Stream was not built as a Curator dependency, and Curator does not address the problem App Stream addresses. Hence if you want a full standalone Curation system, use Curator.

If you want to index all posts along with their comments as well as their replies by an author, app or category, then use App Stream.

Peer Query beta would use App Stream to index all comments and replies on the made from thirdparty clients while using Curator to curate the posts made by our users.

Conventions

During DB setup, most of the settings from the .env file are imported into the settings table in the DB. After the server is started most modules would then fetch these configs from the DB - not the .env file.

This system will allow for editing of the configs in a coming settings page. This way site owner and admins would be able to change the configs of site from the UI and not need to change the values in the .env - most importantly the owner and admins would be able to update global site values during run time without having to re-restart the server.

Some modules such as the voting bot system are configured to re-fetch the configs from the DB every few minutes. This will ensure that the server is always using the latest configs in the DB.

Also, since these values are stored in the DB, even if the site is restarted, the current system settings would still be intact and not be overridden by the default values in the .env file.

Bot vote worth accuracy

Global values used calculate vote worth of the vote's bot are:

  • Reward Fund info
  • Bot Account info
  • Price Feed History info

These values are fetched once every 4 minutes(default, you can change it but please keep it above 1 minute to prevent high load on your server).

The challenge here is that since the stats are updated once every 4 minutes, the vote amount calculated might not be very accurate since they are outdated by 4 minutes.

While the system could fetch them each time it is upvoting, it is not done this way since if the voting bot is  voting at very low intervals(below a minute) then this could slow the system down.

Operating time-space for moderators

Moderators can only moderate posts which have not yet been voted. The voting bot will check the DB for approved posts according to the interval set in the .env file and vote for one post at the set interval.

To ensure that moderators are able to review curated contents before they are voted, set the voting interval to at least above 1 minutes. So the voting interval should be at least 1 minute to allow for more time for moderation of curated posts

If you only need curation and are not interested in moderation of curated posts, then ignore the above recommendation.

Resting time for the bot

Curator has the settings to let the bot rest for at least one day for each week. In the .env file this option is identified as : BOT_HOLIDAY and HOLIDAY_DAYS.

This feature is not fully developed yet but will be included in the coming rounds of updates. A resting day is necessary for the bot, allowing it to recharge its depleted voting power.

It is expected that on such a day no curation activity would happen and the team would enjoy a holiday. The default day is set to sunday, and the days count is 1. You could change these to suit your needs.

Generating interesting stats

Author rewards

Every voted post get recorded along with the amount awarded in $. This will allow us to generate cool stats such  as:

  • total amount awarded to an author during a specific time frame
  • total amount rewarded to all author during a specific time frame
  • total amount rewarded to all authors since the launch of the project

View audience

To calculate the audience of a post, the system would sum known values and multiple it by an estimated user factor.

Estimated audience = (number of email subscribes + total number of followers on the projects blogs) x (user factor).

Example:

  • number of email subscribers is: 201
  • number of followers on steem account of project is: 130
  • owner or admins sets user factor to 2
  • estimated audience would be: (201 x 130) x 2

 The user factor is the estimated views or traffic generated by the post author, other steem clients, social media, resteem and Google. This value will be introduced in the next update.

The user factor must always be greater than 1 since (anything x 1 = anything). If you set user factor to 1, then it means that you mean to say that the author, other steem clients, social media, resteem and Google generate absolutely no extra traffic for you.

To calculate the total audience for a project itself might be something like:

(email subscribers + blog followers + total team + total authors ) x user factor(3+)

Reputation calculation

Since each vote comes with a %, the percentages would be used to build an author's reputation. Every user whose posts is curated(approved, rejected or re-curated) gets added to the DB as a user.

Every time a user's post get approved, the % is added to the user's account as points. A sample reputation scale could be:

  • 100 points > 1 star
  • 500 points > 3 star
  • 1000 points > 5 star

Example:

  • first time approval at 5%
  • next 20 posts at 5% or next 10 approvals at 10% or next 5 posts at 20%
  • total is now 105 points
  • and user would be a 1 star user
  • perhaps rejected / reported posts could carry a - % hence reduce reputation score

Calculating a curator's pay

With Curator, Curators are paid daily through an upvote on one of their blog post for the day. Assuming each curation has 1% vote reward, then for 30 curation a curator will receive 30% vote from the bot.

Example:

  • owner/admins sets the curating reward for each curation to 0.5%
  • a curator curates 40 posts for the day
  • their reward voting power for the day is: 0.5% x 40 = 20%
  • they will get a vote with 20% voting power from the curator' voting bot on their blog post

The owner/admins will set the % a curator gets for each curated post.

All-encompassing funding model

Funding for authors

Authors are funded through the curation system: when your post is approved, you receive a vote for it.

Funding for team

Each team member will have one post from their account voted by the bot each day. Curators would be voted according to the number of curation they did for the day.

For the non-curating team such as moderators, admins, owner and developer, they will receive a vote according to a percentage set by the owner or admins.

These features will come in the next version.

Funding for project

  • Bot votes on the daily blog posts of the project(in development)
  • Curation rewards

Remuneration for sponsors

Sponsors also need to be rewarded for delegating Steem Power to any Curation service. With Curator, here are they ways they could be remunerated:

  1. being listed in the comment of the bot on voted posts. as witness a link to your witness campaign or voting could be attached; as an app or business, a link to your product or services could be attached and as a org a link to your homepage could be attached
  2. being included in email digest to email subscribers; a powerful marketing opportunity for them
  3. being listed on the home page of the project as well as the special sponsors page
  4. being included in the daily digest blog posts of a curation team. I remember how @elear always lists all sponsors of Utopian in his blog posts

This way, everyone involved with a curation service wins and everyone is motivated. Everyone would also be committed and accountable since they are compensated for their time and service.

Full business model

Curator is built to be a full business system by having the following system:

  • All-encompassing financing model
  • Graphical User Interface
  • Standalone system
  • Team system with capabilities
  • Reputation
  • Internal chat system

Benefits of Curator

Benefit for app developers

App owners get a simple standalone system to curate their system needing just a few tweaks.

Benefit for community

One of the main benefits for the community is that depending on the Curation service they are targeting they would have various degrees of freedom in post creation and reward scheme.

Freedom of client

If you are targeting a curation service whose curation service is targeting posts by author(eg: @adsactly) or category(# life), then you can create your content from virtually any Steem client/ interface - not a specific category only. Only for Curation services which target apps do you have to use the respective apps.

There is no submission portal for Curator, so you simple create your posts wherever, do no submission and still get it curated!

Freedom from reward-split

Most Steem clients split author rewards for posts created through their clients. This is very necessary so as to fund the clients, even Peer Query beta would implement this feature as it will be a full platform for going lots of awesome things.

However, for curation services which are not related to a specific app but rather curate by category or author, reward splitting will be impossible. This will mean the community receiving the curation will receive their full author payouts.

Example: a curation service is curating by the tag # love. The community will not use any specific  app to create the post. Instead they will create from any client of their choose and simple use the tag "love" in their post. Since they can create content from any client, there will be no way to enforce reward splitting.

Since Curator already has an all-encompassing remuneration system for all parties involved(community, team, sponsors and the project) as explained above, the lack of reward splitting should not cost the curation service much.

Benefits for curation services

  • All encompassing financing to compensate all parties: project, sponsors, team and authors(in development)
  • Standalone system with DB indexer, curation system, custom reputation system, landing pages and bot
  • All encompassing UI with curation interface, chat system, curation trail pages, and several other pages(in development)
  • Opportunity to capture emails to deliver digest of top curated posts for email subscribes(coming soon)

Benefit for sponsors

As already shown above, Steem Power delegators to Curator projects would get promotion opportunities for their witness campaigns, businesses or services.

Promotions opportunities include being listed in comment by voting bot, advertisement space in email digest, space in daily blog posts of project.

Sponsors are also listed on the homepage of the project as well as special sponsors page.

Curator in development

Coming in next update

  • Curation trail page
  • Reputation system for authors
  • Dynamic landing page
  • Sponsor page and management
  • Password reset for team
  • Wallet page for team
  • Sponsor page and management
  • Community page for user
  • Segregation of team capabilities by role
  • Account page for team users

Cooking for third( and perhaps final) update

  • full bot and bot page
  • full blacklist system
  • live internal chat
  • email subscribe
  • setting UI
  • dynamic sitemap
  • public api for thirdparty app
  • feature improvements
  • documentation and support
  • page templates for footer page


Alright, I'm far behind schedule so I'm off to complete the first round of updates. Thanks for your support and time in reading another lengthy post!


Sort:  

I just want to state how much appreciation and respect I feel for an effort like this. To inform and educate people like myself and bring us into a world that exists without our participation. I will probably have to read all of it again to "get it" but gratitude for your effort does not have to wait. Thank you, thank you. Peace and goodwill.

Thank you for the contribution and for the amount of work included in your posts, it's clear that you're building a great application, with a structured plan and with ordered work practices.

In the blog post category it's very important the good editorial content, because this category is focussed in the projects promotion, and, although the format of your post is very good, the graphic resources (when necessary) could help to the readers to understand more aspects of your project and to make it a little easier to read articles that are too long.

Will be nice to see your next update with the features that you've mentioned here. Keep up the good work.

Your contribution has been evaluated according to Utopian policies and guidelines, as well as a predefined set of questions pertaining to the category.

To view those questions and the relevant answers related to your post, click here.


Need help? Write a ticket on https://support.utopian.io/.
Chat with us on Discord.
[utopian-moderator]

Hey @dzivenu
Thanks for contributing on Utopian.
We’re already looking forward to your next contribution!

Want to chat? Join us on Discord https://discord.gg/h52nFrV.

Vote for Utopian Witness!

Congrats, this wonderful post is featured on today's Joy Steemit Daily News! (in Chinese :D)


thank you!

Post yang sangat keren

I want to learn more about being a curator?
I am a photographer among others and I would like to invite you if you like my blog and see my most recent works. regards

https://steemit.com/colorchallanger/@dimiv2017/b-and-w-photography-challenge-day-2

Congratulations @dzivenu! You have completed the following achievement on Steemit and have been rewarded with new badge(s) :

Award for the total payout received

Click on the badge to view your Board of Honor.
If you no longer want to receive notifications, reply to this comment with the word STOP

Do not miss the last post from @steemitboard:
SteemitBoard World Cup Contest - Quarter Finals - Day 2


Participate in the SteemitBoard World Cup Contest!
Collect World Cup badges and win free SBD
Support the Gold Sponsors of the contest: @good-karma and @lukestokes


Do you like SteemitBoard's project? Then Vote for its witness and get one more award!