OneNoteToWiki: MVP Release and Future Enhancements
We are excited to announce the release of OneNoteToWiki as a Minimum Viable Product (MVP). As with any MVP, there are a few features and functionalities that are currently limited, and we are actively working on enhancing and expanding these capabilities. Our goal is to continually improve the app based on user feedback and our development roadmap, delivering a more comprehensive and robust tool for synchronizing OneNote content with Atlassian Confluence.
Current Limitations of Our App
Our app currently faces limitations due to the Microsoft Graph API, specifically its rate limits. Understanding these limits is essential for users to optimize their experience with our app.
Microsoft Graph API Rate Limits
The rate limits for the Microsoft Graph API are as follows:
Limit Type | Limit per App per User (Delegated Context) | Limit per App (App-Only Context) |
---|---|---|
Requests Rate | 120 requests per 1 minute and 400 per 1 hour | 240 requests per 1 minute and 800 per 1 hour |
With batching, it is theoretically possible to achieve up to 8000 requests per hour (400 batches of 20 requests each). However, it’s important to note that requests against notebooks and sections cannot be batched. Additionally, image uploads are currently not batched.
Another significant limitation is that the Microsoft Graph API does not return a Retry-After header when the rate limits are exceeded. If you exceed the minute limit, your requests are throttled for approximately 15 minutes. If you exceed the hourly limit, you will be throttled until the end of the hour.
Due to these limitations, our current recommendation is to synchronize smaller notebooks first and handle larger ones individually with some patience. This approach helps manage the rate limits effectively and ensures a smoother synchronization process.
Future Improvements
We are actively working on improving these rate limits by offering our customers the option to authenticate with Microsoft in the “app” context. This approach effectively doubles the number of possible requests, allowing for 240 requests per minute and 800 requests per hour.
Furthermore, we are developing batch requests for image uploads. This will significantly enhance the efficiency of synchronizing larger notebooks with many embedded images, reducing the overall number of requests and mitigating the impact of the rate limits.
Queuing System Enhancements
We have designed the app so that tasks that are not completed due to rate limits are rescheduled using a relatively sophisticated queuing system. However, this system still has one or two bugs, which occasionally cause errors when handling very large notebooks. We are actively working on fixing these issues and aim to have them resolved within the next two weeks.
InkML Support
Another limitation of our app is that it currently does not support InkML (Ink Markup Language). We are developing a custom parser for InkML, which will soon be released, allowing us to support nearly all OneNote content. This will enable users to synchronize handwritten notes and drawings seamlessly, further enhancing the functionality of our app.
Stay tuned for these enhancements, which will provide a more robust and efficient synchronization experience.