Development Update for September 2019
Tom Zarebczan • Oct 11 2019
Welcome to the September 2019 LBRY Development update! In this post we’ll show you what we’ve been up to since our last update in August. Sit tight, there’s been lots of progress and releases, including updates from the Apps (Desktop and Mobile), SDK, and blockchain teams!
To read previous updates, please visit our Development and Community Update archive.
If you want to see a condensed view of what we've completed recently and what’s planned for LBRY, check out our Roadmap.
Let’s start with some GitHub stats across all our repos (some of which are internal only to LBRY) since our last update about 31 days ago. 38 repos were updated. 550 issues were created, 160 were closed. 29 PRs were merged. 30 GitHub users outside of LBRY made code contributions, including some early ones for Hacktoberfest:
AlessandroSpallina, amaljose02, Bharat123rox, Borewit, ceoger, Coolguy3289, dangarthwaite, danielcaldas, eggplantbren, felhe, hugovk, ICTman1076, JakeVdub, jamesgeorge007, kodxana, ksami, mirgee, OrginalS, osilkin98, pankajpatel, Parikshit-Hooda, ProfessorDey, pranabs1ngh, priyapande, rishav142k, StrikerRUS, Taminoful, utkarshiam, ykris45, zxawry
Thanks to everyone who took time out of their busy days to help LBRY out!
In This Report
- Hacktoberfest at LBRY!
- Desktop App
- LBRY for Android
- YouTube Sync
- 2019 Roadmap Progress
Hacktoberfest at LBRY!
If you are a developer who is interested in LBRY, there's never been a better time to start contributing! It's October, which means Digital Ocean is running their Hacktoberfest promotion of open source projects, and LBRY is all in! As with all contributions to LBRY, we offer generous appreciation in LBC on top of this month's special prizes, including t-shirts and stickers. There’s also a developer program to get you started with some LBRY Credits.
Check out our blog post for all the details including live help sessions, or dive right in on GitHub and check out Hacktoberfest tagged issues on popular repositories such as:
If you need help getting started with any of the repos, make sure to check out the READMEs in each or these developer setup videos. There’s also a glossary if you need help getting up to speed on Blockchain/LBRY lingo.
Galileo is a huge release in terms of new features, many of them geared towards YouTube Sync partners and power users, but it also includes a new sign-in experience and our first release of wallet syncing on Desktop.
Other new features in Galileo and since our last update include:
- A Channels page that lists a user’s created channels, including any that are eligible to be transferred as from YouTube sync
- Subscriber counts on Channel pages and view counts on content for all users.
- More detailed balance information on the Wallet page - includes total locked tips and LBC staked in publishes/channels/supports.
- Pagination support on Publishes/Downloads/Transaction history - helps improve power user app performance.
- Search content within a channel on the channel page.
- Saving volume settings between videos.
- Saving encryption passwords - no typing your password on each startup.
- Enforincg max character count on comments.
- Sign out button that actually signs you out - no more clearing tokens manually!
- Better internationalization support, more languages can be added easily now.
Since our last named release, we’ve squashed a few bugs, including:
- Autoplay-next not working.
- Ensuring views are counted for rewards purposes.
- Not being able to delete published content that wasn’t downloaded.
- Showing duration for audio files.
- Wallet connectivity issues with upgraded SDK.
YouTube Sync Claiming and Transfers
Galileo enables a long-awaited and necessary feature to close the loop in our YouTube Sync Partner Program. This is the claiming and transfer process allowing creators to take full control of their channels and content. LBRY will only retain access (using a signing key) to publish new items into the channel and can no longer edit any content or the channel metadata itself. Learn more about how this process works on our updated YouTube Sync FAQ.
YouTubers can initiate this while signing into LBRY on Desktop (web support coming soon) or accessing their Channels page. This transfer process also supports those who have multiple channels - they are all done with a single click. Once a user clicks Claim Channel, their channel identity is imported into their wallet which allows it to be used immediately to comment/publish new content and their content transfer is queued up.
The transfer process kicks off automatically on our end and progress is shown to the user. The Publishes section of the app will start filling up with their claims as they are updated from our wallet to the user's. Once complete, the pending state disappears and the channel will be shown as if it were created by the user themself. Any tips that the creator received will be sent to their channel as a lump sum that can be claimed or kept to support their discovery on the platform.
The sign in process that we previewed for LBRY.tv in our last update is now available in the Desktop app when users try to claim rewards or can also be accessed from the Account menu (between balance and settings in the top right of the app). The flow includes an automatic 1 LBC reward for a majority of users and a prompt to create a channel during first run (using the LBC from the reward). If a user is part of the YouTube Sync program, they’ll be presented with an option to claim/transfer their channel instead of creating a new one. Some users will also now be automatically eligible for rewards while others will be presented with the extra verification step (SMS/credit card/manual chat) - this is completely optional and can be skipped.
Wallet syncing is now available for new Desktop users (and with a 0 balance) as part of the sign in process. This includes brand new users and those who have synced accounts on LBRY Android. If you used a password on Android, you’ll be prompted for it after verifying your email. These wallets will now stay in sync as long as you stay signed into the app - if you sign out, you’ll need to clear out the wallet to enable sync again. Users can also sign in on multiple PCs once they establish a synced account.
We’ll be expanding wallet syncing support to existing users - first those that have not synced on other devices but have an existing wallet, and finally for all users who have wallets on multiple devices. Want more details? Learn more on our new Account and Wallet Syncing FAQ.
The Wallet page received a makeover to include additional information about where your LBC may be locked. Previously, we would only show your available balance, which didn’t include any tips received/supports sent, or LBC used as a deposit for publishing and channel creation. We now show how much LBC is bound and locked in tips on the top right, and then the staked amounts for publishes and supports below it. The tips can be redeemed using the unlock icon in the transactions area - this is currently done on a tip by tip basis, but we plan to improve that in a future release. Staked supports can also be removed by using the trash can icon.
Desktop Next Steps
During the next few weeks, we’ll be focusing on enhancing Desktop code to better support LBRY.tv and ensuring wallet syncing features are working for more users across all platforms (includes a change to move all synced data, including subscriptions and tags, to the wallet). There’s already work in progress to support publishing on LBRY.tv, including upload progress, and it should be ready for initial testing in a few days.
We’ll also continue cleaning up the Wallet overview page that shows detailed balances as well as the Send/Receives pages to make it easier to exit out of them. We’ll continue to work with the community on adding more languages, which should now be a breeze with the latest release. Finally, we’ll begin tracking channel and content publishing so that we can reward creators for things like subscriber counts and publishing, and notify them of incoming tips / having their content trending.
The main features and bug fixes include:
- Wallet ID support - allows multiple wallets to be loaded with an SDK on startup. LBRY.tv will take advantage of this to support users from other platforms.
- Improved wallet server connectivity on unstable connections / reconnections.
- Trending window change to 6 hours from 24 (will be live mid October). This will allow for content to change more rapidly on the trending homepage.
- Improved initial sync time for wallet servers by downloading snapshots.
- Add options to set wallet server description, payment address and daily fee - this will allow us to support community run wallet servers.
- Support for YouTube sync transfers by allowing imported channel certificates to work with other accounts in the wallet.
- Address list API now includes public keys so the YouTube sync process can continue publishing after transferring a channel.
- Automatic retrying of failed resolve requests to improve overall experience.
- Potentially fix some edge cases that cause memory leaks
A main portion of ongoing work has been to improve support of multi-account scenarios within a wallet, which will allow us to expand wallet syncing to all our users, even those that have multiple existing installations. This also includes wallet wide encryption/decryption methods so that we can sync up accounts without having to worry about tracking different passwords.
We also think we tracked down the source of some memory leaks experienced by power users hosting lots of content, and we’ll continue to monitor in the next few weeks to see if they are resolved. We’ve also tackled an issue preventing users on some mobile networks from being able to access content. This should be released on Android mid-October and improve overall reliability.
SDK Next Steps
After clearing out the cross-account syncing issues, the team will focus on a few new items:
- Bridging the gap for purchased content on LBRY. Today, there’s no metadata saved with these purchase transactions and users can’t tell which pieces of content the purchases were for without digging into address level information. We’ll begin saving this in a special transaction so it can be retrieved as part of the transaction history.
- Improving performance wallet related API calls like transaction list / claim list. This is required for power users / large content creators to have a smooth app experience.
- Supporting the latest Blockchain upgrade changes, including wallet server changes that may be needed and new metadata for support transactions.
- Handling of errors in the SDK through the use of error codes.
- Moving DMCA blocking to wallet servers instead of LBRY’s API. This will allow wallet server operators to appropriate block content in their jurisdiction.
Since our last update, the blockchain team released our next big upgrade which includes three hard forking changes and important features:
- Hashing all claims, including non-winning ones, in the block headers
- Metadata for support type transactions
- SegWit support. This will allow Lightning Network for content and data payments down the road
Support metadata will enable us to expand the support/tipping feature of LBRY, which currently only allows simple LBC transactions to occur, to include additional metadata that can be used for signing the supports to prove channel ownership and enabling use cases like commenting, rating, and subscriptions on-chain. Signing of supports will finally give us the ability to link a channel back to a tip transaction, so publishers can see and verify who sent LBC (or even a support). On-chain subscriptions also help further decentralize data you can only find on our API currently, and enable a Patreon-like system where creators can release content that’s accessible only by their supporters or at various support/tip levels.
You can check out our blog post for detailed information about this release. LBRY has already notified everyone on the upgrade mailing list and will continue to reach out to mining pools, exchanges, and other service operators to ensure they upgrade in time.
On the backend, we’ve successfully migrated our accounts-based model to a wallet-ID one, which will allow for a better cross platform experience for our users. This included converting all accounts to separate wallets, importing any channels that may have been created, and loading of user wallets on startup. The wallet based model will also allow us to scale LBRY.tv more efficiently as we can choose what wallets are loaded on which SDK instance supporting the front end. We are in the process of finishing up wallet syncing, but we’ve run into a snag with preference syncing that will require some SDK changes. This should all be cleaned up in a few days, and we’ll be ready for additional testing of the sign in and syncing process.
Eager to give lbry.tv a try now? Head over to https://beta.lbry.tv and sign up for an account.
Publishing on the Web
Publishing from the web is a bit trickier since the lbry.tv server will need to act as an intermediary between the user and the SDK running - so it needs to be able to handle/intercept the file transfer process. There were also some changes required on spee.ch in order to support thumbnail uploads. We currently have a prototype working and it should be ready for mainstream use in mid October. Initially, there will be a file size limit of 500mb when using LBRY.tv to upload. This will be adjusted after we monitor usage and performance.
We decided to delay the soft launch until we’ve migrated over to the wallet ID based syncing solution, which includes both wallets and account preferences (subscriptions and tags). Once this is ready, we’ll first start with some community testing and move onto our LBRY.tv mailing list which includes anyone that signed up for it over the past few months. If all goes well, LBRY.tv should be ready for a full launch in a few weeks.
Want to be the first to know when it’s fully operational? Sign up for the mailing list at lbry.tv.
LBRY for Android
Since our last update, our team has released 0.9.0 - Butterfly, the most feature-rich Android version to date! We also followed up with a few patches, bringing us up to version 0.9.3.
Main features in Butterfly include:
- A new channels page, including the ability to create/edit a channel with details like thumbnail, cover, title, description, website, tags, and LBC deposit.
- Allow changing of suggested thumbnail during publishing.
- Ability to publish any type of file from your device. Previously this was limited to videos.
- Synchronizing of account preferences, now including tags!
- Automatic claiming of daily rewards.
- Pricing content in USD during publish
- Latest LBRY SDK for improved connectivity and performance.
We’ve also fixed up a few bugs around wallet syncing and subscription notifications. You should now see a notification of new content when you start up the application.
Android Next Steps
After fixing the subscription notification bug, we realized the experience is still sub par since you only get these on startup. We’re currently working on a solution where we can use push notifications to alert you to new content published on the channels you follow. Once this is complete, we’ll continue to focus on getting the Android app up to par with the Desktop version by adding features like content sharing, adding tip buttons on channel pages, internationalization, and unlocking of tips. We’ve recently labeled the issues where a feature doesn’t match up to Desktop with the app-parity tag.
Before the launch of LBRY Galileo, we worked with about 20 content creators to test out the new claiming and transfer process in a more manual fashion to ensure a smooth roll out. During this process, we gathered and implemented feedback from our testers on the app side and fixed a few bugs that arose on our sync side. To date, over 200 content creators have claimed their channels and are now experiencing true content control and freedom!
Today, the servers are running in an automated fashion with no intervention required - so once a content creators initiates a transfer, they should see the progress updating in a matter of minutes. To improve the speed of the entire process, we’ll be adding parallel processing so the sync servers don’t get tied up during large transfers. We’re also continuing to look into ways to improve the speed at which we re-post content from YouTube. In addition to being able to start the YouTube sync process from LBRY.com/youtube, we’re exploring adding it directly in the app, where we start the channel creation and publish process directly into the creator’s wallet.
We made a change a few weeks ago to make sure the daily watch reward stays active on the rewards page and gives you more information on when you can claim it next. If you haven’t claimed it in a while, we’ll tell you that too!
Content Creator Rewards
We’ll be rolling out tiered subscriber and publish rewards to content creators that use the LBRY app and those in the YouTube sync program. For example, this means if you get X subscribers, you’ll be eligible for a reward of Y LBC (specific amounts are still being worked out). For publishing, this will work in a similar way by counting the number of publishes made in the LBRY app.
For the YouTube program, we’ll also be changing the yearly reward to a monthly one, which includes any prorated amounts since you were last eligible to claim the reward. Be on the lookout in your email box when this is ready to be claimed!
We’ve successfully accomplished a number of roadmap items fully, while others are partially complete and ongoing efforts. See our previous development report on updates for completed ones.
Partially completed/still in progress are:
- Commenting - moderation features are in progress
- Creator Features - granular account balances and YouTube transfers delivered in Galileo
- Creator Partnerships - no update since last month - in progress and will be announced later this year
- LBRY on the Web - full release set to go live this month
- Multi-Device Experience - wallet syncing enabled in Galileo
- Internationalization - improvements added in Galileo, new languages to be added soon
- Protocol Performance - No updates, but we have a patch coming soon to improve reliability on Mobile
Limited Reward Code!
We’ve got a special bonus for readers of this update, enjoy some LBC via this code (while supplies last!):
Want to Develop on the LBRY ecosystem?
All of our code is open source and available on GitHub. Are you a developer and want to find out more? Check out our contributing guide and our LBRY App specific contributing document. Make sure you have turned on the Developer option in your email preferences (see app overview page), or sign up at lbry.tech. We also have a LBRY Discourse Forum where developers can interact with the team and ask questions across all our different projects.
If you aren’t part of our Discord community yet, join us anytime and say hello!
Thanks for supporting LBRY - stay tuned for more news and updates! And if you haven’t downloaded the LBRY app yet, what are you waiting for?