lukedegruchy
The former CRTC commissioner as well as the senate confirmed that user generated content is within the scope of the bill:
https://www.michaelgeist.ca/2022/11/oops-he-did-again-crtc-c...
It is traditional broadcasters that lobbied for this bill.
The senate heard months of testimony from digital first creators who believe this bill will negatively impact them. That's why the added the UGC amendment that the government rejected.
It's all the exemptions and correspondence between the CBC and cabinet, the treasury board, and other arms of the government that is absolutely not made public in any way whatsoever:
https://frpc.net/wp-content/uploads/2023/04/2023-04-26-Hidde...
Here is the best summary I've read so far:
https://allenmendelsohn.com/2023/04/welcome-to-the-online-st...
Digital first creators, Canadian YouTubers and TikTokers (ex Linus Tech Tips), stand to lose the most from this. Their livelihoods are under threat.
This is because of a clause in the bill that seeks to regulate user generated content. Months of senate testimony concluding that user generated content is in scope of the bill. The senate introduced an amendment to exclude user generated content, but the government rejected the amendment, while insisting this will not affect user generated content.
The heritage minister claimed in an interview that the only opposition to this bill came from YouTube. This is despite months of testimony from digital first creators expressing grave concerns about this bill.
Other facts to keep in mind about C-11:
1. The heritage minister gets to define Canadian content only after the bill has passed 2. Cabinet can overrule any decisions made by the CRTC, the Canadian equivalent of the FCC.
- problem of null: Ceylon uses union types to union between the class in question (ex String) and Null, which is a type separate from Object. Therefore, the typesystem enforces this. And yes, Ceylon has the exists operator, which means you can do if (exists stringOrNull) to instanceof/cast at the same time.
- elegant APIs - With regard to file I/O: https://modules.ceylon-lang.org/modules/ceylon.io/1.1.0/doc
- language spec - Ceylon's is much more detailed: http://ceylon-lang.org/documentation/1.1/spec/html_single/
http://ceylon-lang.org/blog/2015/06/03/generic-function-refs... http://ceylon-lang.org/blog/2015/06/12/more-type-functions/
In any case, the concept of null as a primitive is fundamentally broken. Due to Java's backward compatibility requirements, it's too late to resolve this in that language. However, newer languages don't need to make this mistake. However, there are "interoperability" requirements for new languages interfaces with legacy runtimes that tempt language designers to build escape hatches. These escape hatches exist in Swift, Kotlin, Rust, etc even though they're not recommended and their usage presents edge cases.
Ceylon and Haskell seem to be the only two languages to get this completely right. Ceylon expresses optionality as the union between the present value type and null, which is an actual type separate from Object. An optional String is therefore a String|Null, or a String? Haskell accomplishes this with the Maybe type.
All this to say that null should not be a primitive but should be banished to its own corner of the type system with clear compile-time semantics for dealing with the absence of values.
Programming with type functions in Ceylon
I can't say I've followed Kotlin all that closely, but it struck me as a less dense language. Ceylon is a language I've followed closely, and I find it very consistent.
Ceylon Tuple and Entry Destructuring
What neither Scala nor those languages have is support for value types (structs) at the JVM level. Generics over primitives and value types is a natural consequence of the introduction of value types to the JVM.