WineHQ

Developers: Difference between revisions

(I feel that the submitting your work thought needs to be brought out a level; I always look for it and miss it buried in a bullet at the bottom of the working with the code section.)
 
(30 intermediate revisions by 5 users not shown)
Line 3: Line 3:
== Getting Started ==
== Getting Started ==
=== References and FAQs ===
=== References and FAQs ===
*The DeveloperFaq, ["Developers-Hints"], and HackingTips are quick reads and a good place to begin.
*The [[Developer FAQ]], and [[Developer Hints]] are quick reads and a good place to begin.
*There is also general wiki page with some ideas about HelpingWine.
*The [[Wine Developer's Guide]] is a very-comprehensive guide and the ultimate reference for working on Wine.
*While not totally complete and up-to-date, the [http://www.winehq.org/docs/winedev-guide/index Developers Guide] is a very-comprehensive guide and the ultimate reference for working on Wine.
*Also, all developers should be careful not to violate the [[Clean Room Guidelines]] (also see relevant sections of the [[Developer FAQ]]). Submitting patches based on disassembled Microsoft code or dumped implementation details is simply '''not acceptable'''.
*Also, all developers should be careful not to violate the CleanRoomGuidelines (also see relevant sections of the DeveloperFAQ). Submitting patches based on disassembled Microsoft code or dumped implementation details is simply '''not acceptable'''.


=== Working with Other Developers ===
=== Working with Other Developers ===
Line 12: Line 11:
*Discussions primarily take place on Wine's [http://www.winehq.org/forums mailing lists]. The [http://www.winehq.org/mailman/listinfo/wine-devel developers' list] in particular is the place to discuss changes to the software (be sure to subscribe before emailing a list, or else your mail will probably be filtered out as spam).
*Discussions primarily take place on Wine's [http://www.winehq.org/forums mailing lists]. The [http://www.winehq.org/mailman/listinfo/wine-devel developers' list] in particular is the place to discuss changes to the software (be sure to subscribe before emailing a list, or else your mail will probably be filtered out as spam).
*There are a couple of [http://www.winehq.org/irc IRC] channels, although depending on timing and urgency, you may not always get a response.
*There are a couple of [http://www.winehq.org/irc IRC] channels, although depending on timing and urgency, you may not always get a response.
*You can see what some of the other contributors are working on by reading the WhosWho or ["Acknowledgements"]. Some contributors also have [:CategoryHomepage:personal pages] on the wiki.
*You can see what some of the other contributors are working on by reading the [[Who's Who]] or [[Acknowledgements]]. Some contributors also have [[:Category:Homepage|personal pages]] on the wiki.
*The Wine project has been overseen by AlexandreJulliard for many years now, and as a result, a Wine hacker's informal reputation for writing quality code is known eponymously as a JulliardRank. Although earning and maintaining this good reputation is key to becoming a successful contributor, the community tries to be helpful and does not expect anyone to be perfect, so don't feel discouraged :-)
*The Wine project has been overseen by Alexandre Julliard for many years now, and as a result, a Wine hacker's informal reputation for writing quality code is known eponymously as a Julliard Rank. Although earning and maintaining this good reputation is key to becoming a successful contributor, the community tries to be helpful and does not expect anyone to be perfect, so don't feel discouraged :-)
*If you're interested in possibly meeting other programmers in person, WineConf is an annual, offline meeting for Wine developers.
*If you're interested in possibly meeting other programmers in person, WineConf is an annual, offline meeting for Wine developers.
*If you are a student with an interesting feature or solution to a problem, you might consider applying to work on Wine as part of Google's SummerOfCode too.
*If you are a student with an interesting feature or solution to a problem, you might consider applying to work on Wine as part of Google's Summer Of Code too.


=== Working with the Code ===
=== Working with the Code ===
*Wine currently uses git to manage all source code, in order to grab your own copy of the code, look at GitWine. There are also some hints on using GitBranches to manage your work.
*Wine currently uses [https://gitlab.winehq.org Gitlab] to manage all source code, in order to grab your own copy of the code, look at the [[Git Wine Tutorial]]. There are also some hints on using [[Git Branches]] to manage your work.
*There is also a short page about browsing the SourceCode online and downloading code for other portions of the project.
*There is also a short page about browsing the [[Source Code]] online and downloading code for other portions of the project.
*When you're ready to share some of your changes with everyone, be sure to follow the guidelines for SubmittingPatches.


=== Building from Source ===
=== Building from Source ===
Besides a quick entry in the main ["FAQ"], you probably want to see the page on BuildingWine. You can also look in CategoryDistributions to see if your distro has its own page. If so, there might be specifics about the dependencies and build process for your system.
You probably want to see the page on [[Building Wine]] or [[MacOSX/Building|Building on MacOSX]]. You can also look in [[:Category:Distributions]] to see if your distro has its own page. If so, there might be specifics about the dependencies and build process for your system.
 
=== Submitting your work ===
When you're ready to share your changes with everyone, be sure to follow the guidelines for [[Submitting Patches]].
 


== Other Aspects ==
== Other Aspects ==
There are other aspects of the project besides the main program itself, and these can also sometimes use a programmer's touch.
There are other aspects of the project besides the main program itself, and these can also sometimes use a programmer's touch.
*For info specifically on testing and bug-hunting, try visiting DebuggingHints and the ["Bugs"] page, especially the section "for developers."
*For info specifically on testing and bug-hunting, try visiting [[Debugging Hints]] and the [[Bugs]] page, especially the section "for developers."
*Things such as the website and documentation also have moving parts besides content. For more details, see the pages for Designers and Writers.
*If you've written a patch and want to test it more before submission, or maybe just display it in action for others to comment, consider using the WineHQ [[Build Server]].
*There are some (currently out-of-date) tips for those interested in ["Packaging"] Wine for different distros and platforms.
*Things such as the website and documentation also have moving parts besides content. For more details, see the pages for [[Designers]] and [[Writers]].
*Interested in porting the source code of your Windows-native application to Unix? Consider looking into ["Winelib"].
*There are some tips for those interested in [[Packaging]] Wine for different distros and platforms.
*If you currently contribute to an upstream project that Wine uses, you may be able to help with features needed FromOtherProjects.
*Interested in porting the source code of your Windows-native application to Unix? Consider looking into [https://www.winehq.org/docs/winelib-guide/index Winelib].


== Tasks and To-Dos ==
*The TodoList is a top-level list of things that need to be done for the Wine project. This is a good first place to look if you're not sure what could use work.
*To see what major features or improvements would be necessary for a new stable release of Wine, see the WineReleaseCriteria.
*IntegrationProjects are ideas for making Wine and Windows applications run more seamlessly with the underlying OS.
*["Fun Projects"] probably aren't critical, but they are interesting and may help make Wine more robust by getting it to run in unexpected situations (i.e. "hack value")
*JanitorialProjects involve cleaning up Wine's source code to prevent bugs and make it easier to read. These tasks are usually repetitive and may involve some scripting and code analysis.
*A few ["Usability"] improvements have also been proposed.
*Very popular applications that still have issues in Wine may have their own pages to coordinate testing and development. These pages are listed in CategoryApplication.


== Resources on Specific Topics ==
== Resources on Specific Topics ==
Line 48: Line 42:
*[[:Category:Compilers]] contains pages for different compilers that people have attempted building Wine with.
*[[:Category:Compilers]] contains pages for different compilers that people have attempted building Wine with.


== See Also ==
* A short list of some InterestingPatches that might be helpful to study or add to Wine in some situations.
* WineStatus contains links to reports (many out-of-date right now) about Wine's current status.
* The [http://www.winehq.org/license Wine program, website, documentation], and [[WikiLicense:wiki][ use the GNU Lesser General Public License 2.1.
----
----
[[Category:Development]]
[[Category:Development]]

Latest revision as of 15:27, 14 July 2022

If you're interested in contributing code to Wine, getting started can be daunting. Wine is an ambitious project, with a large codebase, a lot of history, and a strong emphasis on code quality. The resources below should give you an idea of how to start making your way through both the source code and the development protocols that have evolved over the years.

Getting Started

References and FAQs

  • The Developer FAQ, and Developer Hints are quick reads and a good place to begin.
  • The Wine Developer's Guide is a very-comprehensive guide and the ultimate reference for working on Wine.
  • Also, all developers should be careful not to violate the Clean Room Guidelines (also see relevant sections of the Developer FAQ). Submitting patches based on disassembled Microsoft code or dumped implementation details is simply not acceptable.

Working with Other Developers

Sometimes the best way to get some help is to talk with other developers. While other contributors are often busy, focused, well-informed discussions and questions are encouraged and should not be ignored.

  • Discussions primarily take place on Wine's mailing lists. The developers' list in particular is the place to discuss changes to the software (be sure to subscribe before emailing a list, or else your mail will probably be filtered out as spam).
  • There are a couple of IRC channels, although depending on timing and urgency, you may not always get a response.
  • You can see what some of the other contributors are working on by reading the Who's Who or Acknowledgements. Some contributors also have personal pages on the wiki.
  • The Wine project has been overseen by Alexandre Julliard for many years now, and as a result, a Wine hacker's informal reputation for writing quality code is known eponymously as a Julliard Rank. Although earning and maintaining this good reputation is key to becoming a successful contributor, the community tries to be helpful and does not expect anyone to be perfect, so don't feel discouraged :-)
  • If you're interested in possibly meeting other programmers in person, WineConf is an annual, offline meeting for Wine developers.
  • If you are a student with an interesting feature or solution to a problem, you might consider applying to work on Wine as part of Google's Summer Of Code too.

Working with the Code

  • Wine currently uses Gitlab to manage all source code, in order to grab your own copy of the code, look at the Git Wine Tutorial. There are also some hints on using Git Branches to manage your work.
  • There is also a short page about browsing the Source Code online and downloading code for other portions of the project.

Building from Source

You probably want to see the page on Building Wine or Building on MacOSX. You can also look in Category:Distributions to see if your distro has its own page. If so, there might be specifics about the dependencies and build process for your system.

Submitting your work

When you're ready to share your changes with everyone, be sure to follow the guidelines for Submitting Patches.


Other Aspects

There are other aspects of the project besides the main program itself, and these can also sometimes use a programmer's touch.

  • For info specifically on testing and bug-hunting, try visiting Debugging Hints and the Bugs page, especially the section "for developers."
  • If you've written a patch and want to test it more before submission, or maybe just display it in action for others to comment, consider using the WineHQ Build Server.
  • Things such as the website and documentation also have moving parts besides content. For more details, see the pages for Designers and Writers.
  • There are some tips for those interested in Packaging Wine for different distros and platforms.
  • Interested in porting the source code of your Windows-native application to Unix? Consider looking into Winelib.


Resources on Specific Topics

There are actually dozens of pages related to specific components and features in Wine. You may find it easier to simply try searching for the topic you're interested in. However, a few categories have been created to make finding things a little quicker.

  • Category:DLLs consists of all pages about a specific component of the Windows API
  • Category:Architecture contains entries about porting Wine to different hardware architectures
  • Category:Compilers contains pages for different compilers that people have attempted building Wine with.

This page was last edited on 14 July 2022, at 15:27.