Odilia is a new screen reader for the Linux desktop. It’s written in Rust, for maximum performance and stability.
Odilia screen reader
最新内容
- 1 day 9 hours ago
- 2 weeks 2 days ago
- 3 weeks 1 day ago
- 3 weeks 3 days ago
- 4 weeks 2 days ago
- 1 month 1 week ago
- 1 month 1 week ago
- 1 month 1 week ago
- 1 month 1 week ago
- 1 month 1 week ago
最新评论
- nb 4 months ago
- sfes 4 months 3 weeks ago
- 好强大,谢谢推荐! 6 months 3 weeks ago
- 建议使用Ventoy 6 months 3 weeks ago
- Debian 12不再区分自由固件和非自由固件版本 7 months 1 week ago
- 用户登录自动运行软件的方法 7 months 1 week ago
- 经沟通,这应该是因为安装程序白屏… 7 months 3 weeks ago
- It works for me. I don't… 7 months 3 weeks ago
- 尝试ubuntu mate 7 months 3 weeks ago
- 1 8 months ago
评论7
我问过他们,为什么不用Go之类的语言,Rust太难学了
两个月前我进了他们的discord群(他们在matrix也有群而且互通),问他们为什么不用Go之类的较容易的语言,他们说Go适合写服务器和网络工具,并且说“你可以去开发一个Go语言版的Linux读屏,这样我们的选择更多”。我不确定以我的能力能不能自己做一个Linux读屏,或者应该学好Rust加入他们的开发?
在完成一个软件过程遇到的各种困难中…
在完成一个软件过程遇到的各种困难中,语言语法算是最低级别的了。虽然很多人都说Rust难学,但就我个人初学了几章的情况来看并无特别之处。对于稍有经验的程序员来说,使用什么语言不应该是一个大问题。就好比我们写文章,究竟是拿一支铅笔好,还是一个圆珠笔好,还是一支钢笔好呢?虽然会有点小不同,但不是重点。至于为什么选择Rust而不是Go,当然是有原因的,这种原因你分别深入学习一段时间后才会有体会,别人罗列一堆你是记不住也不深刻的。
你不要自己写读屏,先向别人学习,有能力的话提交PR,大部分人连提交PR的能力都没有,更别说自己写。
语言既重要也不重要
虽然编程语言只是一个工具,重要的是算法实现等核心问题,但是如果一种语言的门槛较高,会影响到合作。比如有人想参与,却不懂这种语言,可能就只能作罢。
打个比方,用你的写文章来举例,也许不是用什么笔来写的区别,而是写中小学作文和大学毕业论文的区别。对于复杂的项目,可能就是写一本书的难度。
他们做一个原型似乎都也了大约一年的时间,在现有资料有限的情况下摸着石头过河,我想如果我来做,不知多久才能做出这样一个原型:能获取多数软件的文字和控件类型,焦点可视化,用方向键和组合键操作(而不是只能按tab键移动焦点,因为效率太低),选择系统语音,读出并显示在某个悬浮窗口上。
至少到目前为止,Odilia还不能做到以上全部,软件的报错信息还要开发者才能看懂。不过在我跟他们交流时,他们已经准备做一个插件系统,能用任何语言开发插件,只要遵守一套通信协议(可能是IPC之类的技术)。
还有一点,你学了几章教程是不够的,建议写几个项目练手再评价
Rust对于新手难的地方主要是,如果基础不够牢,大多数时候都要跟编译器过不去,不过用LSP应该能提早发现绝大多数问题,确保程序能顺利通过编译。
许多人说他们学了Rust却只能开发小工具等玩具项目。出现这种情况有两种可能,一是这门语言的特性或生态还不够成熟,二是这门语言太难,只有掌握到一定程度的人才能写出成熟度足够的软件。
目前有很多用Rust开发的新项目,从系统工具到服务器软件,说明Rust的成熟度和生态都不成问题,那么问题就是Rust的高门槛导致开发者不容易(在同样的时间内)写出成熟软件。当然如果开发者本身已经是牛人,对他们来说换什么语言都无所谓,我见过某翻墙软件更新大版本从Go换成了Rust,我也跟这位牛人开发者讨论过Rust比Go难学的问题,他的回答是只要开发者跳出其他语言的条条框框,老实跟着Rust的开发规范走,Rust不会难到哪里去。
吐个槽:为什么开源软件的无障碍往往不如商业软件
前段时间我试用了一段时间的Chrome OS,用的是brunch,发现自带的读屏ChromeVox很好用,还能安装Android app,会调用TalkBack,效果不输Win11的WSA。Chrome OS还能运行Linux容器,可以全面替代WSL。ChromeVox的语音有Chrome OS、Android Google TTS和eSpeak三种,音质是Chrome OS>Android>eSpeak。Chrome OS有粤语语音,但没有中文普通话。
从这一点可以看出,要想获得良好的无障碍支持,很可能只能选择闭源的商业软件。因为大公司开发的商业软件用户非常多,包括不少视障用户,往往经过了充分的无障碍测试。但是对于社区开发的开源软件,由于开发的门槛,即使任何人都可以查看并修改源代码,开发者普遍不重视无障碍测试,加上视障用户少,导致那些社区开发的开源软件(区别于大公司的开源软件,如vscode)的无障碍做得不理想,甚至盲人完全无法使用。
具体到TTS引擎的音质也一样,开源的确实远比不上商业的,无论商业TTS是免费还是收费。
吐个槽:为什么很多Linux的图形软件的无障碍做得不好
上面地址打错了,是 https://github.com/sebanc/brunch
Linux的图形软件主要有Qt和GTK两大类,以及调用GTK的wxWidgets,其他的还有SDL等。其中Qt是在各大平台上自绘控件,提供一致的外观。由于这个原因,Qt在各大平台的无障碍默认很烂,除非针对性地做无障碍优化(达到这个要求的软件,我只知道VirtualBox)。而GTK以及使用native GUI的wxWidgets,默认的无障碍就不错,大多数情况不需要特别优化。
最近几年流行的electron,由于使用Web技术,它的无障碍就跟Web网页一样。至于flutter似乎不太好,我没有进行专门的测试,它似乎跟Qt一样也是自绘控件。
自由软件世界里没什么好吐槽的,可以不用,也可以自己改…
自由软件世界里没什么好吐槽的,可以不用,也可以自己改。存在即合理。随着时间的推移,技术自然会发生优胜劣汰。你有想法的话,尽管去做。