GitSteem (Github + Steem) 📝 An outline of an idea...

in #steem-dev7 years ago (edited)

steemgithub.png


I am using the name GitSteem as a placeholder to make it easy to reference this idea. Also, this is simply an idea for starting conversation. I am sure this is not the only method to achieve this but it seemed like a good one to me after a little thought and research.


WHAT IS THIS?

Currently developers do not get paid for open source contributions using pull requests or creating issues. STEEM has made it possible to get monetary value from social media. This concept in its simplest form is using your stake in the system to create rewards for people that provide value. Although this is used in a social setting the same concept and system could be applied to the development world. This would allow them to use STEEM in a more focused and developer centric platform.

WHY DO THIS?

Open source is an awesome community and developers have embraced an environment where they can interact, review and contribute to major and minor projects through Github. However, there is no monetary reward and through STEEM we are now able to make that a reality. By combining both worlds and using the APIs provided with the correct access, we can create this system.

HOW WILL THIS WORK?

The simple solution would be to provide an interface where a user can login with STEEM credentials. Many platforms already do this such as chainbb, busy.org and eSteem. The user would provide their posting key and username when logging in. Once logged in the user is then provided the option to connect their Github account to this STEEM account. This is done through a web application flow using oath. A database would then be used to store the users STEEM id to the authorized Github user name. This would force that each STEEM account is connected to a single authorized Github account. (OR maybe it is possible to create a record on the blockchain with these two account names connected that can be queried when new connections are attempted.)

Authorizing GitSteem to connect to your Github account is required for any activity on the platform. If this is declined then the user will be able to login and view information (which is all data provided from the blockchain) but will not be able to perform any actions including upvoting, commenting and posting. This will force the user to create a Github account or connect if they would like to participate. This will not stop them from being able to login to other platforms (ex: steemit.com) to find and upvote, comment or resteem these same posts.


POSTING

In order to post you will need to have authorized the connection to your Github account. Once this is done the user can create a new post and will able to select from repos on their account.

Also, you will need to provide a pull request or issue connection from your account to submit a post. Through the Github API and your username, issues and pull requests will be queried and then you can connect it to that STEEM post. It will then list a few details for that pull request or issue that it pulls into the post. These will not be listed on the blockchain but will be listed on a database to connect with that post for viewing on GitSteem. This will force every post to be provided with relevant Github information. Private repos will not be able to post.

CATEGORIES

All posts will have three predefined categories based on the data from the Github API. The three categories would be: gitsteem , pullrequest-gitsteem OR issue-gitsteem , and {reponame}-gitsteem. The user can then add two additional categories to the post. This will limit the ability to add specific categories that you want which you can currently do with Steemit, but my opinion is this is fine and will help in this use case to provide better structure and organization.

UPVOTING

Upvoting will not require the user to have access to that specific pull request or issue. They will have to authentic with their Github account before the user will be able to perform any actions other than login with their STEEM account. Everything else with upvoting will work the same as rules laid out by STEEM.

COMMENTING

Any user that has a connected Github account will be able to comment on posts that are shown. The same functionality as Steemit which allows comments to be upvoted will be added.


Github API

The Github API allows for authentication of an account using oath:
https://developer.github.com/apps/building-integrations/setting-up-and-registering-oauth-apps/about-authorization-options-for-oauth-apps/

My initial thought is that the application will only be connecting to Github for 3 main reasons:

  1. Validate and connect 1:1 with a STEEM account.
  2. Allow oath token with that account for use during posting.
  3. Read pull request and issue data for the connected Github user.

When connecting with Github you can set the scope for your application (It is good to note that a user can deny specific access requests limiting that scope). Fortunately, all the information we need is public so we can pass an empty scope for read access to all public information. Since the initial idea is not to create pull requests or issues then there is no need for extra scope. We will just need to get authenticated with a token so that we know this is the correct user.

https://developer.github.com/apps/building-integrations/setting-up-and-registering-oauth-apps/about-scopes-for-oauth-apps/

This will be connected to the STEEM account once logged in and authenticated in a platform database. (There might be a way to pass the Github username once authenticated to the blockchain on the first post. Maybe this could be checked to ensure it is the correct user, not sure how this would work exactly.)

Once a user is authenticated they can then post to the platform. GitSteem will make an API call to Github api.github.com/{username} with the username to ensure that all pulled data is specific to that user. Then when a post is created the user will be allowed to select from data that is tied to their account.

STEEM API

The STEEM API will be used similar to other platforms using it. It will allow users to post and vote on material. (The platform might just need the posting key only to function allowing for a more secure account on login) Plus it will have an account page that shows the users data similar to Steemit.

