Grant Update Factomize Development Projects

Secured
#1
Factomize has decided to move forward with development for the protocol after receiving feedback in this thread.

Thanks to discussion with a Guide, our first modification will be "Thread by Thread Permissions". Our newly contracted developer who I have worked with extensively in the past has begun delving into Xenforo and will begin development soon. Here is a very simple specification:

Modification Name

Custom Thread Permissions

Context

Factom is a burgeoning decentralized data integrity protocol. As part of its governance, five "Guides" were elected to help oversee governance processes and the eventual full automation of all such processes, including their roles.

Guides have their own usergroup on the Factomize forum called "Guides". They do not have any moderation powers but do have a "Guide" banner under their username.

"Authority Node Operators" (ANOs) are the elected companies like Factomize that run servers to decentralize the protocol. In return for running those servers and furthering the protocol in whatever other ways we deem appropriate, we are paid FCT on a daily basis which we can sell on exchanges for normal currency to pay our bills. Each ANO has their own usergroup on the Factomize forum. In the admin panel, they are denoted as "Team [ANO]" so Factomize is "Team Factomize". ANO usergroups do not have any moderation powers but have badges under their username.

It has become necessary for Guides to be able to have private discussions within a specific forum with specific usergroups. Other users have also requested thread permissions that are not viable with the usergroup system.

Previous Pertinent Modification

Brian Gunter created an "ANO Only Poll" modification for the Factomize forum. As part of that modification, within the admincp usergroup section, for each usergroup there is an "Is an ANO" option. This sets whether a usergroup is an ANO or not and will likely be used within the new modification.

Modification Idea

We need a modification where:

1. A thread creator can specify which usergroups and/or specific users can see a thread.
2. A thread creator can specific which usergroups and/or specific users can reply to the thread whether it is private or not.
3. The means for any usergroup or person included within the thread to be alerted and emailed of its existence.

User Experiences

Admin

Via the admincp, admin can set the following:

1. What forums the modification is active in.
2. What usergroups can create a thread with thread by thread permissions.
3. What usergroups can be invited to partake in a permissioned thread.
4. The max number of users that can be invited to partake in a permissioned thread.
5. The max number of permissioned threads a user can create per day (to avoid email spam).

Thread Creator

1. The Thread Creator goes to create a thread either by selecting the "Post Thread" button or via the top of the thread list within the forum. Just below the "Thread Title" area will be a checkbox called, "Set Special Thread Permissions" which is by default not checked. If it remains unchecked, the thread is normal.

2. If the box is checked, a new area drops down with the following options with check boxes next to them.

A. [Checkbox] "Thread is private (only invitees below will be able to see this thread)"
B. [Selection box with all usergroups able to be invited as set in the admincp] "ANOs that can take part in the thread whether public or private".
C. [User selection box] "Specific users that can take part in the thread whether public or private"

3. Once the selections are made and the normal text field is populated and the thread is submitted, it is created with the permissions. If the thread is private, it will receive a "Private" thread prefix using the Xenforo thread prefix system.

4. All members of each ANO invited and the specific users who are invited receive an "alert" as well as an email. Content of the email:

[user],

You have invited to take part in a special [public / private] thread titled [Thread Title] on the Factomize forum by [Thread Creator]. Only certain groups and/or individuals may take part. Please see the thread for specific details located here: [Thread Link].

Sincerely,

David Chapman
Factomize Forum Admin

Users Included In Permissioned Thread

1. At the top of the permissioned thread will be a box in the same location as a poll box. Example: https://factomize.com/forums/threads/08-30-2018-monthly-ano-poll-1.718/

2. The title of the box will be, "This is a [private / public] thread with restricted access. Only the following may reply to this thread:

3. Below the title row will be an alphabetical list of the usergroups and specific people THAT HAVE VIEWED THE THREAD. If the usergroup is an ANO, only one member of the ANO has to view the thread for it to count as being viewed. It will say, "Viewed thread: [list of ANOs and users]

