Radworks Grant Application
- Project Name: Element Package Repository
- Team Name: Cloudouble Pty Ltd
- Payment Address: 0x80A29410CdDCb7E1B6469042C1CDD04fec02fc9b
- Category: Radicle Adoption
Project Overview
Overview
The project that is the focus of this grant is the Element Package Repository - which will allow developers to publish and share their Element packages to the community.
Element is a general purpose web development framework - currently in stable beta release, designed from the ground up to be equally effective for traditional web apps, web3 dapps and local-first apps. It features the ability to extend its capabilities via simple URL-based package and component importing directly in the browser at runtime - hence the use-case for the Element Package Repository.
You can learn more about Element at https://elementhtml.dev, including benchmarks against existing frameworks, and the Roadmap.
The benefits to Radicle are twofold:
- the user base for Radicle and Element largely overlap, so prominent and permanent branding/sponsorship on the Repository will let new developers know about Radicle
- Element will encourage package publishers to utilize the Drips Network to collect funding for their package. This will help to ensure that Element is able to grow and thrive in the long term, and also to assist in ensuring that packages themselves are well-maintained by their authors. This will be the default way to gain a listing on the Repository, and thus every developer who thinks about listing a package, will at least consider using Drips to help fund it.
The above arrangements can be mutually beneficial to both Radicle and Element, as and the Element community grows, so too will the awareness of Radicle and usage of Drips.
Overview of Element Repository Features
A “package” in Element is a regular Javascript module in a specific format that is available from any URL - ideally via a IPFS CID-based link. It is loaded into the web application before Element launches and is used to set application-wide configuration, import schemas for data validation, define custom components, extend the core framework with custom helper functions, and more. Multiple packages can be loaded into an Element application and are layered over each over to create highly composable environments to jump-start applications.
The Repository will enable application developers to search for packages and view each package’s name, description, author link, support link, tags and mostly importantly a IPFS link to the package’s module to include in the application which will use the package. The use of IPFS links (only) in the Repository will allow developers to have confidence against package-hijacking due the intrinsic content-hashing of IPFS links.
At the other end of the process, developers will be able to publish their own built packages to the repository by any of the following methods:
- For packages that are potentially seeking open-source style support/funding: claim their project on Drips and add Element as dependency with a minimum 20% split to Element - this will be the default listing process
- For package authors who can not use cryptocurrencies: they can create a Collective on Open Collective with the package details including a link to the code and set Cloudouble as their Fiscal Host to activate their listing
- For packages that are not seeking their own funding or who will charge out-of-band in some way - aka “private” packages: publishing their package to IPFS and then sharing the IPFS link with the Repository via a ETH smart contract (similar to minting it as an NFT).
All three of these methods will provide an endpoint for a server-side automated process to pick up new listings, verify their code, and add them to the Repository. By monitoring these endpoints, inactive listings can be similarly garbage-collected.
For all methods the server-side process will (re-)upload the package to IPFS (probably via the NFTStorage API) to ensure permanent availability of the IPFS links. The issue of version control and a process for supporting it will have to be considered as part of the detailed planning process.
Team
Team members
- Name of team leader: David Pitman
- Names of team members: at this point it is just me
Contact
- Contact Name: David Pitman
- Contact Email: david.pitman@cloudouble.com
- Website:: https://elementhtml.dev/
Legal Structure
- Registered Address: Fortitude Valley QLD 4006 Australia
- Registered Legal Entity: Cloudouble Pty Ltd
Team’s experience
David has been a full-stack developer for 20 years. The Element framework has been in progress since 2020 in various forms, and in its current form and mission since early 2023. He has worked full-time without financial compensation on Element since mid-2023. If you want to know if he’s any good at his job, see the benchmarks for Element mentioned above.
In accordance with the before-mentioned Element Roadmap several grants are being currently applied for to assist with the completion of the Element ecosystem, but no others for the Package Repository. Once sufficient funding from grants comes in, other staff/contractors will be hired to assist in the timely completion of the various roadmap milestones, with David hoping to step back from the coding coalface a little and focus on co-ordination, overall direction and quality control. In the interests of getting things done quickly, it is not intended to open development to general community until a stable production-ready version of Element is released (target late 2024).
Team Code Repos
Team LinkedIn Profiles (if available)
- https://www.linkedin.com/in/drpitman/ (not particularly up-to-date)
Project Description
I am applying for this grant because I see a good fit between the long-term goals of both Radicle, Drips, and Element. I also see that specific sponsorship of the Package Repository is a perfect moment for the future Element community to become aware of both Radicle and Drips.
Otherwise, while 2023 was dedicated to creating a working beta release of Element, 2024 will be for creating the complete, production-ready ecosystem ready for growth in 2025 and beyond. Thus far, the project has had no external funding and the on-ramp is about used up. Other grant applications are currently in-process for other parts of the roadmap (namely, the initial stages of the Documentation and Dev Tools milestones).
Deliverables
- Total Estimated Duration: 10 weeks
- Full-time equivalent (FTE): 50 days
- Total Costs: 25,000 USD
Architecture Design And Research
- Estimated Duration: 2 weeks
- FTE: 10 days
- Costs: 5,000 USD
Number | Deliverable | Specification |
---|---|---|
1. | Detailed Process Schematic | A detailed and thoroughly researched schematic outline of how the various processes of the Repository will work together. Including also which services will be used to provide the required functionality. |
2. | API Specification | A detailed specification of the server-side REST API and scheduled functions that will be used to provide the required functionality. |
Smart Contract
- Estimated Duration: 2 weeks
- FTE: 10 days
- Costs: 5,000 USD
Number | Deliverable | Specification |
---|---|---|
1. | ETH Smart Contract | Development and deployment of smart contract for the “private” listings feature |
Prototype API
- Estimated Duration: 2 weeks
- FTE: 10 days
- Costs: 5,000 USD
Number | Deliverable | Specification |
---|---|---|
1. | MVP API | Prototype working build of the API built on Deno for quick iteration and convenience. |
Front-end UI
- Estimated Duration: 2 weeks
- FTE: 10 days
- Costs: 5,000 USD
Number | Deliverable | Specification |
---|---|---|
1. | Front-end UI | Make UI available from main Element website |
MVP Launch
- Estimated Duration: 2 weeks
- FTE: 10 days
- Costs: 5,000 USD
Number | Deliverable | Specification |
---|---|---|
1. | Testing | End to end testing of required MVP features |
2. | MVP Launch | MVP product launch |
3. | MVP Review | MVP review and compilation of improvements, changes and additional features required for a completed, mature product to be developed in the future second stage of Repository development |
Future Plans
The concept of package and component importing via URL is deeply baked into Element, and it is anticipated the initial developer outreach will focus not only on the benefits, but also on the opportunities it present to early adopters in the future Element ecosystem to create key components and packages that will become widely used. Thus, the Package Repository will be a key part of the Element ecosystem.
By taking a listing / platform fee to be applied to Element’s general funding pool, over it time it is hoped that the Repository itself will provide sufficient funding to allow Element to remain continually updated and at the leading edge of what is possible.
This application covers only the first half of the Package Repository’s complete development. Once this MVP product has been achieved and deployed, further funding requirements will be reviewed and if necessary will be sought from the best matched source(s) at that time.
For example, this initial MVP stage will be powered by the an API built on Deno with repository metadata stored on Deno KV. This is not ideal as it requires a centralized hosting service. The second stage of this project will have the primary goal to re-deploy the API onto a decentralized service - the current leading candidate being as an autonomous and self-funding SNS on Internet Computer. If this is chosen, one possible funding source for the second stage will be the Dfinity Developer Grants program.
Additional Information
How did you hear about the Grants Program? Originally by Google Searching, but that was a while back now - have been silently following Radicle in general for a few months now