Cairo Roasting time - Tell us how to 10x Cairo #6521
Replies: 8 comments 1 reply
-
AI generated summary and insights from Alcueca tweet Cairo Development Experience ReportOverviewThis report summarizes the development experience of building with Cairo on Starknet, based on feedback from developers transitioning from Solidity and working on real projects. Learning CurvePositive Aspects
Initial Challenges
Development EnvironmentSetup
Common Pain PointsImport System
Type System
Debug Experience
Contract DevelopmentERC20 Implementation ExperienceEasier Aspects
Challenging Areas
Community Support
Recommendations for Improvement
ConclusionWhile Cairo offers a viable path for Starknet development, the developer experience has significant room for improvement. The learning curve is manageable for experienced Solidity developers, but tooling and documentation improvements would greatly enhance productivity. |
Beta Was this translation helpful? Give feedback.
-
Feedback from @enitrat Cairo Import System Pain Points:
The core issue is that Cairo's strict import requirements, combined with lack of tooling support, creates unnecessary friction in the development process - especially for newcomers who may not know which specific traits and types they need to import. |
Beta Was this translation helpful? Give feedback.
-
IDE:
Actual programming exp:
Really impressed with the progress so far. As I see the progress of competitors that allow to prove Rust or a whole Risc V architecture with decent performances I start to think that Cairo must really specialize as a smartcontract language, we have an opportunity to really provide something 10x better. Being 10x faster is not enough when everything is already fast. |
Beta Was this translation helpful? Give feedback.
-
Not as a Cairo contract developer, but as a Cairo language developer: Hi I am the author of WASM-Cairo. |
Beta Was this translation helpful? Give feedback.
-
Components are very cumbersome. For one, it takes way too many steps to import and use a component - importing it, correctly using the To illustrate the point, here's a basic ERC20 token generated by OZ's Cairo wizard: #[starknet::contract]
mod MyToken {
use openzeppelin::token::erc20::ERC20Component;
use openzeppelin::token::erc20::ERC20HooksEmptyImpl;
component!(path: ERC20Component, storage: erc20, event: ERC20Event);
#[abi(embed_v0)]
impl ERC20MixinImpl = ERC20Component::ERC20MixinImpl<ContractState>;
impl ERC20InternalImpl = ERC20Component::InternalImpl<ContractState>;
#[storage]
struct Storage {
#[substorage(v0)]
erc20: ERC20Component::Storage,
}
#[event]
#[derive(Drop, starknet::Event)]
enum Event {
#[flat]
ERC20Event: ERC20Component::Event,
}
#[constructor]
fn constructor(ref self: ContractState) {
self.erc20.initializer("MyToken", "MTK");
}
} If I didn't know where to copy-paste this from, I'd go crazy trying to figure out all the details. Another pain point with components is that it's impossible to overwrite single fn in the main contract. It's a common use case people ask about all the time (e.g. custom |
Beta Was this translation helpful? Give feedback.
-
Here are my top 5:
There are a few things that I love (and would like to see more easy-to-use features like this):
|
Beta Was this translation helpful? Give feedback.
-
Features merged in the corelib can be too long to appear in a release. For example, hex-print is merged since 2 months but is still not available :( |
Beta Was this translation helpful? Give feedback.
-
Adding on to Development Environment:
|
Beta Was this translation helpful? Give feedback.
-
It's time to Roast Cairo.
Give us suggestions and feedback on how to improve the developer experience of Cairo.
Beta Was this translation helpful? Give feedback.
All reactions