4. Below the view row will be a row with all the ANOs and users invited who have not yet viewed the thread. It will say, "Have not yet viewed thread: [list of ANOs and users who were invited but haven't viewed it yet]

5. For the Thread Creator, the thread options dropdown box will have options to "Invite additional user or usergroup". If they want to invite additional users or usergroups, they are given a screen where they can do so and those invitees are alerted and emailed.

6. For the Thread Creator, next to each usergroup and user in the list of users that were invited and taking part is an [X]. If that X is clicked on, they are promoted, "Remove [usergroup] / User from taking part in this thread?" with a yes or no prompt. If yes, that usergroup or user no longer can take part (or view the thread if it was private) and are emailed letting them know. Content of email:

[User],

[Thread Creator] has removed your ability to take part in the thread titled [Thread Title]. Please contact them privately if you have any questions.

Sincerely,

David Chapman
Factomize Forum Admin

Users Not Invited To Thread

1. If the thread is private, those who were not invited cannot see it.

2. If the thread is not private, they see everything everyone else does including the list of invitees. They do not see a reply button or quick reply box.
 
Last edited:
Secured
#2
A quick update on development of the above:

Our developer has begun work which includes delving into Xenforo. He has a massive amount of experience with other forum software but retired when Xenforo was released. He tells me that the Xenforo developer documentation is lacking but the pieces are coming together. This speaks volumes to the importance of Factom having excellent documentation.

Regarding the modification, the admin options (limiting groups, daily limit, etc) are functional, you can create private threads with all the options (adding specific usergroups as well as specific people) by manually inputting userids/usergroupids into a text box. He still needs to do the front end in a user friendly manner and integrate the process of tagging those invited. We'll then begin testing internally and perform any necessary bug fixes and refinements.
 