Should this be based on UIA (User Issued Assets)?

These are controlled by the issuer and are designed to follow regulations. Probably not a good move for this platform and this idea. They are also able to be revoked by the issuer. They could be traded on a DEX for bitUSD and other items but still too much control by GitSteem. In my opinion is it better to stay with STEEM.
This video does a good job of explaining UIA if you want to explore it more.


USER FLOW

A simple voting/commenting user flow could be as follows:


  • The user logins with STEEM username and posting key.
  • The user is then prompted to authenticate with Github.
  • The user allows authentication and through this process provides GitSteem a token.
  • The user is then able to upvote and comment on current posts displayed on the platform.

A simple posting user flow could be as follows:


  • The user creates a pull request or issue on Github.
  • The user logs in at GitSteem and creates a post.
  • The user selects whether this is referencing a pull request (or issue).
  • GitSteem connects to Github to query for relevant pull requests or issues for that user.
  • The user is then able to add more details about the post and relevant pull request (or issue) information is added.
  • The user adds 2 additional categories after the standard categories referenced above are added.
  • The user completes the post.

YOUR TURN 💬

I know this isn't super detailed but it is an outline of (what seems to me) a plausible way of integrating Github with STEEM in a way to allow developers to reward each other with a more direct connection. Plus allowing us to ensure that the user claiming to have done the work on Github is that person. Keep in mind my experience with STEEM is just over a month old and there may be things I completely missed the boat on. Feel free to let me know! 😀

So here are my questions for the Steemit community devs:

  • Are there major holes in this idea that I am overlooking or minimizing?
  • Would this need to have an additional database for connecting the Github and STEEM accounts of a user (or any other purpose)?
  • Is using categories for determining what posts are shown and how they are shown on the platform problematic?
  • Any other comments, suggestions or concerns?
Sort:  

I like the idea for sure. Could issues and PRs be created in GitSteem directly and then duplicated over on GitHub via the API? Could synchronization there happen as well, so any updates to existing items are also reflected on Github? I think it would be much more useful if there was no double entry and everything could be done in GitSteem directly without having to first create PRs or issues in Github.

You should be able to use the APIs to replicate the data. Then again, with the data existing on the blockchain, why even post it on github? :)

I was kind of thinking the same thing. Maybe post the first few lines and then an awesome ASCII nag screen of sorts that says something like:

------------------------------------------------------
To view and contribute to this conversation, join
GitSteem. Get paid for your open source efforts.
------------------------------------------------------

If someone really wanted to make it happen, I wonder if even various aspects of the github data (diffs, etc) could be displayed natively in GitSteem.

Interesting idea, for sure.

Pipe dream could be to stop using github all together and launch a new blockchain where the git info was stored on-chain - VCS Coin go!

Yeah, I was thinking about that also. It's all just text files under the hood, right?

Between the two of you this could be built over the weekend!

I'll play the role of jr dev.

[insert easy button here]

Hah! It'd be a fun project, that's for sure. Not so sure about the idea of doing it in a weekend... but still :)

You can for both.
Pull request: https://developer.github.com/v3/pulls/#create-a-pull-request
Issue: https://developer.github.com/v3/issues/#create-an-issue

I believe you would need to update the scope of the oath to include public_repo that would allow read/write privileges for that user's public repos.

Very nice idea. I love creative people.

Great idea. Love the idea and intensive to contribute.

got my attention when you mentioned github + steem in the same sentence. github known to see available on public if you really did do the work as a dev.

Not sure I follow your comment completely. I think you are saying that all this information is already visible on github which is true. The difference is with authentication we are able to determine you are the user you say you are. Plus by allowing it to authenticate with your account the API calls increase dramatically.

GitSteem, what an idea!

Great idea! This would also allow people with less tech experience to work with experienced Steem developers -- I have seen some people post fantastic ideas about Steem related projects but then write a disclaimer "only an idea, I cannot code." So, I a totally in support of this, not just for Steemit contributers but also for freelancers who are working on their own Steem based projects. Cheers mate! I hope this project takes off! Resteemed

Congratulations @daynewright! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

Award for the total payout received

Click on any badge to view your own Board of Honnor on SteemitBoard.
For more information about SteemitBoard, click here

If you no longer want to receive notifications, reply to this comment with the word STOP

By upvoting this notification, you can help all Steemit users. Learn how here!

Great idea.

Thanks! Maybe we can get it built.

Wow, imagine creating a reputation CV + Useful projects + while you make money. Stop, my heart can only beat so fast.

Coin Marketplace

STEEM 0.19
TRX 0.15
JST 0.029
BTC 63490.29
ETH 2598.32
USDT 1.00
SBD 2.78