Secured
#4
The Custom Thread Permissions Modification is currently live and being tested in the "Governance Discussion" forum. Only I can create permissioned threads right now but all ANOs and trusted forum members will be able to as we get further into testing. There's a few minor bugs / areas of improvement that we'll begin to tackle in a couple of days (our dev's weekend just started). Those issues are:

A. Occasionally the 'viewed' doesn't update right away (but most of the time it does) and you have to refresh.
B. You can currently see the options (for receiving alerts and emails) in the preferences if you're not an invite group member.
C. It is possible to invite people to threads in forums they can't read (but it is not possible for them to actually read those threads).
D. If "Private" thread is checked, we need to automatically check "enable custom permissions" if it's not checked.
E. Editing the thread removes the thread prefix.
F. List of viewed / not viewed needs better formatting.
G. Secondary usergroups are not invited.
H. If there's a private thread people can't see, the forum remains bolded showcasing that there's a thread for them to read which they can't get rid of.
I. We broke the thread view counters. Oops.

In the future, the little icon next to ANOs names will display their logo.
 
Last edited:
Secured
#5
All issues listed above are now fixed. Regarding issue H:
If there's a private thread people can't see, the forum remains bolded showcasing that there's a thread for them to read which they can't get rid of.
We're not happy with our fix here and it's temporary. Right now it still shows as bolded but you can get rid of it by visiting the forum but won't see the thread. Fixing this will actually take a lot of work so we decided to implement this temporary fix for now.

Please let me know if you see any other issues or have suggestions for improvement.
 
Last edited:
Secured
#6
We went live with a new build this evening and all known issues with the Custom Thread permissions are now fixed. We will continue to improve this modification as necessary. The newest build also allows us to upload and display logos for each ANO which we've done for those who had one available in the repository. If you don't like how we're displaying your logo or how we had to crop things, please reach out. Those missing logos, if you want one displayed, please hit me up.

On to the next modification...
 
Secured
#7
Our next modification:

Modification Name

Factomized Edit and Version History

Context

At present, the Factomize Forum Content addon only proves a post has been edited and theoretically by what user (a blockchain identity solution needs to be utilized to PROVE what user edited the post). The modification does not show what was edited therefore someone could claim what they edited was something other than what was truly edited. It's time to solve that problem.

Modification Idea

We need a modification where:

1. When a post is edited, the old version of the post is stored in the database.
2. There is a UI where you can view old versions of the post, whether they were secured by Factom and a link to the corresponding entry on the blockchain, and the content of that post.
3. There is a UI where you can compare different versions of posts.

User Experiences

Post Creator

After an edit is made on a post a "History" link will appear with that post. Clicking on the history will show a table that lists the current and old posts along with the dates of those old posts. The username of who edited the post, whether the post is "secured" or "pending" and a link to its entry on the Factom blockchain will appear. A button comparing versions of this post will be available as well as the means to revert to an earlier version of the post.

All other Users

All other users will have the same user experience but will not be able to revert the post to an earlier version.
 
Last edited:
Secured
#8
The Factomize Edit and Version History modification is live on the forum and undergoing testing. Please click on "history" in the above post to see it in action. Please note that edits made prior to it going live will not have a secured message as such data was not stored in the database previously. In addition, posts older than 60 days will not be viewable.
 
Secured
#9
Our next modification:

Modification Name

Polling Improvements

Context

At present, the poll system does not allow for "Guide Only" votes, does not allow for "Guide and ANO Only" Votes, does not allow for random numerical inputs rather than specified options, and the UI is different from the Custom Thread Permissions modification. All of these options are needed for upcoming grant voting and other future votes.

Modification Idea

The following improvements will be implemented.

1. Polls will use the same ANO naming scheme / design as the Custom Permissions modification.
2. If you hover over the ANO name it will show who on the ANO team voted.
3. Rework it so the current poll options of:

Code:
Question
Possible responses
Maximum selectable responses

Options
[ ] Authority Node Operators Only
[ ] Allow voters to change their votes
[ ] Display votes publicly
[ ] Allow the results to be viewed without voting
[ ] Close this poll after:
Will become:

Code:
Question
What type of poll should this be?
-- ( )A normal multiple choice poll (NOTE this should be the default)
-- ( )A single number input for scoring something (NOTE - if this is selected then "possible responses" and "maximum selectable responses" info is greyed out or disappears.  If this type of poll then the XF number box is used)
----- Allowed numbers [Low Number] to [High Number]

Possible responses
Maximum selectable responses

Who can take part in this poll?
( ) Everyone
[ ] Authority Node Operators
[ ] Guides

Options
[ ] Allow voters to change their votes
[ ] Display votes publicly
[ ] Allow the results to be viewed without voting
[ ] Close this poll after:
"Everyone" will let all members of the forum vote and should be the default. Or you can choose ANOs and / or Guides.

4. Under have not voted, depending on who is invited to vote, we will break up the groups into: ANOs and Guides (list all Guides separately). Do not display members even if they're invited.

5. For the Votes area, depending who the poll invites, display in groups as ANOs (again have the same naming scheme / design as the Custom Permissions and hover), Guides (list each Guide separately), and Members and list each member that voted.
 
Secured
#11
Our next work will be the following. It's pretty small in scope so I won't use the same format above.

We need some minor improvements to the Permissioned Threads modification. Currently we have:

mod.png


Changes:

1. When "default" is selected, we will grey out the "Invite Groups" and "Invite people by Username" areas as there has been some confusion.

2. We will change "Permissions Enabled" to "Restricted Public Thread" and change the description to, "Only groups and members you invite will be able to reply to the thread. Everyone will be able to see the thread, invited groups and members will be emailed and listed as invited.

3. We will add "Unrestricted Public Thread" with the description of, "All members of the forum will be able to respond to this public thread. Invited groups and members will be emailed and listed as invited." This functionality will then be added.

4. We will change the description of "Private Thread" to "Only invited groups and members will be able to see the thread and reply. They will be emailed and listed as invited."

5. If a poll is created in a "Restricted Public Thread" only those who are invited will be able to vote.
 
Secured
#12
The Polling Modifications modification detailed above is now live:

View attachment 295


View attachment 296
Really cool.

2 questions/remarks though:
- Guides aren't named after their entity, whilst that is the one that is voting
- What would happen if I vote as guide from Centis BV and would also like to vote as chairman from BIF? (not that this is going to happen, as I will ask one of my colleagues to vote for BIF in this case, but it is still interesting to know)
 
Secured
#14
The minor improvements to the Permissioned Threads modification detailed in post 11 of this thread are now live on the forum.

Our next modification will be the Timed Discussion modification. My dev and I are still going back and forth on the spec as it's a big, complicated mod but I hope to have it posted here within the next 48 hours.
 
Secured
#15
Our next modification:

Modification Name

Timed Discussions

Context

Governance of the Factom protocol requires important issues be brought before the Standing Parties for discussion and occasionally a vote. There has been disagreement regarding how long discussions should be held and how long votes should be open for. This led to discussion of defining how long discussion and votes should be open for and it showed it was a complicated process where people would forget defined durations and problems would arise when some felt discussion should end early or go longer.

Modification Idea

We need a modification where:

1. A user can create a discussion that has a preset time frame for discussion depending on the selected level of importance.

2. A user can specify that a vote automatically take place after that preset time frame runs out.

3. The vote is open for a specific amount of time.

4. During the discussion phase, a user can motion that the discussion end early. A second of that motion triggers a vote where a majority of thread participants voting yes can end the discussion early.

5. During the discussion phase, a user can motion that the discussion be prolonged. A second of that motion triggers a vote where a majority of thread participants voting yes can end the discussion early triggering the vote.

6. Participants in the thread are updated by an automated bot that posts in the thread.

7. If ANO or Guide and ANO Only, a list of ANOs and Guides and which have viewed the thread are displayed.

User Experiences

Admin

Via the admincp, the admin can set the following:

1. What forums the modification is active in.

2. What usergroups can create a thread with Timed Discussions.

3. The max number of Timed Discussions a user can create per day (to avoid email spam).

4. The number of days a "Major Discussion" will last (default is 7)

5. The number of days a "Minor Discussion" will last (default is 2)

6. The description of a "Major Discussion"

7. The description of a "Minor Discussion"

8. The duration by which a Major Discussion is extended if a motion passes (default is 72 hours)

9. The duration by which a Minor Discussion is extended if a motion passed (default is 24 hours)

10. The number or hours left in a discussion where an email is sent to all participants letting them know (default is 24)

11. For ANO / Guide Only discussions, the percentage of ANOs / Guides who have to vote yay or nay to successfully extend or end a conversation.

12. For "everyone" discussions, the percentage of thread respondents who have to vote yay or nay to successfully extend or end a conversation.

13. The duration of a major discussion poll vote (default is 72 hours)

14. The duration of a minor discussion poll vote (default is 48 hours)

15. The duration, in hours, from the start of the thread until a motion to extend or end can be made (default is 18 hours)

16. For "Document Ratification" threads, the number of Guide votes out of 5 for the ANOs to get a chance to vote (default is 4)

17. For document ratification threads, the number of days the discussion will last (default is 8)

18. For document ratification threads, the number of days the Guide vote will last (default is 3)

19. For document ratification threads, the number of days the ANO vote will last (default is 5)

Thread Creator

1. Below the thread title, for permissioned usergroups, "Create Timed Discussion" will display. If selected, a drop down with options will appear.

2. [Checkbox] Start a major discussion. Major discussions are [description from admincp] and last for [number of days from admincp].

3. [Checkbox] Start a minor discussion. Minor discussions are [description from admincp] and last for [number of days from admincp].

4. [Checkbox] This is a document ratification / amendment thread (if this is selected, then ANOs and Guides is automatically selected below and the poll option below is automatically checked. The poll question for this will automatically be, "Should the document be ratified or amended as specified?" and the two options are "Yes" and "No". Guides will vote before ANOs and [number from admincp] must vote yes for ANOs to be able to vote)

5. Who Can Take Part In This Thread

( ) Everyone
[ ] ANOs
[ ] Guides

6. [Checkbox] Have a polled vote at the end of the discussion (you can change the poll options during the discussion)

6. If the above is checked, allow them to create the poll. Display the poll to everyone in the thread but have it be greyed out with the statement "This poll will open automatically when the timed discussion is done."

7. If the Thread Creator creates a poll, when there is 24 hours left in the discussion, email them with, [Username], there is 24 hours left in your Timed Discussion Thread titled [thread title / link]. Please double check your poll questions and make sure they're how you want them.

8. If the Thread Creator creates a poll, if there is a motion to end the discussion early, email them with, [Username], a motion has been made to end your Timed Discussion Thread titled [thread title / link] early. Please check to make sure the poll options are how you want them in case there is a second of the motion and successful vote to end the discussion early."

9. Upon submission of the thread, if it is ANOs / Guides only, all members of ANOs / Guides are emailed with, [Username], [Thread Creator Username] has created a [major / minor] Timed Discussion Thread titled, [Title]. Please take the time to review it."

Timed Discussion Bot

1. Upon submission of the thread, a bot with the username, "Timed Discussion Bot" will reply to the thread with "This thread is a [Major / Minor / Document Ratification or Amendment] Timed Discussion and I am designed to help facilitate efficient communication. [Everyone / Only Guides / Only ANOs / Guides and ANOs] may only take part in this discussion and vote. Unless this discussion is ended early or extended, it will end in [duration from admincp] after which [no vote is planned] / [a vote will automatically take place]. After [motion start time from admincp] from the start of the thread or any point up until 24 hours are left in the discussion, you can make a motion to end the discussion early or extend the discussion by selecting the pertinent button at the start of this thread. If someone "seconds" your motion, a poll will take place and if a majority of voters vote yes by the time the discussion is scheduled to end, the time period will be extended for [time period from admincp].

2. After [motion start time from the admincp] the Timed Discussion Bot should reply to the thread with, "We are now [motion start time from the admincp] into the thread. You may now make a motion to extend or end this conversation by selecting the pertinent button at the top of this thread. This option will end when there is 24 hours left in the discussion."

3. Upon someone making a motion to extend the discussion the Timed Discussion Bot will reply to the thread with, "[username that made the motion] has made a motion to extend the discussion. If someone seconds this motion by selecting the button below, a poll will automatically be created and only those who have participated in the discussion will be able to take part. A majority of those participants voting yay will pass the motion and the discussion will be extended for [duration from admincp]. This vote will remain open until the normal discussion period ends, a motion to end the discussion is voted to pass by a majority, or a majority vote to extend the discussion. [SECOND THE MOTION BUTTON]

4. Upon someone seconding the motion to extend the discussion, the Timed Discussion Bot will reply to the thread with "[Username that seconded the motion] has seconded the motion to extend the discussion. A poll is now active at the top of this thread to vote if you want to extend the discussion. Only those who have taken part in this thread may vote. A majority of those participants voting yes will pass the motion and the discussion will be extended for [duration from admincp]. This vote will remain open until the normal discussion period ends, a motion to end the discussion is voted to pass by a majority, or a majority vote to extend the discussion."

At this point a poll should be created that lists who is able to vote, what their vote is, or if they have yet to vote.

5. Upon a majority of the thread participants voting yes, the Timed Discussion Bot will reply to the thread with "A majority of discussion participants voted to extend the discussion. The discussion will be extended for [duration from admincp] after which the discussion will end.

The amount of time left in the discussion at the top of the thread should be updated.

6. Upon a majority of thread participants voting no, the Timed Discussion Bot will reply to the thread with "A majority of discussion participants voted not to extend the discussion. The discussion will end in [time left]."

7. Upon someone making a motion to end the discussion early, the Timed Discussion Bot will reply to the thread with, "[username that made the motion] has made a motion to end the discussion early. If someone seconds this motion by selecting the button below, a poll will automatically be created and only those who have participated in the discussion will be able to take part. A majority of those participants voting yay will pass the motion and the discussion will immediately [end] / [start the planned vote]. This vote will remain open until the normal discussion period ends or a motion to end the discussion is voted to pass by a majority. [SECOND THE MOTION BUTTON]

8. Upon someone seconding the motion to end the discussion early, the Timed Discussion Bot will reply to the thread with "[Username that seconded the motion] has seconded the motion to end the discussion early. A poll is now active at the top of this thread to vote if you want to end the discussion. Only those who have taken part in this thread may vote. A majority of those participants voting yes will pass the motion and the discussion will be ended immediately. This vote will remain open until the normal discussion period ends or a majority vote to end the discussion."

At this point a poll should be created that lists who is able to vote, what their vote is, or if they have yet to vote.

9. Upon a majority of the thread participants voting yes, the Timed Discussion Bot will reply to the thread with "A majority of discussion participants voted to end the discussion. The discussion will [end immediately] [end immediately and the vote will start].

10. When it is time for the final poll to start, the Timed Discussion Bot replies to the thread with "The final vote is now open. It will last for [duration], please take the time to vote accordingly.

11. When the poll closes, the Timed Discussion Bot replies to the thread with, "The vote has now closed. Thank you."

12. If the Document Ratification option is selected, then when the final polling starts, the bot replies to the thread with "The final poll is available for Guides to vote on now. If Guides pass the vote with [number from admincp] then ANOs will be able to vote. If Guides fail to pass, there will be no further action.

13. When the Guides pass the vote, the bot replies with, "The Guides have voted in favor and ANOs may now vote."

Email Reminders

1. If the thread is ANO / Guide only, when there are 24 hours left in the discussion, an email will be send to all ANOs / Guides stating:

[User],

There are now 24 hours left in the timed discussion of [thread title]. If you have any additional points to make, please do so now.

2. If the thread is for everyone, when there are 24 hours left in the discussion, an email will be sent to those who have participated in the thread stating:

[User],

There are now 24 hours left in the timed discussion of [thread title]. If you have any additional points to make, please do so now.

3. With 24 hours left in a vote, if a Guide or ANO hasn't voted, they are emailed with a reminder saying,

[User],

There are now 24 hours left to vote on [thread]. Please take the time to do so.

Users Of The Thread

- If the discussion is ANO / Guide Only, then a list of all ANOs / Guides who have viewed the thread or not is at the top. If it is not ANO only, there is no list of participants.

- A countdown timer with the days/hours left in the discussion.

- When the final vote has started, a countdown timer showing the days/hours left in the vote.

- A button or link to motion to end the discussion early will be at the top of the thread.

- A button or link to motion to extend the discussion will be at the top of the thread.

Users Not In The Thread

- Guests and users not participating in the thread can see everything users of the thread can see except the buttons to motion and second the motion.
 
Last edited:
Secured
#20
We're pleased to announce Factomize's Document Management Platform. It will become part of factomprotocol.org and is designed to bring greater efficiency and transparency to our governance by providing document versioning as well as automatic factomizing of our governance and admin documents. It is not designed to REPLACE the Factom Drive (it of course can if that ends up being the desire) but to be a simpler UI that is integrated with factomprotocol.org and automatically Factomizes docs. Only Guides will be able to upload and amend docs. The categories will be changed as necessary to fit within the new naming framework. Feedback is welcome. An example document showcasing the version history can be seen here: https://factomize.com/forums/documents/doc-0000-example-document.8/
 
Secured
#22
1. Factomize designed, developed, and has now deployed an additional feature to the poll system. There is now an option to hide votes until the poll closes. This will be a very important feature for some votes.

Screenshot 2018-11-08 at 9.52.45 AM.png


Screenshot 2018-11-08 at 9.53.07 AM.png


2. We are testing the ANO Contributions modification mentioned in the post above on our test forum. Other than a few needed tweaks, so far so good.
 
Last edited: